diff --git a/lib/aife.ex b/lib/aife.ex index 82c4ac8..60d5fe7 100644 --- a/lib/aife.ex +++ b/lib/aife.ex @@ -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 diff --git a/lib/aife/drone.ex b/lib/aife/drone.ex new file mode 100644 index 0000000..74b3621 --- /dev/null +++ b/lib/aife/drone.ex @@ -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