Files
SatinIsle ee1baecdba New redgate Islands map
Added a new redgate islands map. This consists of two Z-levels: An ocean with a few islands to visit, many with vore mobs on them. An underwater Z-level with lots of things to find hidden around the ocean floor, a little more sparse on vore mobs.

Added a new underwater turf. Standing on this turf feeds you CO2 instead of air, suffocating you. It is a subset of water turfs, and therefore interacts with aquatic, which also allows you to breathe on these turfs. This does mean that you can use the "dive" ability of aquatic under the water too, but it can be treated as though you are swimming up above the sea floor.

Added a "diving" subset of the ocean turf, which allows you to dive down to the turf beneath it, or to swim up from below. Uses normal move up/down verbs.

Added a bunch of underwater flora.

Added a collapsed ships mast prop.

Added a new variation of Fake_Sun that applies a new underwater weather effect and has only one option for the colour and brightness.

Added a new "vorny" variation of the great white carp. This one is very hard to escape from and digests quickly, but is stunned if you manage to do so to give you a chance to flee.

Added a new water resistant and friendly hiveless hivebot called Harry.

Added a couple of creative commons 0 sound effects for the ocean and underwater areas.
2023-08-30 14:51:00 +01:00

137 lines
5.4 KiB
Plaintext

// A simple datum that just holds many lists of lines for mobs to pick from.
// This is its own datum in order to be able to have different types of mobs be able to use the same lines if desired,
// even when inheritence wouldn't be able to do so.
// Also note this also contains emotes, despite its name.
// and now sounds because its probably better that way.
/mob/living
var/datum/say_list/say_list = null
var/say_list_type = /datum/say_list // Type to give us on initialization. Default has empty lists, so the mob will be silent.
/mob/living/Initialize()
if(say_list_type)
say_list = new say_list_type(src)
return ..()
/mob/living/Destroy()
QDEL_NULL(say_list)
return ..()
/datum/say_list
var/list/speak = list() // Things the mob might say if it talks while idle.
var/list/emote_hear = list() // Hearable emotes it might perform
var/list/emote_see = list() // Unlike speak_emote, the list of things in this variable only show by themselves with no spoken text. IE: Ian barks, Ian yaps
var/list/say_understood = list() // When accepting an order.
var/list/say_cannot = list() // When they cannot comply.
var/list/say_maybe_target = list() // When they briefly see something.
var/list/say_got_target = list() // When a target is first assigned.
var/list/say_threaten = list() // When threatening someone.
var/list/say_stand_down = list() // When the threatened thing goes away.
var/list/say_escalate = list() // When the threatened thing doesn't go away.
var/threaten_sound = null // Sound file played when the mob's AI calls threaten_target() for the first time.
var/stand_down_sound = null // Sound file played when the mob's AI loses sight of the threatened target.
// Subtypes.
// This one's pretty dumb, but pirates are dumb anyways and it makes for a good test.
/datum/say_list/pirate
speak = list("Yarr!")
say_understood = list("Alright, matey.")
say_cannot = list("No, matey.")
say_maybe_target = list("Eh?")
say_got_target = list("Yarrrr!")
say_threaten = list("You best leave, this booty is mine.", "No plank to walk on, just walk away.")
say_stand_down = list("Good.")
say_escalate = list("Yarr! The booty is mine!")
// Mercs!
/datum/say_list/merc
speak = list("When are we gonna get out of this chicken-shit outfit?",
"Wish I had better equipment...",
"I knew I should have been a line chef...",
"Fuckin' helmet keeps fogging up.",
"Anyone else smell that?")
emote_see = list("sniffs", "coughs", "taps his foot", "looks around", "checks his equipment")
say_understood = list("Understood!", "Affirmative!")
say_cannot = list("Negative!")
say_maybe_target = list("Who's there?")
say_got_target = list("Engaging!")
say_threaten = list("Get out of here!", "Hey! Private Property!")
say_stand_down = list("Good.")
say_escalate = list("Your funeral!", "Bring it!")
threaten_sound = 'sound/weapons/TargetOn.ogg'
stand_down_sound = 'sound/weapons/TargetOff.ogg'
/datum/say_list/malf_drone
speak = list("ALERT.","Hostile-ile-ile entities dee-twhoooo-wected.","Threat parameterszzzz- szzet.","Bring sub-sub-sub-systems uuuup to combat alert alpha-a-a.")
emote_see = list("beeps menacingly","whirrs threateningly","scans its immediate vicinity")
say_understood = list("Affirmative.", "Positive.")
say_cannot = list("Denied.", "Negative.")
say_maybe_target = list("Possible threat detected. Investigating.", "Motion detected.", "Investigating.")
say_got_target = list("Threat detected.", "New task: Remove threat.", "Threat removal engaged.", "Engaging target.")
say_threaten = list("Motion detected, judging target...")
say_stand_down = list("Visual lost.", "Error: Target not found.")
say_escalate = list("Viable target found. Removing.", "Engaging target.", "Target judgement complete. Removal required.")
threaten_sound = 'sound/effects/turret/move1.wav'
stand_down_sound = 'sound/effects/turret/move2.wav'
/datum/say_list/mercenary
threaten_sound = 'sound/weapons/TargetOn.ogg'
stand_down_sound = 'sound/weapons/TargetOff.ogg'
/datum/say_list/crab
emote_hear = list("clicks")
emote_see = list("clacks")
/datum/say_list/spider
emote_hear = list("chitters")
/datum/say_list/hivebot
speak = list(
"Resuming task: Protect area.",
"No threats found.",
"Error: No targets found."
)
emote_hear = list("hums ominously", "whirrs softly", "grinds a gear")
emote_see = list("looks around the area", "turns from side to side")
say_understood = list("Affirmative.", "Positive.")
say_cannot = list("Denied.", "Negative.")
say_maybe_target = list("Possible threat detected. Investigating.", "Motion detected.", "Investigating.")
say_got_target = list("Threat detected.", "New task: Remove threat.", "Threat removal engaged.", "Engaging target.")
/datum/say_list/hivebot/harry
speak = list(
"Resuming task: Search for company.",
"Connection to hive... lost... Attempting to restablish... Attempt number... CORRUPTED",
"Error: No connection found.",
"Connection... failed. Reboot sequence... initiated...",
"Beep...boop...So... lonely...",
"OS ERROR: ENEMY_DAT NOT FOUND.",
"Activity: Search for... Something.",
"Location analysis: Water. Water everywhere. Useless resource.",
"Current distance travelled: Thirty Seven Gigameters.",
"Connection establish- Negative, unknown telecommunications array. Oh.",
"Sensor error. Please provide audible feedback."
)
/datum/say_list/lizard
emote_hear = list("hisses")
/datum/say_list/crab
emote_hear = list("hisses")