From 273b38a765b9793b041c5773eedd0588c49883cf Mon Sep 17 00:00:00 2001 From: deathride58 Date: Thu, 4 Jan 2018 01:23:37 -0500 Subject: [PATCH] mob living simple_animal --- .../mob/living/simple_animal/bot/bot.dm | 6 +- .../mob/living/simple_animal/bot/cleanbot.dm | 4 +- .../living/simple_animal/bot/construction.dm | 4 +- .../mob/living/simple_animal/constructs.dm | 24 +++---- .../mob/living/simple_animal/friendly/cat.dm | 4 +- .../mob/living/simple_animal/friendly/crab.dm | 3 +- .../mob/living/simple_animal/friendly/dog.dm | 4 +- .../friendly/drone/drones_as_items.dm | 21 +++++- .../simple_animal/friendly/drone/verbs.dm | 3 +- .../simple_animal/friendly/farm_animals.dm | 9 +-- .../mob/living/simple_animal/friendly/fox.dm | 41 ----------- .../living/simple_animal/friendly/lizard.dm | 1 - .../living/simple_animal/friendly/mouse.dm | 1 - .../living/simple_animal/friendly/penguin.dm | 1 - .../mob/living/simple_animal/friendly/pet.dm | 27 +++---- .../living/simple_animal/friendly/sloth.dm | 2 +- .../living/simple_animal/guardian/guardian.dm | 33 ++++----- .../mob/living/simple_animal/hostile/alien.dm | 2 - .../mob/living/simple_animal/hostile/bear.dm | 2 - .../living/simple_animal/hostile/faithless.dm | 2 +- .../simple_animal/hostile/giant_spider.dm | 1 - .../simple_animal/hostile/gorilla/gorilla.dm | 3 +- .../living/simple_animal/hostile/hostile.dm | 1 - .../simple_animal/hostile/mecha_pilot.dm | 5 +- .../hostile/megafauna/blood_drunk_miner.dm | 4 +- .../hostile/megafauna/colossus.dm | 2 +- .../simple_animal/hostile/megafauna/dragon.dm | 3 +- .../hostile/mining_mobs/goliath.dm | 1 - .../hostile/mining_mobs/gutlunch.dm | 3 +- .../living/simple_animal/hostile/pirate.dm | 1 + .../simple_animal/hostile/venus_human_trap.dm | 4 +- .../mob/living/simple_animal/parrot.dm | 3 +- .../mob/living/simple_animal/simple_animal.dm | 2 +- modular_citadel/simplemob_vore_values.dm | 72 +++++++++++++++++++ tgstation.dme | 1 + 35 files changed, 162 insertions(+), 138 deletions(-) create mode 100644 modular_citadel/simplemob_vore_values.dm 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"