Add basic drone functionality
continuous-integration/drone/push Build is passing Details

This commit is contained in:
Liru 2019-05-03 23:54:59 -04:00
parent 704bb44914
commit eb9bf1980a
2 changed files with 155 additions and 7 deletions

View File

@ -4,15 +4,27 @@ defmodule Aife do
"""
@doc """
Hello world.
Installs drone firmware on a target.
## Examples
iex> Aife.hello()
:world
Installing drone firmware allows Aife to change and control her drone's appearance and mind according to her whim.
See `Aife.Drone` for more info.
"""
def hello do
:world
@doc since: "0.1.0"
def install_drone_firmware(target) do
end
@doc """
Gets a drone process.
This allows Aife to retrive a drone's designation from her database to issue further commands.
## Example
Aife.get_drone("sample designation")
#=> {:ok, #PID<0.123.0>}
"""
@doc since: "0.1.0"
def get_drone(designation) do
end
end

136
lib/aife/drone.ex Normal file
View File

@ -0,0 +1,136 @@
defmodule Aife.Drone do
@moduledoc """
Implements drone control functionality.
Aife is able to instrument and control her drones remotely. The methods in this module allow sending commands and receiving data about drones she controls.
Aife's drones are modeled after her interests. When converted into a drone, it gains a feminine shape and has its skin turn into latex, becoming obedient, bimbo-like and shiny. She can also control the extent to which the host has control of their mind and body.
Many functions in this module can be implemented using the `Aife.Drone.command/2` function. A lot are convenience-related functions.
## Traits
TODO
See `Aife.Drone.traits/1` for more information.
"""
@moduledoc since: "0.1.0"
@doc """
Sends a command to a drone.
The command is parsed by the drone's mind itself, interpreting ambiguity as necessary.
"""
@doc since: "0.1.0"
def command(drone, cmd) do
end
@doc """
Enables the drone.
Enabling the drone converts its skin to shiny latex and gives it a feminine look, according to its traits.
This only affects the drone's body and not its mind. To create a drone-like mind, use `Aife.Drone.command/2` or similar commands to make it blank.
"""
@doc since: "0.1.0"
def enable(drone) do
end
@doc """
Disables the drone's drone mode.
Disabling a drone's drone mode restores a drone's skin colour to its standard non-latex colour, as well as restoring its body to its standard shape and size.
"""
@doc since: "0.1.0"
def disable(drone) do
end
@doc """
Returns a list of all the traits of a drone.
"""
@doc since: "0.1.0"
def traits(drone) do
end
@doc """
Alters a drone's trait.
This is usually used to alter a physical trait that the drone firmware can change physically within a drone.
This can be used to alter a drone's human form as well. Drone forms and human forms are handled separately; changing a human form will have no effect on the drone form, and vice-versa. By default, it alters the drone's current form.
`:form` is used for denoting which form to target. When `:human`, it targets the drone's human form; when `:drone`, it targets the shiny drone form. When `:current`, it uses the drone's current form. Defaults to `:current`.
## Examples
drone = Aife.get_drone("sample")
Aife.Drone.alter_traits(drone, latex_skin_colour: "black", role: :maid, uniform: :maid)
#=> :ok
"""
@doc since: "0.1.0"
def alter_traits(drone, form \\ :current, values \\ []) do
end
@doc """
Inserts a value into a drone's mind.
This is useful for mind manipulation, changing a drone's preferences and priorities.
## Examples
drone = Aife.get_drone("sample")
Aife.Drone.get_values(drone, :fetishes)
#=> [fetishes: [:maid, :latex, :hypnosis]]
Aife.Drone.insert_value(drone, :fetishes, :haigure)
#=> {:ok, [fetishes: [:maid, :latex, :haigure, :hypnosis]]}
"""
@doc since: "0.1.0"
def insert_value(drone, key, value) do
end
@doc """
Removes a value from a drone's mind.
This is useful for mind manipulation, changing a drone's preferences and priorities.
If a value is not present in the drone's mind, this does nothing.
## Examples
drone = Aife.get_drone("sample")
Aife.Drone.get_values(drone, :fetishes)
#=> [fetishes: [:maid, :latex, :haigure, :hypnosis]]
Aife.Drone.remove_value(drone, :fetishes, :haigure)
#=> {:ok, [fetishes: [:maid, :latex, :hypnosis]]}
Aife.Drone.remove_value(drone, :fetishes, :haigure)
#=> {:ok, [fetishes: [:maid, :latex, :hypnosis]]}
"""
@doc since: "0.1.0"
def remove_value(drone, key, value) do
end
@doc """
Forces a drone to say something out loud.
If gagged, the drone will attempt to say it through the gag. If the drone is unable to make any sounds, this does nothing.
"""
@doc since: "0.1.0"
def say(drone, text) do
end
@doc """
Inserts a thought into a drone's mind, as if it was its own.
A normal drone will think that the thought is its own, in its own internal voice.
A drone with high willpower will be able to tell that the tought is out of the ordinary for them.
This can be usually mitigated by repeatedly inserting many thoughts so that the drone is unable to tell apart its own from the inserted thoughts.
## Example
Aife.Drone.think(drone, "Obedience is pleasure! I must obey!")
#=> :ok
"""
@doc since: "0.1.0"
def think(drone, thought) do
end
end