diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm
index b19bc401e3..383cdd268d 100644
--- a/code/modules/mob/living/simple_animal/bot/bot.dm
+++ b/code/modules/mob/living/simple_animal/bot/bot.dm
@@ -72,7 +72,7 @@
var/nearest_beacon // the nearest beacon's tag
var/turf/nearest_beacon_loc // the nearest beacon's location
- var/beacon_freq = 1445 // navigation beacon frequency
+ var/beacon_freq = FREQ_NAV_BEACON
var/model = "" //The type of bot it is.
var/bot_type = 0 //The type of bot it is, for radio control.
var/data_hud_type = DATA_HUD_DIAGNOSTIC_BASIC //The type of data HUD the bot uses. Diagnostic by default.
@@ -108,6 +108,7 @@
if(stat)
return FALSE
on = TRUE
+ canmove = TRUE
set_light(initial(light_range))
update_icon()
diag_hud_set_botstat()
@@ -115,6 +116,7 @@
/mob/living/simple_animal/bot/proc/turn_off()
on = FALSE
+ canmove = FALSE
set_light(0)
bot_reset() //Resets an AI's call, should it exist.
update_icon()
@@ -129,7 +131,7 @@
Radio = new/obj/item/device/radio(src)
if(radio_key)
Radio.keyslot = new radio_key
- Radio.subspace_transmission = 1
+ Radio.subspace_transmission = TRUE
Radio.canhear_range = 0 // anything greater will have the bot broadcast the channel as if it were saying it out loud.
Radio.recalculateChannels()
diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm
index efe289b222..186d0c5a41 100644
--- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm
@@ -125,7 +125,7 @@
if(!target) //Search for decals then.
target = scan(/obj/effect/decal/cleanable)
-
+
if(!target) //Checks for remains
target = scan(/obj/effect/decal/remains)
@@ -242,7 +242,7 @@
say(phrase)
victim.emote("scream")
playsound(src.loc, 'sound/effects/spray2.ogg', 50, 1, -6)
- victim.acid_act(5, 2, 100)
+ victim.acid_act(5, 100)
else if(A == src) // Wets floors and spawns foam randomly
if(prob(75))
var/turf/open/T = loc
diff --git a/code/modules/mob/living/simple_animal/bot/construction.dm b/code/modules/mob/living/simple_animal/bot/construction.dm
index 0ef926f942..a4e8d09121 100644
--- a/code/modules/mob/living/simple_animal/bot/construction.dm
+++ b/code/modules/mob/living/simple_animal/bot/construction.dm
@@ -282,8 +282,8 @@
var/skin = null //Same as medbot, set to tox or ointment for the respective kits.
w_class = WEIGHT_CLASS_NORMAL
-/obj/item/firstaid_arm_assembly/New()
- ..()
+/obj/item/firstaid_arm_assembly/Initialize()
+ . = ..()
spawn(5)
if(skin)
add_overlay("kit_skin_[skin]")
diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm
index 8046daf55d..6e5548f85c 100644
--- a/code/modules/mob/living/simple_animal/constructs.dm
+++ b/code/modules/mob/living/simple_animal/constructs.dm
@@ -32,7 +32,7 @@
initial_language_holder = /datum/language_holder/construct
deathmessage = "collapses in a shattered heap."
var/list/construct_spells = list()
- var/playstyle_string = "You are a generic construct! Your job is to not exist, and you should probably adminhelp this."
+ var/playstyle_string = "You are a generic construct! Your job is to not exist, and you should probably adminhelp this."
var/master = null
var/seeking = FALSE
var/can_repair_constructs = FALSE
@@ -119,7 +119,7 @@
mob_size = MOB_SIZE_LARGE
force_threshold = 11
construct_spells = list(/obj/effect/proc_holder/spell/aoe_turf/conjure/lesserforcewall)
- playstyle_string = "You are a Juggernaut. Though slow, your shell can withstand extreme punishment, \
+ playstyle_string = "You are a Juggernaut. Though slow, your shell can withstand extreme punishment, \
create shield walls, rip apart enemies and walls alike, and even deflect energy weapons."
/mob/living/simple_animal/hostile/construct/armored/hostile //actually hostile, will move around, hit things
@@ -168,7 +168,7 @@
attacktext = "slashes"
attack_sound = 'sound/weapons/bladeslice.ogg'
construct_spells = list(/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift)
- playstyle_string = "You are a Wraith. Though relatively fragile, you are fast, deadly, can phase through walls, and your attacks will lower the cooldown on phasing."
+ playstyle_string = "You are a Wraith. Though relatively fragile, you are fast, deadly, can phase through walls, and your attacks will lower the cooldown on phasing."
var/attack_refund = 10 //1 second per attack
var/crit_refund = 50 //5 seconds when putting a target into critical
var/kill_refund = 250 //full refund on kills
@@ -222,7 +222,7 @@
/obj/effect/proc_holder/spell/aoe_turf/conjure/soulstone,
/obj/effect/proc_holder/spell/aoe_turf/conjure/construct/lesser,
/obj/effect/proc_holder/spell/targeted/projectile/magic_missile/lesser)
- playstyle_string = "You are an Artificer. You are incredibly weak and fragile, but you are able to construct fortifications, \
+ playstyle_string = "You are an Artificer. You are incredibly weak and fragile, but you are able to construct fortifications, \
use magic missile, repair allied constructs, shades, and yourself (by clicking on them), \
and, most important of all, create new constructs by producing soulstones to capture souls, \
and shells to place those soulstones into."
@@ -296,8 +296,8 @@
attack_sound = 'sound/weapons/bladeslice.ogg'
construct_spells = list(/obj/effect/proc_holder/spell/aoe_turf/area_conversion,
/obj/effect/proc_holder/spell/aoe_turf/conjure/lesserforcewall)
- playstyle_string = "You are a Harvester. You are incapable of directly killing humans, but your attacks will remove their limbs: \
- Bring those who still cling to this world of illusion back to the Geometer so they may know Truth. Your form and any you are pulling can pass through runed walls effortlessly."
+ playstyle_string = "You are a Harvester. You are incapable of directly killing humans, but your attacks will remove their limbs: \
+ Bring those who still cling to this world of illusion back to the Geometer so they may know Truth. Your form and any you are pulling can pass through runed walls effortlessly."
can_repair_constructs = TRUE
@@ -369,18 +369,18 @@
the_construct.master = C.cult_team.blood_target
if(!the_construct.master)
- to_chat(the_construct, "You have no master to seek!")
+ to_chat(the_construct, "You have no master to seek!")
the_construct.seeking = FALSE
return
if(tracking)
tracking = FALSE
the_construct.seeking = FALSE
- to_chat(the_construct, "You are no longer tracking your master.")
+ to_chat(the_construct, "You are no longer tracking your master.")
return
else
tracking = TRUE
the_construct.seeking = TRUE
- to_chat(the_construct, "You are now tracking your master.")
+ to_chat(the_construct, "You are now tracking your master.")
/datum/action/innate/seek_prey
@@ -403,14 +403,14 @@
desc = "None can hide from Nar'Sie, activate to track a survivor attempting to flee the red harvest!"
button_icon_state = "cult_mark"
the_construct.seeking = FALSE
- to_chat(the_construct, "You are now tracking Nar'Sie, return to reap the harvest!")
+ to_chat(the_construct, "You are now tracking Nar'Sie, return to reap the harvest!")
return
else
if(LAZYLEN(GLOB.cult_narsie.souls_needed))
the_construct.master = pick(GLOB.cult_narsie.souls_needed)
- to_chat(the_construct, "You are now tracking your prey, [the_construct.master] - harvest them!")
+ to_chat(the_construct, "You are now tracking your prey, [the_construct.master] - harvest them!")
else
- to_chat(the_construct, "Nar'Sie has completed her harvest!")
+ to_chat(the_construct, "Nar'Sie has completed her harvest!")
return
desc = "Activate to track Nar'Sie!"
button_icon_state = "sintouch"
diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm
index 42d38e40a3..86f33bcbef 100644
--- a/code/modules/mob/living/simple_animal/friendly/cat.dm
+++ b/code/modules/mob/living/simple_animal/friendly/cat.dm
@@ -29,8 +29,6 @@
var/turns_since_scan = 0
var/mob/living/simple_animal/mouse/movement_target
gold_core_spawnable = FRIENDLY_SPAWN
- devourable = TRUE
- no_vore = FALSE
/mob/living/simple_animal/pet/cat/Initialize()
. = ..()
@@ -256,7 +254,7 @@
if(!B || !B.brainmob || !B.brainmob.mind)
return
B.brainmob.mind.transfer_to(src)
- to_chat(src, "You are a cak! You're a harmless cat/cake hybrid that everyone loves. People can take bites out of you if they're hungry, but you regenerate health \
+ to_chat(src, "You are a cak! You're a harmless cat/cake hybrid that everyone loves. People can take bites out of you if they're hungry, but you regenerate health \
so quickly that it generally doesn't matter. You're remarkably resilient to any damage besides this and it's hard for you to really die at all. You should go around and bring happiness and \
free cake to the station!")
var/new_name = stripped_input(src, "Enter your name, or press \"Cancel\" to stick with Keeki.", "Name Change")
diff --git a/code/modules/mob/living/simple_animal/friendly/crab.dm b/code/modules/mob/living/simple_animal/friendly/crab.dm
index 35d7d12174..29d25bfabc 100644
--- a/code/modules/mob/living/simple_animal/friendly/crab.dm
+++ b/code/modules/mob/living/simple_animal/friendly/crab.dm
@@ -20,7 +20,6 @@
var/obj/item/inventory_head
var/obj/item/inventory_mask
gold_core_spawnable = FRIENDLY_SPAWN
- devourable = TRUE
/mob/living/simple_animal/crab/Life()
..()
@@ -75,4 +74,4 @@
real_name = "Evil Kreb"
icon_state = "evilkreb"
icon_living = "evilkreb"
- icon_dead = "evilkreb_dead"
+ icon_dead = "evilkreb_dead"
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm
index 4330b58411..9d5acb2c4e 100644
--- a/code/modules/mob/living/simple_animal/friendly/dog.dm
+++ b/code/modules/mob/living/simple_animal/friendly/dog.dm
@@ -12,8 +12,6 @@
see_in_dark = 5
speak_chance = 1
turns_per_move = 10
- devourable = TRUE
- no_vore = FALSE
//Corgis and pugs are now under one dog subtype
@@ -615,4 +613,4 @@
emote("me", 1, "yaps happily!")
else
if(M && stat != DEAD) // Same check here, even though emote checks it as well (poor form to check it only in the help case)
- emote("me", 1, "growls!")
\ No newline at end of file
+ emote("me", 1, "growls!")
diff --git a/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm b/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm
index 45b188c5ef..162b216117 100644
--- a/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm
+++ b/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm
@@ -12,13 +12,26 @@
icon = 'icons/mob/drone.dmi'
icon_state = "drone_maint_hat"//yes reuse the _hat state.
var/drone_type = /mob/living/simple_animal/drone //Type of drone that will be spawned
+ var/seasonal_hats = TRUE //If TRUE, and there are no default hats, different holidays will grant different hats
+ var/static/list/possible_seasonal_hats //This is built automatically in build_seasonal_hats() but can also be edited by admins!
-/obj/item/drone_shell/New()
- ..()
+/obj/item/drone_shell/Initialize()
+ . = ..()
var/area/A = get_area(src)
if(A)
notify_ghosts("A drone shell has been created in \the [A.name].", source = src, action=NOTIFY_ATTACK, flashwindow = FALSE)
GLOB.poi_list |= src
+ if(isnull(possible_seasonal_hats))
+ build_seasonal_hats()
+
+/obj/item/drone_shell/proc/build_seasonal_hats()
+ possible_seasonal_hats = list()
+ if(!SSevents.holidays.len)
+ return //no holidays, no hats; we'll keep the empty list so we never call this proc again
+ for(var/V in SSevents.holidays)
+ var/datum/holiday/holiday = SSevents.holidays[V]
+ if(holiday.drone_hat)
+ possible_seasonal_hats += holiday.drone_hat
/obj/item/drone_shell/Destroy()
GLOB.poi_list -= src
@@ -40,6 +53,10 @@
if(be_drone == "No" || QDELETED(src) || !isobserver(user))
return
var/mob/living/simple_animal/drone/D = new drone_type(get_turf(loc))
+ if(!D.default_hatmask && seasonal_hats && possible_seasonal_hats.len)
+ var/hat_type = pick(possible_seasonal_hats)
+ var/obj/item/new_hat = new hat_type(D)
+ D.equip_to_slot_or_del(new_hat, slot_head)
D.admin_spawned = admin_spawned
D.key = user.key
qdel(src)
diff --git a/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm b/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm
index 86bc3b69e5..a6795678f1 100644
--- a/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm
+++ b/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm
@@ -11,7 +11,7 @@
to_chat(src, "Drone Laws")
to_chat(src, laws)
-
+
/mob/living/simple_animal/drone/verb/drone_ping()
set category = "Drone"
set name = "Drone ping"
@@ -24,7 +24,6 @@
var/msg = "DRONE PING: [name]: [alert_s] priority alert in [A.name]!"
alert_drones(msg)
-
/mob/living/simple_animal/drone/verb/toggle_statics()
set name = "Change Vision Filter"
set desc = "Change the filter on the system used to remove non drone beings from your viewscreen."
diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm
index cbd14bb376..39209f6ca6 100644
--- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm
+++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm
@@ -28,8 +28,6 @@
stop_automated_movement_when_pulled = 1
blood_volume = BLOOD_VOLUME_NORMAL
var/obj/item/udder/udder = null
- devourable = TRUE
- no_vore = FALSE
/mob/living/simple_animal/hostile/retaliate/goat/Initialize()
udder = new()
@@ -66,7 +64,7 @@
src.visible_message("[src] gets an evil-looking gleam in [p_their()] eye.")
/mob/living/simple_animal/hostile/retaliate/goat/Move()
- ..()
+ . = ..()
if(!stat)
eat_plants()
@@ -119,8 +117,6 @@
var/obj/item/udder/udder = null
gold_core_spawnable = FRIENDLY_SPAWN
blood_volume = BLOOD_VOLUME_NORMAL
- devourable = TRUE
- no_vore = FALSE
/mob/living/simple_animal/cow/Initialize()
udder = new()
@@ -196,7 +192,6 @@
pass_flags = PASSTABLE | PASSGRILLE | PASSMOB
mob_size = MOB_SIZE_TINY
gold_core_spawnable = FRIENDLY_SPAWN
- devourable = TRUE
/mob/living/simple_animal/chick/Initialize()
. = ..()
@@ -252,8 +247,6 @@
var/list/validColors = list("brown","black","white")
gold_core_spawnable = FRIENDLY_SPAWN
var/static/chicken_count = 0
- devourable = TRUE
- no_vore = FALSE
/mob/living/simple_animal/chicken/Initialize()
. = ..()
diff --git a/code/modules/mob/living/simple_animal/friendly/fox.dm b/code/modules/mob/living/simple_animal/friendly/fox.dm
index b9192c1746..53d7939341 100644
--- a/code/modules/mob/living/simple_animal/friendly/fox.dm
+++ b/code/modules/mob/living/simple_animal/friendly/fox.dm
@@ -18,47 +18,6 @@
response_disarm = "gently pushes aside"
response_harm = "kicks"
gold_core_spawnable = FRIENDLY_SPAWN
- devourable = TRUE
- var/mob/living/simple_animal/mouse/movement_target
- var/turns_since_scan = 0
- no_vore = FALSE
-
-/mob/living/simple_animal/pet/fox/Life()
- //MICE!
- if((src.loc) && isturf(src.loc))
- if(!stat && !resting && !buckled)
- for(var/mob/living/simple_animal/mouse/M in view(1,src))
- if(!M.stat && Adjacent(M))
- emote("me", 1, "splats \the [M]!")
- M.splat()
- movement_target = null
- stop_automated_movement = 0
- break
- for(var/obj/item/toy/cattoy/T in view(1,src))
- if (T.cooldown < (world.time - 400))
- emote("me", 1, "bats \the [T] around with its paw!")
- T.cooldown = world.time
-
- ..()
-
- if(!stat && !resting && !buckled)
- turns_since_scan++
- if(turns_since_scan > 5)
- walk_to(src,0)
- turns_since_scan = 0
- if((movement_target) && !(isturf(movement_target.loc) || ishuman(movement_target.loc) ))
- movement_target = null
- stop_automated_movement = 0
- if( !movement_target || !(movement_target.loc in oview(src, 3)) )
- movement_target = null
- stop_automated_movement = 0
- for(var/mob/living/simple_animal/mouse/snack in oview(src,3))
- if(isturf(snack.loc) && !snack.stat)
- movement_target = snack
- break
- if(movement_target)
- stop_automated_movement = 1
- walk_to(src,movement_target,0,3)
//Captain fox
/mob/living/simple_animal/pet/fox/Renault
diff --git a/code/modules/mob/living/simple_animal/friendly/lizard.dm b/code/modules/mob/living/simple_animal/friendly/lizard.dm
index f45e7f7950..e596b09ba9 100644
--- a/code/modules/mob/living/simple_animal/friendly/lizard.dm
+++ b/code/modules/mob/living/simple_animal/friendly/lizard.dm
@@ -19,7 +19,6 @@
pass_flags = PASSTABLE | PASSMOB
mob_size = MOB_SIZE_SMALL
gold_core_spawnable = FRIENDLY_SPAWN
- devourable = TRUE
obj_damage = 0
environment_smash = ENVIRONMENT_SMASH_NONE
var/static/list/edibles = typecacheof(list(/mob/living/simple_animal/butterfly, /mob/living/simple_animal/cockroach)) //list of atoms, however turfs won't affect AI, but will affect consumption.
diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm
index 809681ed6b..6543fd8f64 100644
--- a/code/modules/mob/living/simple_animal/friendly/mouse.dm
+++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm
@@ -24,7 +24,6 @@
var/body_color //brown, gray and white, leave blank for random
gold_core_spawnable = FRIENDLY_SPAWN
var/chew_probability = 1
- devourable = TRUE
/mob/living/simple_animal/mouse/Initialize()
. = ..()
diff --git a/code/modules/mob/living/simple_animal/friendly/penguin.dm b/code/modules/mob/living/simple_animal/friendly/penguin.dm
index fe0187fee6..e7220eb5e8 100644
--- a/code/modules/mob/living/simple_animal/friendly/penguin.dm
+++ b/code/modules/mob/living/simple_animal/friendly/penguin.dm
@@ -13,7 +13,6 @@
speak_chance = 1
turns_per_move = 10
icon = 'icons/mob/penguins.dmi'
- no_vore = FALSE
/mob/living/simple_animal/pet/penguin/emperor
name = "Emperor penguin"
diff --git a/code/modules/mob/living/simple_animal/friendly/pet.dm b/code/modules/mob/living/simple_animal/friendly/pet.dm
index 3200c8b7d7..5fa0cede48 100644
--- a/code/modules/mob/living/simple_animal/friendly/pet.dm
+++ b/code/modules/mob/living/simple_animal/friendly/pet.dm
@@ -5,21 +5,23 @@
var/collar = ""
var/pettag = ""
blood_volume = BLOOD_VOLUME_NORMAL
- devourable = TRUE
/mob/living/simple_animal/pet/attackby(obj/item/O, mob/user, params)
if(istype(O, /obj/item/clothing/neck/petcollar) && !pcollar)
- var/obj/item/clothing/neck/petcollar/P = O
- pcollar = P
- collar = "[icon_state]collar"
- pettag = "[icon_state]tag"
- regenerate_icons()
- to_chat(user, "You put the [P] around [src]'s neck.")
- if(P.tagname)
- real_name = "\proper [P.tagname]"
- name = real_name
- qdel(P)
- return
+ var/pet_icon_states = icon_states("[icon]")
+ if("[icon_state]collar" in pet_icon_states)
+ var/obj/item/clothing/neck/petcollar/P = O
+ pcollar = P
+ collar = "[icon_state]collar"
+ pettag = "[icon_state]tag"
+ regenerate_icons()
+ to_chat(user, "You put the [P] around [src]'s neck.")
+ if(P.tagname)
+ real_name = "\proper [P.tagname]"
+ name = real_name
+ qdel(P)
+ return
+
if(istype(O, /obj/item/newspaper))
if(!stat)
user.visible_message("[user] baps [name] on the nose with the rolled up [O].")
@@ -51,3 +53,4 @@
add_overlay(collar)
if(pettag)
add_overlay(pettag)
+
diff --git a/code/modules/mob/living/simple_animal/friendly/sloth.dm b/code/modules/mob/living/simple_animal/friendly/sloth.dm
index 6f19632e88..8b7d70ef9f 100644
--- a/code/modules/mob/living/simple_animal/friendly/sloth.dm
+++ b/code/modules/mob/living/simple_animal/friendly/sloth.dm
@@ -21,7 +21,7 @@
maxHealth = 50
speed = 10
glide_size = 2
- devourable = TRUE
+
//Cargo Sloth
/mob/living/simple_animal/sloth/paperwork
diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm
index 577eba1858..fbed7d4331 100644
--- a/code/modules/mob/living/simple_animal/guardian/guardian.dm
+++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm
@@ -45,7 +45,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
var/range = 10 //how far from the user the spirit can be
var/toggle_button_type = /obj/screen/guardian/ToggleMode/Inactive //what sort of toggle button the hud uses
var/datum/guardianname/namedatum = new/datum/guardianname()
- var/playstyle_string = "You are a standard Guardian. You shouldn't exist!"
+ var/playstyle_string = "You are a standard Guardian. You shouldn't exist!"
var/magic_fluff_string = "You draw the Coder, symbolizing bugs and errors. This shouldn't happen! Submit a bug report!"
var/tech_fluff_string = "BOOT SEQUENCE COMPLETE. ERROR MODULE LOADED. THIS SHOULDN'T HAPPEN. Submit a bug report!"
var/carp_fluff_string = "CARP CARP CARP SOME SORT OF HORRIFIC BUG BLAME THE CODERS CARP CARP CARP"
@@ -57,7 +57,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
. = ..()
/mob/living/simple_animal/hostile/guardian/med_hud_set_health()
- if(!QDELETED(summoner))
+ if(summoner)
var/image/holder = hud_list[HEALTH_HUD]
holder.icon_state = "hud[RoundHealth(summoner)]"
@@ -117,7 +117,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
if(mind)
mind.name = "[real_name]"
if(!summoner)
- to_chat(src, "For some reason, somehow, you have no summoner. Please report this bug immediately.")
+ to_chat(src, "For some reason, somehow, you have no summoner. Please report this bug immediately.")
return
to_chat(src, "You are [real_name], bound to serve [summoner.real_name].")
to_chat(src, "You are capable of manifesting or recalling to your master with the buttons on your HUD. You will also find a button to communicate with them privately there.")
@@ -358,7 +358,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
if(!input)
return
- var/preliminary_message = "[input]" //apply basic color/bolding
+ var/preliminary_message = "[input]" //apply basic color/bolding
var/my_message = "[src]: [preliminary_message]" //add source, color source with the guardian's color
to_chat(summoner, my_message)
@@ -379,8 +379,8 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
if(!input)
return
- var/preliminary_message = "[input]" //apply basic color/bolding
- var/my_message = "[src]: [preliminary_message]" //add source, color source with default grey...
+ var/preliminary_message = "[input]" //apply basic color/bolding
+ var/my_message = "[src]: [preliminary_message]" //add source, color source with default grey...
to_chat(src, my_message)
var/list/guardians = hasparasites()
@@ -423,7 +423,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
if(candidates.len)
new_stand = pick(candidates)
to_chat(G, "Your user reset you, and your body was taken over by a ghost. Looks like they weren't happy with your performance.")
- to_chat(src, "Your [G.real_name] has been successfully reset.")
+ to_chat(src, "Your [G.real_name] has been successfully reset.")
message_admins("[key_name_admin(new_stand)] has taken control of ([key_name_admin(G)])")
G.ghostize(0)
G.setthemename(G.namedatum.theme) //give it a new color, to show it's a new person
@@ -469,9 +469,8 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
var/mob_name = "Guardian Spirit"
var/use_message = "You shuffle the deck..."
var/used_message = "All the cards seem to be blank now."
- var/failure_message = "..And draw a card! It's...blank? Maybe you should try again later."
- var/ling_failure = "The deck refuses to respond to a souless creature such as you."
- var/activation_message = "The rest of the deck rapidly flashes to ash!"
+ var/failure_message = "..And draw a card! It's...blank? Maybe you should try again later."
+ var/ling_failure = "The deck refuses to respond to a souless creature such as you."
var/list/possible_guardians = list("Assassin", "Chaos", "Charger", "Explosive", "Lightning", "Protector", "Ranged", "Standard", "Support")
var/random = TRUE
var/allowmultiple = FALSE
@@ -500,8 +499,6 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
if(candidates.len)
theghost = pick(candidates)
spawn_guardian(user, theghost.key)
- to_chat(user, "[activation_message]")
- qdel(src)
else
to_chat(user, "[failure_message]")
used = FALSE
@@ -593,9 +590,8 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
mob_name = "Holoparasite"
use_message = "You start to power on the injector..."
used_message = "The injector has already been used."
- failure_message = "...ERROR. BOOT SEQUENCE ABORTED. AI FAILED TO INTIALIZE. PLEASE CONTACT SUPPORT OR TRY AGAIN LATER."
- ling_failure = "The holoparasites recoil in horror. They want nothing to do with a creature like you."
- activation_message = "The injector self destructs after you inject yourself with it."
+ failure_message = "...ERROR. BOOT SEQUENCE ABORTED. AI FAILED TO INTIALIZE. PLEASE CONTACT SUPPORT OR TRY AGAIN LATER."
+ ling_failure = "The holoparasites recoil in horror. They want nothing to do with a creature like you."
/obj/item/guardiancreator/tech/choose/traitor
possible_guardians = list("Assassin", "Chaos", "Charger", "Explosive", "Lightning", "Protector", "Ranged", "Standard", "Support")
@@ -608,7 +604,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
/obj/item/paper/guides/antag/guardian
name = "Holoparasite Guide"
- icon_state = "alienpaper_words"
+ icon_state = "paper_words"
info = {"A list of Holoparasite Types
@@ -677,9 +673,8 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
mob_name = "Holocarp"
use_message = "You put the fishsticks in your mouth..."
used_message = "Someone's already taken a bite out of these fishsticks! Ew."
- failure_message = "You couldn't catch any carp spirits from the seas of Lake Carp. Maybe there are none, maybe you fucked up."
- ling_failure = "Carp'sie is fine with changelings, so you shouldn't be seeing this message."
- activation_message = "You finish eating the fishsticks! Delicious!>"
+ failure_message = "You couldn't catch any carp spirits from the seas of Lake Carp. Maybe there are none, maybe you fucked up."
+ ling_failure = "Carp'sie is fine with changelings, so you shouldn't be seeing this message."
allowmultiple = TRUE
allowling = TRUE
random = TRUE
diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm
index f9c9ae6ae4..57718459fc 100644
--- a/code/modules/mob/living/simple_animal/hostile/alien.dm
+++ b/code/modules/mob/living/simple_animal/hostile/alien.dm
@@ -35,8 +35,6 @@
gold_core_spawnable = NO_SPAWN
death_sound = 'sound/voice/hiss6.ogg'
deathmessage = "lets out a waning guttural screech, green blood bubbling from its maw..."
- devourable = TRUE
- no_vore = FALSE
/mob/living/simple_animal/hostile/alien/drone
name = "alien drone"
diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm
index d63b5d4114..3334eb3b93 100644
--- a/code/modules/mob/living/simple_animal/hostile/bear.dm
+++ b/code/modules/mob/living/simple_animal/hostile/bear.dm
@@ -37,8 +37,6 @@
faction = list("russian")
gold_core_spawnable = HOSTILE_SPAWN
- devourable = TRUE
- no_vore = FALSE
//SPACE BEARS! SQUEEEEEEEE~ OW! FUCK! IT BIT MY HAND OFF!!
/mob/living/simple_animal/hostile/bear/Hudson
diff --git a/code/modules/mob/living/simple_animal/hostile/faithless.dm b/code/modules/mob/living/simple_animal/hostile/faithless.dm
index 2929e146f1..0650f90fc6 100644
--- a/code/modules/mob/living/simple_animal/hostile/faithless.dm
+++ b/code/modules/mob/living/simple_animal/hostile/faithless.dm
@@ -39,4 +39,4 @@
var/mob/living/carbon/C = target
C.Knockdown(60)
C.visible_message("\The [src] knocks down \the [C]!", \
- "\The [src] knocks you down!")
+ "\The [src] knocks you down!")
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
index 2d18fd3331..9e2b55d6d7 100644
--- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
+++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
@@ -48,7 +48,6 @@
see_in_dark = 4
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE
var/playable_spider = FALSE
- devourable = TRUE
var/datum/action/innate/spider/lay_web/lay_web
var/directive = "" //Message passed down to children, to relay the creator's orders
diff --git a/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm b/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm
index 84bb54f242..21895d58c0 100644
--- a/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm
+++ b/code/modules/mob/living/simple_animal/hostile/gorilla/gorilla.dm
@@ -35,8 +35,6 @@
unique_name = TRUE
var/list/gorilla_overlays[GORILLA_TOTAL_LAYERS]
var/oogas = 0
- devourable = TRUE
- no_vore = FALSE
// Gorillas like to dismember limbs from unconcious mobs.
// Returns null when the target is not an unconcious carbon mob; a list of limbs (possibly empty) otherwise.
@@ -105,3 +103,4 @@
if(oogas >= rand(2,6))
playsound(src, "sound/creatures/gorilla.ogg", 200)
oogas = 0
+
diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm
index 78021deadf..5fd32e8c25 100644
--- a/code/modules/mob/living/simple_animal/hostile/hostile.dm
+++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm
@@ -494,4 +494,3 @@ mob/living/simple_animal/hostile/proc/DestroySurroundings() // for use with mega
. += M
else if (M.loc.type in hostile_machines)
. += M.loc
-
diff --git a/code/modules/mob/living/simple_animal/hostile/mecha_pilot.dm b/code/modules/mob/living/simple_animal/hostile/mecha_pilot.dm
index f9868771ac..a1cb61c115 100644
--- a/code/modules/mob/living/simple_animal/hostile/mecha_pilot.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mecha_pilot.dm
@@ -283,9 +283,8 @@
/mob/living/simple_animal/hostile/syndicate/mecha_pilot/Move(NewLoc,Dir=0,step_x=0,step_y=0)
if(mecha && loc == mecha)
- mecha.relaymove(src, Dir)
- return
- ..()
+ return mecha.relaymove(src, Dir)
+ return ..()
/mob/living/simple_animal/hostile/syndicate/mecha_pilot/Goto(target, delay, minimum_distance)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm
index d7ec60466e..0e67921f3d 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm
@@ -251,9 +251,9 @@ Difficulty: Medium
animate(src, transform = M, pixel_y = -6, dir = final_dir, time = 2, easing = EASE_IN|EASE_OUT)
sleep(5)
- animate(src, color = list("#A7A19E", "#A7A19E", "#A7A19E", list(0, 0, 0)), time = 10, easing = EASE_IN, flags_1 = ANIMATION_PARALLEL)
+ animate(src, color = list("#A7A19E", "#A7A19E", "#A7A19E", list(0, 0, 0)), time = 10, easing = EASE_IN, flags = ANIMATION_PARALLEL)
sleep(4)
- animate(src, alpha = 0, time = 6, easing = EASE_OUT, flags_1 = ANIMATION_PARALLEL)
+ animate(src, alpha = 0, time = 6, easing = EASE_OUT, flags = ANIMATION_PARALLEL)
/obj/item/device/gps/internal/miner
icon_state = null
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
index 9bf2c8c430..0388c1b4f9 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
@@ -783,4 +783,4 @@ Difficulty: Very Hard
#undef ACTIVATE_WEAPON
#undef ACTIVATE_MAGIC
-#undef MEDAL_PREFIX
\ No newline at end of file
+#undef MEDAL_PREFIX
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm
index 724e4fc5c7..c8e7c7e4f5 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm
@@ -61,7 +61,6 @@ Difficulty: Medium
score_type = DRAKE_SCORE
deathmessage = "collapses into a pile of bones, its flesh sloughing away."
death_sound = 'sound/magic/demon_dies.ogg'
- no_vore = FALSE
/mob/living/simple_animal/hostile/megafauna/dragon/Initialize()
. = ..()
@@ -192,7 +191,7 @@ Difficulty: Medium
qdel(F)
if(stat == DEAD)
swooping &= ~SWOOP_DAMAGEABLE
- animate(src, alpha = 255, transform = oldtransform, time = 0, flags_1 = ANIMATION_END_NOW) //reset immediately
+ animate(src, alpha = 255, transform = oldtransform, time = 0, flags = ANIMATION_END_NOW) //reset immediately
return
animate(src, alpha = 100, transform = matrix()*0.7, time = 7)
swooping |= SWOOP_INVULNERABLE
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm
index af283b9139..de995f951a 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm
@@ -31,7 +31,6 @@
var/pre_attack = 0
var/pre_attack_icon = "Goliath_preattack"
loot = list(/obj/item/stack/sheet/animalhide/goliath_hide)
- no_vore = FALSE
/mob/living/simple_animal/hostile/asteroid/goliath/Life()
. = ..()
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm
index ad7edb1716..3c40bacde8 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm
@@ -123,7 +123,8 @@
/obj/item/udder/gutlunch
name = "nutrient sac"
-/obj/item/udder/gutlunch/New()
+/obj/item/udder/gutlunch/Initialize()
+ . = ..()
reagents = new(50)
reagents.my_atom = src
diff --git a/code/modules/mob/living/simple_animal/hostile/pirate.dm b/code/modules/mob/living/simple_animal/hostile/pirate.dm
index 8ad8babb36..7479b1aaa2 100644
--- a/code/modules/mob/living/simple_animal/hostile/pirate.dm
+++ b/code/modules/mob/living/simple_animal/hostile/pirate.dm
@@ -64,3 +64,4 @@
projectiletype = /obj/item/projectile/beam/laser
loot = list(/obj/effect/mob_spawn/human/corpse/pirate/ranged,
/obj/item/gun/energy/laser)
+
diff --git a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
index 8355bd2e27..29bc2cbff0 100644
--- a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
+++ b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
@@ -12,8 +12,8 @@
var/growth_time = 1200
-/obj/structure/alien/resin/flower_bud_enemy/New()
- ..()
+/obj/structure/alien/resin/flower_bud_enemy/Initialize()
+ . = ..()
var/list/anchors = list()
anchors += locate(x-2,y+2,z)
anchors += locate(x+2,y+2,z)
diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm
index e4de22b2a7..c6c83df06b 100644
--- a/code/modules/mob/living/simple_animal/parrot.dm
+++ b/code/modules/mob/living/simple_animal/parrot.dm
@@ -60,8 +60,6 @@
mob_size = MOB_SIZE_SMALL
movement_type = FLYING
gold_core_spawnable = FRIENDLY_SPAWN
- devourable = TRUE
- no_vore = FALSE
var/parrot_damage_upper = 10
var/parrot_state = PARROT_WANDER //Hunt for a perch when created
@@ -1001,6 +999,7 @@
parrot_interest = null
H.visible_message("[src] dive bombs into [H]'s chest and vanishes!", "[src] dive bombs into your chest, vanishing! This can't be good!")
+
/mob/living/simple_animal/parrot/clock_hawk
name = "clock hawk"
desc = "Cbyl jnaan penpxre! Fdhnnnjx!"
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index 9a0a21e826..b7e33173d2 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -88,7 +88,7 @@
//domestication
var/tame = 0
- no_vore = TRUE
+
var/my_z // I don't want to confuse this with client registered_z
/mob/living/simple_animal/Initialize()
diff --git a/modular_citadel/simplemob_vore_values.dm b/modular_citadel/simplemob_vore_values.dm
new file mode 100644
index 0000000000..a948193f59
--- /dev/null
+++ b/modular_citadel/simplemob_vore_values.dm
@@ -0,0 +1,72 @@
+/mob/living/simple_animal/pet/cat
+ devourable = TRUE
+ no_vore = FALSE
+
+/mob/living/simple_animal/crab
+ devourable = TRUE
+
+/mob/living/simple_animal/pet/dog
+ devourable = TRUE
+ no_vore = FALSE
+
+/mob/living/simple_animal/hostile/retaliate/goat
+ devourable = TRUE
+ no_vore = FALSE
+
+/mob/living/simple_animal/cow
+ devourable = TRUE
+ no_vore = FALSE
+
+/mob/living/simple_animal/chick
+ devourable = TRUE
+
+/mob/living/simple_animal/chicken
+ devourable = TRUE
+ no_vore = FALSE
+
+/mob/living/simple_animal/pet/fox
+ devourable = TRUE
+ no_vore = FALSE
+
+/mob/living/simple_animal/hostile/lizard
+ devourable = TRUE
+
+/mob/living/simple_animal/mouse
+ devourable = TRUE
+
+/mob/living/simple_animal/pet/penguin
+ no_vore = FALSE
+
+/mob/living/simple_animal/pet
+ devourable = TRUE
+
+/mob/living/simple_animal/sloth
+ devourable = TRUE
+
+/mob/living/simple_animal/hostile/alien
+ devourable = TRUE
+ no_vore = FALSE
+
+/mob/living/simple_animal/hostile/bear
+ devourable = TRUE
+ no_vore = FALSE
+
+/mob/living/simple_animal/hostile/poison/giant_spider
+ devourable = TRUE
+
+/mob/living/simple_animal/hostile/gorilla
+ devourable = TRUE
+ no_vore = FALSE
+
+/mob/living/simple_animal/hostile/megafauna/dragon
+ no_vore = FALSE
+
+/mob/living/simple_animal/hostile/asteroid/goliath
+ no_vore = FALSE
+
+/mob/living/simple_animal/parrot
+ devourable = TRUE
+ no_vore = FALSE
+
+/mob/living/simple_animal
+ no_vore = TRUE
\ No newline at end of file
diff --git a/tgstation.dme b/tgstation.dme
index c24ba9e90e..77cd1b6aec 100755
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -2478,6 +2478,7 @@
#include "modular_citadel\citadel_ghostrole_spawners.dm"
#include "modular_citadel\cydonian_armor.dm"
#include "modular_citadel\polychromic_clothes.dm"
+#include "modular_citadel\simplemob_vore_values.dm"
#include "modular_citadel\code\datums\uplink_items_cit.dm"
#include "modular_citadel\code\game\objects\machinery\Sleeper.dm"
#include "modular_citadel\code\game\objects\items\handcuffs.dm"