From 3bd37ec757dd315b14d5552cf12f2ff54ca8917d Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Mon, 4 Apr 2016 00:30:10 -0400 Subject: [PATCH 01/11] Simple Animal Spawn Refactor --- code/_globalvars/lists/mobs.dm | 47 -------------- code/game/gamemodes/blob/blobs/blob_mobs.dm | 2 + code/modules/events/tear.dm | 18 +++--- .../simple_animal/friendly/butterfly.dm | 1 + .../mob/living/simple_animal/friendly/cat.dm | 5 +- .../living/simple_animal/friendly/corgi.dm | 3 + .../mob/living/simple_animal/friendly/crab.dm | 2 + .../mob/living/simple_animal/friendly/deer.dm | 3 +- .../simple_animal/friendly/farm_animals.dm | 8 +++ .../mob/living/simple_animal/friendly/fox.dm | 3 + .../living/simple_animal/friendly/lizard.dm | 1 + .../living/simple_animal/friendly/mouse.dm | 2 + .../mob/living/simple_animal/friendly/pug.dm | 1 + .../living/simple_animal/friendly/tomato.dm | 3 +- .../mob/living/simple_animal/hostile/alien.dm | 3 + .../mob/living/simple_animal/hostile/bat.dm | 1 + .../mob/living/simple_animal/hostile/bear.dm | 1 + .../mob/living/simple_animal/hostile/carp.dm | 2 + .../living/simple_animal/hostile/creature.dm | 1 + .../living/simple_animal/hostile/faithless.dm | 1 + .../simple_animal/hostile/giant_spider.dm | 1 + .../living/simple_animal/hostile/headcrab.dm | 1 + .../living/simple_animal/hostile/hivebot.dm | 1 + .../simple_animal/hostile/jungle_animals.dm | 2 + .../mob/living/simple_animal/hostile/mimic.dm | 2 + .../simple_animal/hostile/poison_bees.dm | 1 + .../living/simple_animal/hostile/syndicate.dm | 1 + .../mob/living/simple_animal/hostile/tree.dm | 1 + .../simple_animal/hostile/winter_mobs.dm | 2 + .../mob/living/simple_animal/parrot.dm | 6 +- .../mob/living/simple_animal/simple_animal.dm | 4 +- code/modules/reagents/newchem/medicine.dm | 28 --------- .../modules/reagents/newchem/newchem_procs.dm | 43 +++++++++++++ .../chemical_reaction_slime.dm | 61 ++++++++----------- .../genetics/prehistoric_animals.dm | 5 ++ 35 files changed, 141 insertions(+), 126 deletions(-) diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm index 91a06fa4647..04abf50e362 100644 --- a/code/_globalvars/lists/mobs.dm +++ b/code/_globalvars/lists/mobs.dm @@ -24,53 +24,6 @@ var/global/list/dead_mob_list = list() //List of all dead mobs, including cli var/global/list/respawnable_list = list() //List of all mobs, dead or in mindless creatures that still be respawned. var/global/list/simple_animal_list = list() //List of all simple animals, including clientless -//global var of unsafe-to-spawn-on-reaction mobs -var/global/list/blocked_mobs = list(/mob/living/simple_animal, - /mob/living/simple_animal/hostile, - /mob/living/simple_animal/hostile/pirate, - /mob/living/simple_animal/hostile/pirate/ranged, - /mob/living/simple_animal/hostile/russian, - /mob/living/simple_animal/hostile/russian/ranged, - /mob/living/simple_animal/hostile/syndicate, - /mob/living/simple_animal/hostile/syndicate/melee, - /mob/living/simple_animal/hostile/syndicate/melee/space, - /mob/living/simple_animal/hostile/syndicate/ranged, - /mob/living/simple_animal/hostile/syndicate/ranged/space, - /mob/living/simple_animal/hostile/alien/queen/large, - /mob/living/simple_animal/hostile/retaliate, - /mob/living/simple_animal/hostile/retaliate/clown, - /mob/living/simple_animal/hostile/mushroom, - /mob/living/simple_animal/hostile/asteroid, - /mob/living/simple_animal/hostile/asteroid/basilisk, - /mob/living/simple_animal/hostile/asteroid/goldgrub, - /mob/living/simple_animal/hostile/asteroid/goliath, - /mob/living/simple_animal/hostile/asteroid/hivelord, - /mob/living/simple_animal/hostile/asteroid/hivelordbrood, - /mob/living/simple_animal/hostile/carp/holocarp, - /mob/living/simple_animal/hostile/mining_drone, - /mob/living/simple_animal/hostile/spaceWorm, - /mob/living/simple_animal/hostile/spaceWorm/wormHead, - /mob/living/simple_animal/ascendant_shadowling, - /mob/living/simple_animal/slaughter, - /mob/living/simple_animal/hostile/retaliate/araneus, - /mob/living/simple_animal/hostile/syndicate/ranged/orion, - /mob/living/simple_animal/hostile/statue, - /mob/living/simple_animal/hostile/guardian, - /mob/living/simple_animal/hostile/guardian/fire, - /mob/living/simple_animal/hostile/guardian/healer, - /mob/living/simple_animal/hostile/guardian/punch, - /mob/living/simple_animal/hostile/guardian/punch/sealpunch, - /mob/living/simple_animal/hostile/guardian/healer/sealhealer, - /mob/living/simple_animal/hostile/guardian/ranged, - /mob/living/simple_animal/hostile/guardian/bomb, - /mob/living/simple_animal/hostile/winter/santa, - /mob/living/simple_animal/hostile/winter/santa/stage_1, - /mob/living/simple_animal/hostile/winter/santa/stage_2, - /mob/living/simple_animal/hostile/winter/santa/stage_3, - /mob/living/simple_animal/hostile/winter/santa/stage_4, - /mob/living/simple_animal/hostile/alien/maid - ) - var/global/list/med_hud_users = list() var/global/list/sec_hud_users = list() var/global/list/antag_hud_users = list() diff --git a/code/game/gamemodes/blob/blobs/blob_mobs.dm b/code/game/gamemodes/blob/blobs/blob_mobs.dm index bfaad382adf..fbaadbd8ec8 100644 --- a/code/game/gamemodes/blob/blobs/blob_mobs.dm +++ b/code/game/gamemodes/blob/blobs/blob_mobs.dm @@ -40,6 +40,7 @@ var/obj/effect/blob/factory/factory = null var/list/human_overlays = list() var/is_zombie = 0 + gold_core_spawnable = 1 /mob/living/simple_animal/hostile/blob/blobspore/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) ..() @@ -160,6 +161,7 @@ maxbodytemp = 360 force_threshold = 10 environment_smash = 3 + gold_core_spawnable = 1 /mob/living/simple_animal/hostile/blob/blobbernaut/blob_act() diff --git a/code/modules/events/tear.dm b/code/modules/events/tear.dm index 605c6d1705d..dcaad24f853 100644 --- a/code/modules/events/tear.dm +++ b/code/modules/events/tear.dm @@ -41,15 +41,17 @@ if(animation) qdel(animation) spawn(rand(30,120)) - var/blocked = blocked_mobs //global variable for blocked mobs + var/list/tear_critters = list() + for(var/T in typesof(/mob/living/simple_animal)) + var/mob/living/simple_animal/SA = T + if(initial(SA.gold_core_spawnable) == 1) + tear_critters += T - var/list/critters = typesof(/mob/living/simple_animal/hostile) - blocked // list of possible hostile mobs - - for(var/i = 1, i <= 5, i++) - var/chosen = pick(critters) - var/mob/living/simple_animal/hostile/C = new chosen - C.faction = list("slimesummon") - C.loc = src.loc + for(var/i in 1 to 5) + var/chosen = pick(tear_critters) + var/mob/living/simple_animal/C = new chosen + C.faction |= "chemicalsummon" + C.forceMove(get_turf(src)) if(prob(50)) for(var/j = 1, j <= rand(1, 3), j++) step(C, pick(NORTH,SOUTH,EAST,WEST)) diff --git a/code/modules/mob/living/simple_animal/friendly/butterfly.dm b/code/modules/mob/living/simple_animal/friendly/butterfly.dm index 27df35c5bf9..ce36d85ce30 100644 --- a/code/modules/mob/living/simple_animal/friendly/butterfly.dm +++ b/code/modules/mob/living/simple_animal/friendly/butterfly.dm @@ -18,6 +18,7 @@ pass_flags = PASSTABLE | PASSGRILLE | PASSMOB ventcrawler = 2 butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 0) + gold_core_spawnable = 2 /mob/living/simple_animal/butterfly/New() ..() diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index b2a0c129b29..29f288b7c67 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -20,6 +20,7 @@ response_help = "pets" response_disarm = "gently pushes aside" response_harm = "kicks" + gold_core_spawnable = 2 //RUNTIME IS ALIVE! SQUEEEEEEEE~ /mob/living/simple_animal/pet/cat/Runtime @@ -32,6 +33,7 @@ gender = FEMALE var/turns_since_scan = 0 var/mob/living/simple_animal/mouse/movement_target + gold_core_spawnable = 0 /mob/living/simple_animal/pet/cat/Runtime/handle_automated_action() ..() @@ -96,4 +98,5 @@ flags = NO_BREATHE faction = list("syndicate") var/turns_since_scan = 0 - var/mob/living/simple_animal/mouse/movement_target \ No newline at end of file + var/mob/living/simple_animal/mouse/movement_target + gold_core_spawnable = 0 \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm index f51e3e81f65..520b7af0e01 100644 --- a/code/modules/mob/living/simple_animal/friendly/corgi.dm +++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm @@ -26,6 +26,7 @@ var/obj/item/inventory_head var/obj/item/inventory_back var/facehugger + gold_core_spawnable = 2 /mob/living/simple_animal/pet/corgi/New() ..() @@ -397,6 +398,7 @@ response_help = "pets" response_disarm = "bops" response_harm = "kicks" + gold_core_spawnable = 0 /mob/living/simple_animal/pet/corgi/Ian/process_ai() ..() @@ -553,6 +555,7 @@ response_harm = "kicks" var/turns_since_scan = 0 var/puppies = 0 + gold_core_spawnable = 0 //Lisa already has a cute bow! /mob/living/simple_animal/pet/corgi/Lisa/Topic(href, href_list) diff --git a/code/modules/mob/living/simple_animal/friendly/crab.dm b/code/modules/mob/living/simple_animal/friendly/crab.dm index 524cffc9979..0777771b235 100644 --- a/code/modules/mob/living/simple_animal/friendly/crab.dm +++ b/code/modules/mob/living/simple_animal/friendly/crab.dm @@ -22,6 +22,7 @@ var/obj/item/inventory_mask can_hide = 1 can_collar = 1 + gold_core_spawnable = 2 /mob/living/simple_animal/crab/handle_automated_movement() //CRAB movement @@ -46,6 +47,7 @@ response_help = "pets" response_disarm = "gently pushes aside" response_harm = "stomps" + gold_core_spawnable = 0 //LOOK AT THIS - ..()?? /*/mob/living/simple_animal/crab/attackby(var/obj/item/O as obj, var/mob/user as mob, params) diff --git a/code/modules/mob/living/simple_animal/friendly/deer.dm b/code/modules/mob/living/simple_animal/friendly/deer.dm index 0cc59c07f94..c55b5fc6850 100644 --- a/code/modules/mob/living/simple_animal/friendly/deer.dm +++ b/code/modules/mob/living/simple_animal/friendly/deer.dm @@ -14,4 +14,5 @@ response_help = "pets" response_disarm = "gently pushes aside" response_harm = "kicks" - can_collar = 1 \ No newline at end of file + can_collar = 1 + gold_core_spawnable = 2 \ No newline at end of file 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 f3e77854882..a1c5bf16dd7 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -111,6 +111,7 @@ health = 50 var/milk_content = 0 can_collar = 1 + gold_core_spawnable = 2 /mob/living/simple_animal/cow/New() ..() @@ -178,6 +179,7 @@ small = 1 can_hide = 1 can_collar = 1 + gold_core_spawnable = 2 /mob/living/simple_animal/chick/New() ..() @@ -220,6 +222,7 @@ var/global/chicken_count = 0 small = 1 can_hide = 1 can_collar = 1 + gold_core_spawnable = 2 /mob/living/simple_animal/chicken/New() ..() @@ -297,6 +300,7 @@ var/global/chicken_count = 0 attacktext = "kicks" health = 50 can_collar = 1 + gold_core_spawnable = 2 /mob/living/simple_animal/turkey name = "turkey" @@ -318,6 +322,7 @@ var/global/chicken_count = 0 attacktext = "pecks" health = 50 can_collar = 1 + gold_core_spawnable = 2 /mob/living/simple_animal/goose name = "goose" @@ -339,6 +344,7 @@ var/global/chicken_count = 0 attacktext = "kicks" health = 50 can_collar = 1 + gold_core_spawnable = 2 /mob/living/simple_animal/seal name = "seal" @@ -360,6 +366,7 @@ var/global/chicken_count = 0 attacktext = "kicks" health = 50 can_collar = 1 + gold_core_spawnable = 2 /mob/living/simple_animal/walrus name = "walrus" @@ -381,3 +388,4 @@ var/global/chicken_count = 0 attacktext = "kicks" health = 50 can_collar = 1 + gold_core_spawnable = 2 diff --git a/code/modules/mob/living/simple_animal/friendly/fox.dm b/code/modules/mob/living/simple_animal/friendly/fox.dm index cd62ababfe7..b7555301c18 100644 --- a/code/modules/mob/living/simple_animal/friendly/fox.dm +++ b/code/modules/mob/living/simple_animal/friendly/fox.dm @@ -17,11 +17,13 @@ response_help = "pets" response_disarm = "gently pushes aside" response_harm = "kicks" + gold_core_spawnable = 2 //Captain fox /mob/living/simple_animal/pet/fox/Renault name = "Renault" desc = "Renault, the Captain's trustworthy fox. I wonder what it says?" + gold_core_spawnable = 0 //Syndi fox /mob/living/simple_animal/pet/fox/Syndifox @@ -33,3 +35,4 @@ icon_resting = "Syndifox_rest" flags = NO_BREATHE faction = list("syndicate") + gold_core_spawnable = 0 diff --git a/code/modules/mob/living/simple_animal/friendly/lizard.dm b/code/modules/mob/living/simple_animal/friendly/lizard.dm index 27cb2eb17cf..e4aab2ed47e 100644 --- a/code/modules/mob/living/simple_animal/friendly/lizard.dm +++ b/code/modules/mob/living/simple_animal/friendly/lizard.dm @@ -22,3 +22,4 @@ can_hide = 1 butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 1) can_collar = 1 + gold_core_spawnable = 2 diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index c24da570653..3d090de3144 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -31,6 +31,7 @@ can_hide = 1 holder_type = /obj/item/weapon/holder/mouse can_collar = 1 + gold_core_spawnable = 2 /mob/living/simple_animal/mouse/handle_automated_speech() ..() @@ -144,3 +145,4 @@ response_help = "pets" response_disarm = "gently pushes aside" response_harm = "splats" + gold_core_spawnable = 0 diff --git a/code/modules/mob/living/simple_animal/friendly/pug.dm b/code/modules/mob/living/simple_animal/friendly/pug.dm index b4b6486b859..4b25505561b 100644 --- a/code/modules/mob/living/simple_animal/friendly/pug.dm +++ b/code/modules/mob/living/simple_animal/friendly/pug.dm @@ -17,6 +17,7 @@ response_disarm = "bops" response_harm = "kicks" see_in_dark = 5 + gold_core_spawnable = 2 /mob/living/simple_animal/pet/pug/process_ai() ..() diff --git a/code/modules/mob/living/simple_animal/friendly/tomato.dm b/code/modules/mob/living/simple_animal/friendly/tomato.dm index f6d0bf9752e..998071443f3 100644 --- a/code/modules/mob/living/simple_animal/friendly/tomato.dm +++ b/code/modules/mob/living/simple_animal/friendly/tomato.dm @@ -14,4 +14,5 @@ response_harm = "smacks the" harm_intent_damage = 5 pass_flags = PASSTABLE - can_hide = 1 \ No newline at end of file + can_hide = 1 + gold_core_spawnable = 2 \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index 47cfdd23984..ff2f03d74cf 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -29,6 +29,7 @@ see_in_dark = 8 see_invisible = SEE_INVISIBLE_MINIMUM heat_damage_per_tick = 20 + gold_core_spawnable = 1 /mob/living/simple_animal/hostile/alien/drone @@ -127,6 +128,7 @@ move_to_delay = 4 maxHealth = 400 health = 400 + gold_core_spawnable = 0 /obj/item/projectile/neurotox name = "neurotoxin" @@ -151,6 +153,7 @@ icon_state = "maid" icon_living = "maid" icon_dead = "maid_dead" + gold_core_spawnable = 0 //no fun allowed /mob/living/simple_animal/hostile/alien/maid/AttackingTarget() if(istype(target, /atom/movable)) diff --git a/code/modules/mob/living/simple_animal/hostile/bat.dm b/code/modules/mob/living/simple_animal/hostile/bat.dm index 70c117860af..eaae85b5eb2 100644 --- a/code/modules/mob/living/simple_animal/hostile/bat.dm +++ b/code/modules/mob/living/simple_animal/hostile/bat.dm @@ -29,6 +29,7 @@ faction = list("scarybat") var/mob/living/owner + gold_core_spawnable = 1 /mob/living/simple_animal/hostile/scarybat/New(loc, mob/living/L as mob) ..() diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm index 0171e960ed0..b9fce10e8f0 100644 --- a/code/modules/mob/living/simple_animal/hostile/bear.dm +++ b/code/modules/mob/living/simple_animal/hostile/bear.dm @@ -31,6 +31,7 @@ var/stance_step = 0 faction = list("russian") + gold_core_spawnable = 1 //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/carp.dm b/code/modules/mob/living/simple_animal/hostile/carp.dm index 2b13fadec8d..2c971649e64 100644 --- a/code/modules/mob/living/simple_animal/hostile/carp.dm +++ b/code/modules/mob/living/simple_animal/hostile/carp.dm @@ -33,6 +33,7 @@ faction = list("carp") flying = 1 + gold_core_spawnable = 1 /mob/living/simple_animal/hostile/carp/Process_Spacemove(var/movement_dir = 0) return 1 //No drifting in space for space carp! //original comments do not steal @@ -53,6 +54,7 @@ icon_state = "holocarp" icon_living = "holocarp" maxbodytemp = INFINITY + gold_core_spawnable = 0 /mob/living/simple_animal/hostile/carp/holocarp/death() ..() diff --git a/code/modules/mob/living/simple_animal/hostile/creature.dm b/code/modules/mob/living/simple_animal/hostile/creature.dm index 9a3357e058a..24c4eede1de 100644 --- a/code/modules/mob/living/simple_animal/hostile/creature.dm +++ b/code/modules/mob/living/simple_animal/hostile/creature.dm @@ -13,4 +13,5 @@ attacktext = "chomps" attack_sound = 'sound/weapons/bite.ogg' faction = list("creature") + gold_core_spawnable = 1 diff --git a/code/modules/mob/living/simple_animal/hostile/faithless.dm b/code/modules/mob/living/simple_animal/hostile/faithless.dm index 380b332a7e4..1f496c8347c 100644 --- a/code/modules/mob/living/simple_animal/hostile/faithless.dm +++ b/code/modules/mob/living/simple_animal/hostile/faithless.dm @@ -25,6 +25,7 @@ speed = 4 faction = list("faithless") + gold_core_spawnable = 1 /mob/living/simple_animal/hostile/faithless/Process_Spacemove(var/movement_dir = 0) return 1 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 9de16829259..088155c25aa 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -49,6 +49,7 @@ move_to_delay = 6 attacktext = "bites" attack_sound = 'sound/weapons/bite.ogg' + gold_core_spawnable = 1 //nursemaids - these create webs and eggs /mob/living/simple_animal/hostile/poison/giant_spider/nurse diff --git a/code/modules/mob/living/simple_animal/hostile/headcrab.dm b/code/modules/mob/living/simple_animal/hostile/headcrab.dm index b470f0506ff..5aa075a8cc5 100644 --- a/code/modules/mob/living/simple_animal/hostile/headcrab.dm +++ b/code/modules/mob/living/simple_animal/hostile/headcrab.dm @@ -21,6 +21,7 @@ ventcrawler = 2 var/datum/mind/origin var/egg_lain = 0 + gold_core_spawnable = 1 /mob/living/simple_animal/hostile/headcrab/proc/Infect(mob/living/carbon/victim) var/obj/item/organ/internal/body_egg/changeling_egg/egg = new(victim) diff --git a/code/modules/mob/living/simple_animal/hostile/hivebot.dm b/code/modules/mob/living/simple_animal/hostile/hivebot.dm index 44f5caa1609..7116d49fb55 100644 --- a/code/modules/mob/living/simple_animal/hostile/hivebot.dm +++ b/code/modules/mob/living/simple_animal/hostile/hivebot.dm @@ -21,6 +21,7 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 speak_emote = list("states") + gold_core_spawnable = 1 /mob/living/simple_animal/hostile/hivebot/range name = "Hivebot" diff --git a/code/modules/mob/living/simple_animal/hostile/jungle_animals.dm b/code/modules/mob/living/simple_animal/hostile/jungle_animals.dm index 6404ab29f21..75ecdf79511 100644 --- a/code/modules/mob/living/simple_animal/hostile/jungle_animals.dm +++ b/code/modules/mob/living/simple_animal/hostile/jungle_animals.dm @@ -30,6 +30,7 @@ layer = 3.1 //so they can stay hidde under the /obj/structure/bush var/stalk_tick_delay = 3 + gold_core_spawnable = 1 /mob/living/simple_animal/hostile/panther/ListTargets() var/list/targets = list() @@ -87,6 +88,7 @@ layer = 3.1 //so they can stay hidde under the /obj/structure/bush var/stalk_tick_delay = 3 + gold_core_spawnable = 1 /mob/living/simple_animal/hostile/snake/ListTargets() var/list/targets = list() diff --git a/code/modules/mob/living/simple_animal/hostile/mimic.dm b/code/modules/mob/living/simple_animal/hostile/mimic.dm index 2f077249527..ab83a592e1f 100644 --- a/code/modules/mob/living/simple_animal/hostile/mimic.dm +++ b/code/modules/mob/living/simple_animal/hostile/mimic.dm @@ -30,6 +30,7 @@ move_to_delay = 9 var/is_electronic = 0 + gold_core_spawnable = 1 /mob/living/simple_animal/hostile/mimic/FindTarget() . = ..() @@ -139,6 +140,7 @@ var/global/list/protected_objects = list(/obj/structure/table, /obj/structure/ca var/mob/living/creator = null // the creator var/destroy_objects = 0 var/knockdown_people = 0 + gold_core_spawnable = 0 /mob/living/simple_animal/hostile/mimic/copy/New(loc, var/obj/copy, var/mob/living/creator, var/destroy_original = 0) ..(loc) diff --git a/code/modules/mob/living/simple_animal/hostile/poison_bees.dm b/code/modules/mob/living/simple_animal/hostile/poison_bees.dm index b05ba13ccab..6bb6efc003d 100644 --- a/code/modules/mob/living/simple_animal/hostile/poison_bees.dm +++ b/code/modules/mob/living/simple_animal/hostile/poison_bees.dm @@ -24,6 +24,7 @@ //Spaceborn beings don't get hurt by space atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 + gold_core_spawnable = 1 /mob/living/simple_animal/hostile/poison/bees/Process_Spacemove(var/check_drift = 0) return 1 diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm index 434d1739b9e..1c869805a03 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm @@ -132,6 +132,7 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 flying = 1 + gold_core_spawnable = 1 /mob/living/simple_animal/hostile/viscerator/death() ..() diff --git a/code/modules/mob/living/simple_animal/hostile/tree.dm b/code/modules/mob/living/simple_animal/hostile/tree.dm index 555386debcb..361cea751ad 100644 --- a/code/modules/mob/living/simple_animal/hostile/tree.dm +++ b/code/modules/mob/living/simple_animal/hostile/tree.dm @@ -28,6 +28,7 @@ minbodytemp = 0 faction = list("hostile", "winter") + gold_core_spawnable = 1 /mob/living/simple_animal/hostile/tree/FindTarget() . = ..() diff --git a/code/modules/mob/living/simple_animal/hostile/winter_mobs.dm b/code/modules/mob/living/simple_animal/hostile/winter_mobs.dm index 930eb144af8..ae176992a9e 100644 --- a/code/modules/mob/living/simple_animal/hostile/winter_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/winter_mobs.dm @@ -33,6 +33,7 @@ bodytemperature = 73.0 //it's made of snow and hatred, so it's pretty cold. maxbodytemp = 280.15 //at roughly 7 C, these will start melting (dying) from the warmth. Mind over matter or something. heat_damage_per_tick = 10 //Now With Rapid Thawing Action! + gold_core_spawnable = 1 /mob/living/simple_animal/hostile/winter/snowman/death() @@ -63,6 +64,7 @@ melee_damage_lower = 5 melee_damage_upper = 10 + gold_core_spawnable = 1 /mob/living/simple_animal/hostile/winter/santa maxHealth = 150 //if this seems low for a "boss", it's because you have to fight him multiple times, with him fully healing between stages diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 9a53f6bfa35..33372a9904f 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -82,6 +82,7 @@ //Parrots are kleptomaniacs. This variable ... stores the item a parrot is holding. var/obj/item/held_item = null + gold_core_spawnable = 2 /mob/living/simple_animal/parrot/New() @@ -272,13 +273,13 @@ //Sprite and AI update for when a parrot gets pulled if(pulledby && stat == CONSCIOUS) - icon_state = "parrot_fly" + icon_state = "parrot_fly" /mob/living/simple_animal/parrot/process_ai() if(pulledby) parrot_state = PARROT_WANDER return - + if(!isturf(src.loc) || !canmove || buckled) return //If it can't move, dont let it move. (The buckled check probably isn't necessary thanks to canmove) @@ -682,6 +683,7 @@ name = "Poly" desc = "Poly the Parrot. An expert on quantum cracker theory." speak = list("Poly wanna cracker!", ":eCheck the singlo, you chucklefucks!",":eCheck the tesla, you shits!",":eSTOP HOT-WIRING THE ENGINE, FUCKING CHRIST!",":eWire the solars, you lazy bums!",":eWHO TOOK THE DAMN HARDSUITS?",":eOH GOD ITS FREE CALL THE SHUTTLE") + gold_core_spawnable = 0 /mob/living/simple_animal/parrot/Poly/New() ears = new /obj/item/device/radio/headset/headset_eng(src) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 362ec626f2b..bd8d6b8e740 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -67,6 +67,8 @@ var/scan_ready = 1 var/simplespecies //Sorry, no spider+corgi buttbabies. + var/gold_core_spawnable = 0 //if 1 can be spawned by plasma with gold core, 2 are 'friendlies' spawned with blood + var/master_commander = null //holding var for determining who own/controls a sentient simple animal (for sentience potions). var/sentience_type = SENTIENCE_ORGANIC // Sentience type, for slime potions @@ -695,4 +697,4 @@ . |= collar.GetAccess() /mob/living/simple_animal/proc/sentience_act() //Called when a simple animal gains sentience via gold slime potion - return + return diff --git a/code/modules/reagents/newchem/medicine.dm b/code/modules/reagents/newchem/medicine.dm index f742424970d..677cc94f7a8 100644 --- a/code/modules/reagents/newchem/medicine.dm +++ b/code/modules/reagents/newchem/medicine.dm @@ -681,34 +681,6 @@ datum/reagent/life /datum/chemical_reaction/life/on_reaction(var/datum/reagents/holder, var/created_volume) chemical_mob_spawn(holder, 1, "Life") -proc/chemical_mob_spawn(var/datum/reagents/holder, var/amount_to_spawn, var/reaction_name, var/mob_faction = "chemicalsummon") - if(holder && holder.my_atom) - var/blocked = blocked_mobs //global variable for blocked mobs - - var/list/critters = typesof(/mob/living/simple_animal/hostile) - blocked // list of possible hostile mobs - var/atom/A = holder.my_atom - var/turf/T = get_turf(A) - var/area/my_area = get_area(T) - var/message = "A [reaction_name] reaction has occured in ([my_area.name])" - var/mob/M = get(A, /mob) - if(M) - message += " - carried by: [key_name_admin(M)]" - else - message += " - last fingerprint: [(A.fingerprintslast ? A.fingerprintslast : "N/A")]" - - message_admins(message, 0, 1) - - playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1) - - for(var/i = 1, i <= amount_to_spawn, i++) - var/chosen = pick(critters) - var/mob/living/simple_animal/hostile/C = new chosen - C.faction |= mob_faction - C.loc = get_turf(holder.my_atom) - if(prob(50)) - for(var/j = 1, j <= rand(1, 3), j++) - step(C, pick(NORTH,SOUTH,EAST,WEST)) - /datum/reagent/mannitol/on_mob_life(mob/living/M as mob) M.adjustBrainLoss(-3) ..() diff --git a/code/modules/reagents/newchem/newchem_procs.dm b/code/modules/reagents/newchem/newchem_procs.dm index 4a6ec32366e..761791f3c11 100644 --- a/code/modules/reagents/newchem/newchem_procs.dm +++ b/code/modules/reagents/newchem/newchem_procs.dm @@ -166,4 +166,47 @@ /datum/reagent/proc/reagent_deleted() return +var/list/chemical_mob_spawn_meancritters = list() // list of possible hostile mobs +var/list/chemical_mob_spawn_nicecritters = list() // and possible friendly mobs +/datum/chemical_reaction/proc/chemical_mob_spawn(datum/reagents/holder, amount_to_spawn, reaction_name, mob_faction = "chemicalsummon") + if(holder && holder.my_atom) + if(chemical_mob_spawn_meancritters.len <= 0 || chemical_mob_spawn_nicecritters.len <= 0) + for(var/T in typesof(/mob/living/simple_animal)) + var/mob/living/simple_animal/SA = T + switch(initial(SA.gold_core_spawnable)) + if(1) + chemical_mob_spawn_meancritters += T + if(2) + chemical_mob_spawn_nicecritters += T + var/atom/A = holder.my_atom + var/turf/T = get_turf(A) + var/area/my_area = get_area(T) + var/message = "A [reaction_name] reaction has occured in [my_area.name]. (JMP)" + message += " (VV)" + + var/mob/M = get(A, /mob) + if(M) + message += " - Carried By: [key_name_admin(M)](?) (FLW)" + else + message += " - Last Fingerprint: [(A.fingerprintslast ? A.fingerprintslast : "N/A")]" + + message_admins(message, 0, 1) + + playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1) + + for(var/mob/living/carbon/C in viewers(get_turf(holder.my_atom), null)) + C.flash_eyes() + for(var/i = 1, i <= amount_to_spawn, i++) + var/chosen + if(reaction_name == "Friendly Gold Slime") + chosen = pick(chemical_mob_spawn_nicecritters) + else + chosen = pick(chemical_mob_spawn_meancritters) + var/mob/living/simple_animal/C = new chosen + C.faction |= mob_faction + C.forceMove(get_turf(holder.my_atom)) + if(prob(50)) + for(var/j = 1, j <= rand(1, 3), j++) + step(C, pick(NORTH,SOUTH,EAST,WEST)) + #undef ADDICTION_TIME \ No newline at end of file diff --git a/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_slime.dm b/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_slime.dm index 649a32ae373..5ba9f9057af 100644 --- a/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_slime.dm +++ b/code/modules/reagents/oldchem/chemical_reaction/chemical_reaction_slime.dm @@ -77,31 +77,16 @@ name = "Slime Crit" id = "m_tele" result = null - required_reagents = list("plasma" = 5) + required_reagents = list("plasma" = 1) result_amount = 1 required_container = /obj/item/slime_extract/gold required_other = 1 on_reaction(var/datum/reagents/holder) - - var/blocked = blocked_mobs //global variable of blocked mobs - - var/list/critters = typesof(/mob/living/simple_animal/hostile) - blocked // list of possible hostile mobs - - playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1) - - for(var/mob/living/carbon/C in viewers(get_turf(holder.my_atom), null)) - C.flash_eyes() - - for(var/i = 1, i <= 5, i++) - var/chosen = pick(critters) - var/mob/living/simple_animal/hostile/C = new chosen - C.faction |= "slimesummon" - C.loc = get_turf(holder.my_atom) - if(prob(50)) - for(var/j = 1, j <= rand(1, 3), j++) - step(C, pick(NORTH,SOUTH,EAST,WEST)) -// for(var/mob/O in viewers(get_turf(holder.my_atom), null)) -// O.show_message(text("\red The slime core fizzles disappointingly,"), 1) + feedback_add_details("slime_cores_used","[type]") + var/turf/T = get_turf(holder.my_atom) + T.visible_message("The slime extract begins to vibrate violently !") + spawn(50) + chemical_mob_spawn(holder, 5, "Gold Slime") slimecritlesser @@ -113,26 +98,28 @@ required_container = /obj/item/slime_extract/gold required_other = 1 on_reaction(var/datum/reagents/holder) - feedback_add_details("slime_cores_used","[replacetext(name," ","_")]") - for(var/mob/O in viewers(get_turf(holder.my_atom), null)) - O.show_message(text("The slime extract begins to vibrate violently!"), 1) + feedback_add_details("slime_cores_used","[type]") + var/turf/T = get_turf(holder.my_atom) + T.visible_message("The slime extract begins to vibrate violently !") spawn(50) + chemical_mob_spawn(holder, 3, "Lesser Gold Slime", "neutral") - if(holder && holder.my_atom) - var/blocked = blocked_mobs + slimecritfriendly + name = "Slime Crit Friendly" + id = "m_tele5" + result = null + required_reagents = list("water" = 1) + result_amount = 1 + required_container = /obj/item/slime_extract/gold + required_other = 1 + on_reaction(datum/reagents/holder) + feedback_add_details("slime_cores_used","[type]") + var/turf/T = get_turf(holder.my_atom) + T.visible_message("The slime extract begins to vibrate adorably !") + spawn(50) + chemical_mob_spawn(holder, 1, "Friendly Gold Slime", "neutral") - var/list/critters = typesof(/mob/living/simple_animal/hostile) - blocked // list of possible hostile mobs - - playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1) - - for(var/mob/living/carbon/C in viewers(get_turf(holder.my_atom), null)) - C.flash_eyes() - - var/chosen = pick(critters) - var/mob/living/simple_animal/hostile/C = new chosen - C.faction |= "neutral" - C.loc = get_turf(holder.my_atom) //Silver slimebork diff --git a/code/modules/research/xenoarchaeology/genetics/prehistoric_animals.dm b/code/modules/research/xenoarchaeology/genetics/prehistoric_animals.dm index 6fc2c277519..50446de112d 100644 --- a/code/modules/research/xenoarchaeology/genetics/prehistoric_animals.dm +++ b/code/modules/research/xenoarchaeology/genetics/prehistoric_animals.dm @@ -17,6 +17,7 @@ speak = list("Hruuugh!","Hrunnph") emote_see = list("paws the ground","shakes its mane","stomps") emote_hear = list("snuffles") + gold_core_spawnable = 1 /mob/living/simple_animal/hostile/diyaab name = "diyaab" @@ -37,6 +38,7 @@ speak = list("Awrr?","Aowrl!","Worrl") emote_see = list("sniffs the air cautiously","looks around") emote_hear = list("snuffles") + gold_core_spawnable = 1 /mob/living/simple_animal/hostile/shantak name = "shantak" @@ -56,6 +58,7 @@ speak_chance = 5 speak = list("Shuhn","Shrunnph?","Shunpf") emote_see = list("scratches the ground","shakes out it's mane","tinkles gently") + gold_core_spawnable = 1 /mob/living/simple_animal/yithian name = "yithian" @@ -63,6 +66,7 @@ icon_state = "yithian" icon_living = "yithian" icon_dead = "yithian_dead" + gold_core_spawnable = 2 /mob/living/simple_animal/tindalos name = "tindalos" @@ -70,3 +74,4 @@ icon_state = "tindalos" icon_living = "tindalos" icon_dead = "tindalos_dead" + gold_core_spawnable = 2 From da4e7478f06407412805d204f6fd7fe5ac27de33 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Mon, 4 Apr 2016 01:03:42 -0400 Subject: [PATCH 02/11] Adds Tape to ArtVend --- code/game/machinery/vending.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 1265eb8da78..79682ab4fd1 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -1250,7 +1250,7 @@ vend_delay = 15 icon_state = "artvend" products = list(/obj/item/stack/cable_coil/random = 10,/obj/item/device/camera = 4,/obj/item/device/camera_film = 6, - /obj/item/weapon/storage/photo_album = 2,/obj/item/stack/wrapping_paper = 4,/obj/item/stack/packageWrap = 4, + /obj/item/weapon/storage/photo_album = 2,/obj/item/stack/wrapping_paper = 4,/obj/item/stack/tape_roll = 5,/obj/item/stack/packageWrap = 4, /obj/item/weapon/storage/fancy/crayons = 4,/obj/item/weapon/hand_labeler = 4,/obj/item/weapon/paper = 10, /obj/item/weapon/c_tube = 10,/obj/item/weapon/pen = 5,/obj/item/weapon/pen/blue = 5, /obj/item/weapon/pen/red = 5) From 16c8e24f04f2ea4b9e185efe3edcd07788758b6b Mon Sep 17 00:00:00 2001 From: Tastyfish Date: Mon, 4 Apr 2016 02:02:19 -0400 Subject: [PATCH 03/11] Tweaks/fixes some bot radio/language stuff, lazarus capsules --- code/game/machinery/telecomms/logbrowser.dm | 5 ++++- code/modules/mining/mine_items.dm | 2 +- code/modules/mob/living/carbon/human/say.dm | 2 ++ code/modules/mob/living/silicon/say.dm | 2 ++ code/modules/mob/living/simple_animal/bot/bot.dm | 7 +++++++ 5 files changed, 16 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/telecomms/logbrowser.dm b/code/game/machinery/telecomms/logbrowser.dm index a16bbe7b870..282c7a39cd8 100644 --- a/code/game/machinery/telecomms/logbrowser.dm +++ b/code/game/machinery/telecomms/logbrowser.dm @@ -90,9 +90,12 @@ race = "Artificial Life" else if(isslime(M)) // NT knows a lot about slimes, but not aliens. Can identify slimes - race = "slime" + race = "Slime" language = race + else if(isbot(M)) + race = "Bot" + else if(isanimal(M)) race = "Domestic Animal" language = race diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index f9b4228e792..235b46df619 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -211,7 +211,7 @@ return ..() /obj/item/device/mobcapsule/attack(var/atom/A, mob/user, prox_flag) - if(!istype(A, /mob/living/simple_animal)) + if(!istype(A, /mob/living/simple_animal) || isbot(A)) return ..() capture(A, user) return 1 diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index f736a17af22..7162933349d 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -53,6 +53,8 @@ return 1 if (istype(other, /mob/living/silicon)) return 1 + if (istype(other, /mob/living/simple_animal/bot)) + return 1 if (istype(other, /mob/living/carbon/brain)) return 1 if (istype(other, /mob/living/carbon/slime)) diff --git a/code/modules/mob/living/silicon/say.dm b/code/modules/mob/living/silicon/say.dm index bcbcb1632f4..6bb8531ea18 100644 --- a/code/modules/mob/living/silicon/say.dm +++ b/code/modules/mob/living/silicon/say.dm @@ -56,6 +56,8 @@ return 1 if (istype(other, /mob/living/silicon)) return 1 + if (istype(other, /mob/living/simple_animal/bot)) + return 1 if (istype(other, /mob/living/carbon/brain)) return 1 return ..() diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index c338bb22e7f..3f1bf7c17b7 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -132,6 +132,13 @@ radio_config["[radio_channel]"] = 1 Radio.config(radio_config) + add_language("Galactic Common", 1) + add_language("Sol Common", 1) + add_language("Tradeband", 1) + add_language("Gutter", 1) + add_language("Trinary", 1) + default_language = all_languages["Galactic Common"] + bot_core = new bot_core_type(src) spawn(30) if(radio_controller && bot_filter) From aee239c6e59033b6cad5e3452b2766781e3cad67 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Mon, 4 Apr 2016 04:45:13 -0400 Subject: [PATCH 04/11] Sentience Potion Changes --- .../research/xenobiology/xenobiology.dm | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index e92f52f6c59..2f4d2bacaca 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -200,6 +200,7 @@ var/list/not_interested = list() var/being_used = 0 w_class = 1 + var/sentience_type = SENTIENCE_ORGANIC /obj/item/weapon/sentience_potion/afterattack(mob/living/M, mob/user) @@ -210,27 +211,30 @@ return ..() if(M.stat) user << "[M] is dead!" - return..() + return ..() + var/mob/living/simple_animal/SM = M + if(SM.sentience_type != sentience_type) + user << "The potion won't work on [SM]." + return ..() - user << "You offer the sentience potion to [M]..." + user << "You offer the sentience potion to [SM]..." being_used = 1 - var/list/candidates = pollCandidates("Do you want to play as [M.name]?", ROLE_SENTIENT, 0, 100) + var/list/candidates = pollCandidates("Do you want to play as [SM.name]?", ROLE_SENTIENT, 0, 100) if(!src) return if(candidates.len) var/mob/C = pick(candidates) - M.key = C.key - M.universal_speak = 1 - M.faction |= "sentient" - M << "All at once it makes sense: you know what you are and who you are! Self awareness is yours!" - M << "You are grateful to be self aware and owe [user] a great debt. Serve [user], and assist them in completing their goals at any cost." + SM.key = C.key + SM.universal_speak = 1 + SM.faction = user.faction + SM.master_commander = user + SM.sentience_act() + SM << "All at once it makes sense: you know what you are and who you are! Self awareness is yours!" + SM << "You are grateful to be self aware and owe [user] a great debt. Serve [user], and assist them in completing their goals at any cost." user << "[M] accepts the potion and suddenly becomes attentive and aware. It worked!" - if(isanimal(M)) - var/mob/living/simple_animal/S = M - S.master_commander = user qdel(src) else user << "[M] looks interested for a moment, but then looks back down. Maybe you should try again later." From b7afdec18c22ddb7db133307e5a3b58cce9ada42 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Mon, 4 Apr 2016 17:01:03 -0400 Subject: [PATCH 05/11] defines --- code/__DEFINES/mob.dm | 4 ++++ code/game/gamemodes/blob/blobs/blob_mobs.dm | 4 ++-- code/modules/events/tear.dm | 2 +- .../living/simple_animal/friendly/butterfly.dm | 2 +- .../mob/living/simple_animal/friendly/cat.dm | 6 +++--- .../mob/living/simple_animal/friendly/corgi.dm | 6 +++--- .../mob/living/simple_animal/friendly/crab.dm | 4 ++-- .../mob/living/simple_animal/friendly/deer.dm | 2 +- .../simple_animal/friendly/farm_animals.dm | 16 ++++++++-------- .../mob/living/simple_animal/friendly/fox.dm | 6 +++--- .../mob/living/simple_animal/friendly/lizard.dm | 2 +- .../mob/living/simple_animal/friendly/mouse.dm | 4 ++-- .../mob/living/simple_animal/friendly/pug.dm | 2 +- .../mob/living/simple_animal/friendly/tomato.dm | 2 +- .../mob/living/simple_animal/hostile/alien.dm | 6 +++--- .../mob/living/simple_animal/hostile/bat.dm | 2 +- .../mob/living/simple_animal/hostile/bear.dm | 2 +- .../mob/living/simple_animal/hostile/carp.dm | 4 ++-- .../mob/living/simple_animal/hostile/creature.dm | 2 +- .../living/simple_animal/hostile/faithless.dm | 2 +- .../living/simple_animal/hostile/giant_spider.dm | 2 +- .../mob/living/simple_animal/hostile/headcrab.dm | 2 +- .../mob/living/simple_animal/hostile/hivebot.dm | 2 +- .../simple_animal/hostile/jungle_animals.dm | 4 ++-- .../mob/living/simple_animal/hostile/mimic.dm | 4 ++-- .../living/simple_animal/hostile/poison_bees.dm | 2 +- .../living/simple_animal/hostile/syndicate.dm | 2 +- .../mob/living/simple_animal/hostile/tree.dm | 2 +- .../living/simple_animal/hostile/winter_mobs.dm | 4 ++-- code/modules/mob/living/simple_animal/parrot.dm | 4 ++-- .../mob/living/simple_animal/simple_animal.dm | 2 +- .../genetics/prehistoric_animals.dm | 10 +++++----- 32 files changed, 62 insertions(+), 58 deletions(-) diff --git a/code/__DEFINES/mob.dm b/code/__DEFINES/mob.dm index 9f9d1d15c94..2bdb3432f69 100644 --- a/code/__DEFINES/mob.dm +++ b/code/__DEFINES/mob.dm @@ -94,3 +94,7 @@ #define DEFAULT_ITEM_PUTON_DELAY 20 //time taken (in deciseconsd) to reverse-strip somebody #define IGNORE_ACCESS -1 + +#define CHEM_MOB_SPAWN_INVALID 0 +#define CHEM_MOB_SPAWN_HOSTILE 1 +#define CHEM_MOB_SPAWN_FRIENDLY 2 \ No newline at end of file diff --git a/code/game/gamemodes/blob/blobs/blob_mobs.dm b/code/game/gamemodes/blob/blobs/blob_mobs.dm index fbaadbd8ec8..a35505470fa 100644 --- a/code/game/gamemodes/blob/blobs/blob_mobs.dm +++ b/code/game/gamemodes/blob/blobs/blob_mobs.dm @@ -40,7 +40,7 @@ var/obj/effect/blob/factory/factory = null var/list/human_overlays = list() var/is_zombie = 0 - gold_core_spawnable = 1 + gold_core_spawnable = CHEM_MOB_SPAWN_HOSTILE /mob/living/simple_animal/hostile/blob/blobspore/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) ..() @@ -161,7 +161,7 @@ maxbodytemp = 360 force_threshold = 10 environment_smash = 3 - gold_core_spawnable = 1 + gold_core_spawnable = CHEM_MOB_SPAWN_HOSTILE /mob/living/simple_animal/hostile/blob/blobbernaut/blob_act() diff --git a/code/modules/events/tear.dm b/code/modules/events/tear.dm index dcaad24f853..e409f6592d8 100644 --- a/code/modules/events/tear.dm +++ b/code/modules/events/tear.dm @@ -44,7 +44,7 @@ var/list/tear_critters = list() for(var/T in typesof(/mob/living/simple_animal)) var/mob/living/simple_animal/SA = T - if(initial(SA.gold_core_spawnable) == 1) + if(initial(SA.gold_core_spawnable) == CHEM_MOB_SPAWN_HOSTILE) tear_critters += T for(var/i in 1 to 5) diff --git a/code/modules/mob/living/simple_animal/friendly/butterfly.dm b/code/modules/mob/living/simple_animal/friendly/butterfly.dm index ce36d85ce30..60aad72ab36 100644 --- a/code/modules/mob/living/simple_animal/friendly/butterfly.dm +++ b/code/modules/mob/living/simple_animal/friendly/butterfly.dm @@ -18,7 +18,7 @@ pass_flags = PASSTABLE | PASSGRILLE | PASSMOB ventcrawler = 2 butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 0) - gold_core_spawnable = 2 + gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY /mob/living/simple_animal/butterfly/New() ..() diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 29f288b7c67..c77d117bad4 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -20,7 +20,7 @@ response_help = "pets" response_disarm = "gently pushes aside" response_harm = "kicks" - gold_core_spawnable = 2 + gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY //RUNTIME IS ALIVE! SQUEEEEEEEE~ /mob/living/simple_animal/pet/cat/Runtime @@ -33,7 +33,7 @@ gender = FEMALE var/turns_since_scan = 0 var/mob/living/simple_animal/mouse/movement_target - gold_core_spawnable = 0 + gold_core_spawnable = CHEM_MOB_SPAWN_INVALID /mob/living/simple_animal/pet/cat/Runtime/handle_automated_action() ..() @@ -99,4 +99,4 @@ faction = list("syndicate") var/turns_since_scan = 0 var/mob/living/simple_animal/mouse/movement_target - gold_core_spawnable = 0 \ No newline at end of file + gold_core_spawnable = CHEM_MOB_SPAWN_INVALID \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm index 520b7af0e01..7be60d7d5d6 100644 --- a/code/modules/mob/living/simple_animal/friendly/corgi.dm +++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm @@ -26,7 +26,7 @@ var/obj/item/inventory_head var/obj/item/inventory_back var/facehugger - gold_core_spawnable = 2 + gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY /mob/living/simple_animal/pet/corgi/New() ..() @@ -398,7 +398,7 @@ response_help = "pets" response_disarm = "bops" response_harm = "kicks" - gold_core_spawnable = 0 + gold_core_spawnable = CHEM_MOB_SPAWN_INVALID /mob/living/simple_animal/pet/corgi/Ian/process_ai() ..() @@ -555,7 +555,7 @@ response_harm = "kicks" var/turns_since_scan = 0 var/puppies = 0 - gold_core_spawnable = 0 + gold_core_spawnable = CHEM_MOB_SPAWN_INVALID //Lisa already has a cute bow! /mob/living/simple_animal/pet/corgi/Lisa/Topic(href, href_list) diff --git a/code/modules/mob/living/simple_animal/friendly/crab.dm b/code/modules/mob/living/simple_animal/friendly/crab.dm index 0777771b235..70639291ab9 100644 --- a/code/modules/mob/living/simple_animal/friendly/crab.dm +++ b/code/modules/mob/living/simple_animal/friendly/crab.dm @@ -22,7 +22,7 @@ var/obj/item/inventory_mask can_hide = 1 can_collar = 1 - gold_core_spawnable = 2 + gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY /mob/living/simple_animal/crab/handle_automated_movement() //CRAB movement @@ -47,7 +47,7 @@ response_help = "pets" response_disarm = "gently pushes aside" response_harm = "stomps" - gold_core_spawnable = 0 + gold_core_spawnable = CHEM_MOB_SPAWN_INVALID //LOOK AT THIS - ..()?? /*/mob/living/simple_animal/crab/attackby(var/obj/item/O as obj, var/mob/user as mob, params) diff --git a/code/modules/mob/living/simple_animal/friendly/deer.dm b/code/modules/mob/living/simple_animal/friendly/deer.dm index c55b5fc6850..034fa07b6fb 100644 --- a/code/modules/mob/living/simple_animal/friendly/deer.dm +++ b/code/modules/mob/living/simple_animal/friendly/deer.dm @@ -15,4 +15,4 @@ response_disarm = "gently pushes aside" response_harm = "kicks" can_collar = 1 - gold_core_spawnable = 2 \ No newline at end of file + gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY \ No newline at end of file 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 a1c5bf16dd7..863141e5e83 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -111,7 +111,7 @@ health = 50 var/milk_content = 0 can_collar = 1 - gold_core_spawnable = 2 + gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY /mob/living/simple_animal/cow/New() ..() @@ -179,7 +179,7 @@ small = 1 can_hide = 1 can_collar = 1 - gold_core_spawnable = 2 + gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY /mob/living/simple_animal/chick/New() ..() @@ -222,7 +222,7 @@ var/global/chicken_count = 0 small = 1 can_hide = 1 can_collar = 1 - gold_core_spawnable = 2 + gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY /mob/living/simple_animal/chicken/New() ..() @@ -300,7 +300,7 @@ var/global/chicken_count = 0 attacktext = "kicks" health = 50 can_collar = 1 - gold_core_spawnable = 2 + gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY /mob/living/simple_animal/turkey name = "turkey" @@ -322,7 +322,7 @@ var/global/chicken_count = 0 attacktext = "pecks" health = 50 can_collar = 1 - gold_core_spawnable = 2 + gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY /mob/living/simple_animal/goose name = "goose" @@ -344,7 +344,7 @@ var/global/chicken_count = 0 attacktext = "kicks" health = 50 can_collar = 1 - gold_core_spawnable = 2 + gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY /mob/living/simple_animal/seal name = "seal" @@ -366,7 +366,7 @@ var/global/chicken_count = 0 attacktext = "kicks" health = 50 can_collar = 1 - gold_core_spawnable = 2 + gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY /mob/living/simple_animal/walrus name = "walrus" @@ -388,4 +388,4 @@ var/global/chicken_count = 0 attacktext = "kicks" health = 50 can_collar = 1 - gold_core_spawnable = 2 + gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY diff --git a/code/modules/mob/living/simple_animal/friendly/fox.dm b/code/modules/mob/living/simple_animal/friendly/fox.dm index b7555301c18..5bf03f083a2 100644 --- a/code/modules/mob/living/simple_animal/friendly/fox.dm +++ b/code/modules/mob/living/simple_animal/friendly/fox.dm @@ -17,13 +17,13 @@ response_help = "pets" response_disarm = "gently pushes aside" response_harm = "kicks" - gold_core_spawnable = 2 + gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY //Captain fox /mob/living/simple_animal/pet/fox/Renault name = "Renault" desc = "Renault, the Captain's trustworthy fox. I wonder what it says?" - gold_core_spawnable = 0 + gold_core_spawnable = CHEM_MOB_SPAWN_INVALID //Syndi fox /mob/living/simple_animal/pet/fox/Syndifox @@ -35,4 +35,4 @@ icon_resting = "Syndifox_rest" flags = NO_BREATHE faction = list("syndicate") - gold_core_spawnable = 0 + gold_core_spawnable = CHEM_MOB_SPAWN_INVALID diff --git a/code/modules/mob/living/simple_animal/friendly/lizard.dm b/code/modules/mob/living/simple_animal/friendly/lizard.dm index e4aab2ed47e..b5c0ccedeae 100644 --- a/code/modules/mob/living/simple_animal/friendly/lizard.dm +++ b/code/modules/mob/living/simple_animal/friendly/lizard.dm @@ -22,4 +22,4 @@ can_hide = 1 butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat = 1) can_collar = 1 - gold_core_spawnable = 2 + gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index 3d090de3144..90c4c0f06ec 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -31,7 +31,7 @@ can_hide = 1 holder_type = /obj/item/weapon/holder/mouse can_collar = 1 - gold_core_spawnable = 2 + gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY /mob/living/simple_animal/mouse/handle_automated_speech() ..() @@ -145,4 +145,4 @@ response_help = "pets" response_disarm = "gently pushes aside" response_harm = "splats" - gold_core_spawnable = 0 + gold_core_spawnable = CHEM_MOB_SPAWN_INVALID diff --git a/code/modules/mob/living/simple_animal/friendly/pug.dm b/code/modules/mob/living/simple_animal/friendly/pug.dm index 4b25505561b..ec8a38509f1 100644 --- a/code/modules/mob/living/simple_animal/friendly/pug.dm +++ b/code/modules/mob/living/simple_animal/friendly/pug.dm @@ -17,7 +17,7 @@ response_disarm = "bops" response_harm = "kicks" see_in_dark = 5 - gold_core_spawnable = 2 + gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY /mob/living/simple_animal/pet/pug/process_ai() ..() diff --git a/code/modules/mob/living/simple_animal/friendly/tomato.dm b/code/modules/mob/living/simple_animal/friendly/tomato.dm index 998071443f3..ca135fe87be 100644 --- a/code/modules/mob/living/simple_animal/friendly/tomato.dm +++ b/code/modules/mob/living/simple_animal/friendly/tomato.dm @@ -15,4 +15,4 @@ harm_intent_damage = 5 pass_flags = PASSTABLE can_hide = 1 - gold_core_spawnable = 2 \ No newline at end of file + gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index ff2f03d74cf..80571d2eef8 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -29,7 +29,7 @@ see_in_dark = 8 see_invisible = SEE_INVISIBLE_MINIMUM heat_damage_per_tick = 20 - gold_core_spawnable = 1 + gold_core_spawnable = CHEM_MOB_SPAWN_HOSTILE /mob/living/simple_animal/hostile/alien/drone @@ -128,7 +128,7 @@ move_to_delay = 4 maxHealth = 400 health = 400 - gold_core_spawnable = 0 + gold_core_spawnable = CHEM_MOB_SPAWN_INVALID /obj/item/projectile/neurotox name = "neurotoxin" @@ -153,7 +153,7 @@ icon_state = "maid" icon_living = "maid" icon_dead = "maid_dead" - gold_core_spawnable = 0 //no fun allowed + gold_core_spawnable = CHEM_MOB_SPAWN_INVALID //no fun allowed /mob/living/simple_animal/hostile/alien/maid/AttackingTarget() if(istype(target, /atom/movable)) diff --git a/code/modules/mob/living/simple_animal/hostile/bat.dm b/code/modules/mob/living/simple_animal/hostile/bat.dm index eaae85b5eb2..bbdf639c0f4 100644 --- a/code/modules/mob/living/simple_animal/hostile/bat.dm +++ b/code/modules/mob/living/simple_animal/hostile/bat.dm @@ -29,7 +29,7 @@ faction = list("scarybat") var/mob/living/owner - gold_core_spawnable = 1 + gold_core_spawnable = CHEM_MOB_SPAWN_HOSTILE /mob/living/simple_animal/hostile/scarybat/New(loc, mob/living/L as mob) ..() diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm index b9fce10e8f0..f55c4ce98d6 100644 --- a/code/modules/mob/living/simple_animal/hostile/bear.dm +++ b/code/modules/mob/living/simple_animal/hostile/bear.dm @@ -31,7 +31,7 @@ var/stance_step = 0 faction = list("russian") - gold_core_spawnable = 1 + gold_core_spawnable = CHEM_MOB_SPAWN_HOSTILE //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/carp.dm b/code/modules/mob/living/simple_animal/hostile/carp.dm index 2c971649e64..ddd302c3e8c 100644 --- a/code/modules/mob/living/simple_animal/hostile/carp.dm +++ b/code/modules/mob/living/simple_animal/hostile/carp.dm @@ -33,7 +33,7 @@ faction = list("carp") flying = 1 - gold_core_spawnable = 1 + gold_core_spawnable = CHEM_MOB_SPAWN_HOSTILE /mob/living/simple_animal/hostile/carp/Process_Spacemove(var/movement_dir = 0) return 1 //No drifting in space for space carp! //original comments do not steal @@ -54,7 +54,7 @@ icon_state = "holocarp" icon_living = "holocarp" maxbodytemp = INFINITY - gold_core_spawnable = 0 + gold_core_spawnable = CHEM_MOB_SPAWN_INVALID /mob/living/simple_animal/hostile/carp/holocarp/death() ..() diff --git a/code/modules/mob/living/simple_animal/hostile/creature.dm b/code/modules/mob/living/simple_animal/hostile/creature.dm index 24c4eede1de..50aa20b60d0 100644 --- a/code/modules/mob/living/simple_animal/hostile/creature.dm +++ b/code/modules/mob/living/simple_animal/hostile/creature.dm @@ -13,5 +13,5 @@ attacktext = "chomps" attack_sound = 'sound/weapons/bite.ogg' faction = list("creature") - gold_core_spawnable = 1 + gold_core_spawnable = CHEM_MOB_SPAWN_HOSTILE diff --git a/code/modules/mob/living/simple_animal/hostile/faithless.dm b/code/modules/mob/living/simple_animal/hostile/faithless.dm index 1f496c8347c..a14efc6d279 100644 --- a/code/modules/mob/living/simple_animal/hostile/faithless.dm +++ b/code/modules/mob/living/simple_animal/hostile/faithless.dm @@ -25,7 +25,7 @@ speed = 4 faction = list("faithless") - gold_core_spawnable = 1 + gold_core_spawnable = CHEM_MOB_SPAWN_HOSTILE /mob/living/simple_animal/hostile/faithless/Process_Spacemove(var/movement_dir = 0) return 1 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 088155c25aa..bb381f24be1 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -49,7 +49,7 @@ move_to_delay = 6 attacktext = "bites" attack_sound = 'sound/weapons/bite.ogg' - gold_core_spawnable = 1 + gold_core_spawnable = CHEM_MOB_SPAWN_HOSTILE //nursemaids - these create webs and eggs /mob/living/simple_animal/hostile/poison/giant_spider/nurse diff --git a/code/modules/mob/living/simple_animal/hostile/headcrab.dm b/code/modules/mob/living/simple_animal/hostile/headcrab.dm index 5aa075a8cc5..b2b6d9ff716 100644 --- a/code/modules/mob/living/simple_animal/hostile/headcrab.dm +++ b/code/modules/mob/living/simple_animal/hostile/headcrab.dm @@ -21,7 +21,7 @@ ventcrawler = 2 var/datum/mind/origin var/egg_lain = 0 - gold_core_spawnable = 1 + gold_core_spawnable = CHEM_MOB_SPAWN_HOSTILE /mob/living/simple_animal/hostile/headcrab/proc/Infect(mob/living/carbon/victim) var/obj/item/organ/internal/body_egg/changeling_egg/egg = new(victim) diff --git a/code/modules/mob/living/simple_animal/hostile/hivebot.dm b/code/modules/mob/living/simple_animal/hostile/hivebot.dm index 7116d49fb55..3ccbb9abec2 100644 --- a/code/modules/mob/living/simple_animal/hostile/hivebot.dm +++ b/code/modules/mob/living/simple_animal/hostile/hivebot.dm @@ -21,7 +21,7 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 speak_emote = list("states") - gold_core_spawnable = 1 + gold_core_spawnable = CHEM_MOB_SPAWN_HOSTILE /mob/living/simple_animal/hostile/hivebot/range name = "Hivebot" diff --git a/code/modules/mob/living/simple_animal/hostile/jungle_animals.dm b/code/modules/mob/living/simple_animal/hostile/jungle_animals.dm index 75ecdf79511..85268dee619 100644 --- a/code/modules/mob/living/simple_animal/hostile/jungle_animals.dm +++ b/code/modules/mob/living/simple_animal/hostile/jungle_animals.dm @@ -30,7 +30,7 @@ layer = 3.1 //so they can stay hidde under the /obj/structure/bush var/stalk_tick_delay = 3 - gold_core_spawnable = 1 + gold_core_spawnable = CHEM_MOB_SPAWN_HOSTILE /mob/living/simple_animal/hostile/panther/ListTargets() var/list/targets = list() @@ -88,7 +88,7 @@ layer = 3.1 //so they can stay hidde under the /obj/structure/bush var/stalk_tick_delay = 3 - gold_core_spawnable = 1 + gold_core_spawnable = CHEM_MOB_SPAWN_HOSTILE /mob/living/simple_animal/hostile/snake/ListTargets() var/list/targets = list() diff --git a/code/modules/mob/living/simple_animal/hostile/mimic.dm b/code/modules/mob/living/simple_animal/hostile/mimic.dm index ab83a592e1f..7cff96385e1 100644 --- a/code/modules/mob/living/simple_animal/hostile/mimic.dm +++ b/code/modules/mob/living/simple_animal/hostile/mimic.dm @@ -30,7 +30,7 @@ move_to_delay = 9 var/is_electronic = 0 - gold_core_spawnable = 1 + gold_core_spawnable = CHEM_MOB_SPAWN_HOSTILE /mob/living/simple_animal/hostile/mimic/FindTarget() . = ..() @@ -140,7 +140,7 @@ var/global/list/protected_objects = list(/obj/structure/table, /obj/structure/ca var/mob/living/creator = null // the creator var/destroy_objects = 0 var/knockdown_people = 0 - gold_core_spawnable = 0 + gold_core_spawnable = CHEM_MOB_SPAWN_INVALID /mob/living/simple_animal/hostile/mimic/copy/New(loc, var/obj/copy, var/mob/living/creator, var/destroy_original = 0) ..(loc) diff --git a/code/modules/mob/living/simple_animal/hostile/poison_bees.dm b/code/modules/mob/living/simple_animal/hostile/poison_bees.dm index 6bb6efc003d..c8a6a79fb04 100644 --- a/code/modules/mob/living/simple_animal/hostile/poison_bees.dm +++ b/code/modules/mob/living/simple_animal/hostile/poison_bees.dm @@ -24,7 +24,7 @@ //Spaceborn beings don't get hurt by space atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 - gold_core_spawnable = 1 + gold_core_spawnable = CHEM_MOB_SPAWN_HOSTILE /mob/living/simple_animal/hostile/poison/bees/Process_Spacemove(var/check_drift = 0) return 1 diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm index 1c869805a03..3a9d9e46aa6 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm @@ -132,7 +132,7 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 flying = 1 - gold_core_spawnable = 1 + gold_core_spawnable = CHEM_MOB_SPAWN_HOSTILE /mob/living/simple_animal/hostile/viscerator/death() ..() diff --git a/code/modules/mob/living/simple_animal/hostile/tree.dm b/code/modules/mob/living/simple_animal/hostile/tree.dm index 361cea751ad..bd39b681978 100644 --- a/code/modules/mob/living/simple_animal/hostile/tree.dm +++ b/code/modules/mob/living/simple_animal/hostile/tree.dm @@ -28,7 +28,7 @@ minbodytemp = 0 faction = list("hostile", "winter") - gold_core_spawnable = 1 + gold_core_spawnable = CHEM_MOB_SPAWN_HOSTILE /mob/living/simple_animal/hostile/tree/FindTarget() . = ..() diff --git a/code/modules/mob/living/simple_animal/hostile/winter_mobs.dm b/code/modules/mob/living/simple_animal/hostile/winter_mobs.dm index ae176992a9e..274ba14f156 100644 --- a/code/modules/mob/living/simple_animal/hostile/winter_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/winter_mobs.dm @@ -33,7 +33,7 @@ bodytemperature = 73.0 //it's made of snow and hatred, so it's pretty cold. maxbodytemp = 280.15 //at roughly 7 C, these will start melting (dying) from the warmth. Mind over matter or something. heat_damage_per_tick = 10 //Now With Rapid Thawing Action! - gold_core_spawnable = 1 + gold_core_spawnable = CHEM_MOB_SPAWN_HOSTILE /mob/living/simple_animal/hostile/winter/snowman/death() @@ -64,7 +64,7 @@ melee_damage_lower = 5 melee_damage_upper = 10 - gold_core_spawnable = 1 + gold_core_spawnable = CHEM_MOB_SPAWN_HOSTILE /mob/living/simple_animal/hostile/winter/santa maxHealth = 150 //if this seems low for a "boss", it's because you have to fight him multiple times, with him fully healing between stages diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 33372a9904f..3096a85e39b 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -82,7 +82,7 @@ //Parrots are kleptomaniacs. This variable ... stores the item a parrot is holding. var/obj/item/held_item = null - gold_core_spawnable = 2 + gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY /mob/living/simple_animal/parrot/New() @@ -683,7 +683,7 @@ name = "Poly" desc = "Poly the Parrot. An expert on quantum cracker theory." speak = list("Poly wanna cracker!", ":eCheck the singlo, you chucklefucks!",":eCheck the tesla, you shits!",":eSTOP HOT-WIRING THE ENGINE, FUCKING CHRIST!",":eWire the solars, you lazy bums!",":eWHO TOOK THE DAMN HARDSUITS?",":eOH GOD ITS FREE CALL THE SHUTTLE") - gold_core_spawnable = 0 + gold_core_spawnable = CHEM_MOB_SPAWN_INVALID /mob/living/simple_animal/parrot/Poly/New() ears = new /obj/item/device/radio/headset/headset_eng(src) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index bd8d6b8e740..f862b889710 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -67,7 +67,7 @@ var/scan_ready = 1 var/simplespecies //Sorry, no spider+corgi buttbabies. - var/gold_core_spawnable = 0 //if 1 can be spawned by plasma with gold core, 2 are 'friendlies' spawned with blood + var/gold_core_spawnable = CHEM_MOB_SPAWN_INVALID //if CHEM_MOB_SPAWN_HOSTILE can be spawned by plasma with gold core, CHEM_MOB_SPAWN_FRIENDLY are 'friendlies' spawned with blood var/master_commander = null //holding var for determining who own/controls a sentient simple animal (for sentience potions). var/sentience_type = SENTIENCE_ORGANIC // Sentience type, for slime potions diff --git a/code/modules/research/xenoarchaeology/genetics/prehistoric_animals.dm b/code/modules/research/xenoarchaeology/genetics/prehistoric_animals.dm index 50446de112d..654b1a9ccde 100644 --- a/code/modules/research/xenoarchaeology/genetics/prehistoric_animals.dm +++ b/code/modules/research/xenoarchaeology/genetics/prehistoric_animals.dm @@ -17,7 +17,7 @@ speak = list("Hruuugh!","Hrunnph") emote_see = list("paws the ground","shakes its mane","stomps") emote_hear = list("snuffles") - gold_core_spawnable = 1 + gold_core_spawnable = CHEM_MOB_SPAWN_HOSTILE /mob/living/simple_animal/hostile/diyaab name = "diyaab" @@ -38,7 +38,7 @@ speak = list("Awrr?","Aowrl!","Worrl") emote_see = list("sniffs the air cautiously","looks around") emote_hear = list("snuffles") - gold_core_spawnable = 1 + gold_core_spawnable = CHEM_MOB_SPAWN_HOSTILE /mob/living/simple_animal/hostile/shantak name = "shantak" @@ -58,7 +58,7 @@ speak_chance = 5 speak = list("Shuhn","Shrunnph?","Shunpf") emote_see = list("scratches the ground","shakes out it's mane","tinkles gently") - gold_core_spawnable = 1 + gold_core_spawnable = CHEM_MOB_SPAWN_HOSTILE /mob/living/simple_animal/yithian name = "yithian" @@ -66,7 +66,7 @@ icon_state = "yithian" icon_living = "yithian" icon_dead = "yithian_dead" - gold_core_spawnable = 2 + gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY /mob/living/simple_animal/tindalos name = "tindalos" @@ -74,4 +74,4 @@ icon_state = "tindalos" icon_living = "tindalos" icon_dead = "tindalos_dead" - gold_core_spawnable = 2 + gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY From fe5f80347640c01207b8af449f07cbd91c60f4a3 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Mon, 4 Apr 2016 17:04:43 -0400 Subject: [PATCH 06/11] forgot these two --- code/modules/reagents/newchem/newchem_procs.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/reagents/newchem/newchem_procs.dm b/code/modules/reagents/newchem/newchem_procs.dm index 761791f3c11..5f3c416a6ab 100644 --- a/code/modules/reagents/newchem/newchem_procs.dm +++ b/code/modules/reagents/newchem/newchem_procs.dm @@ -174,9 +174,9 @@ var/list/chemical_mob_spawn_nicecritters = list() // and possible friendly mobs for(var/T in typesof(/mob/living/simple_animal)) var/mob/living/simple_animal/SA = T switch(initial(SA.gold_core_spawnable)) - if(1) + if(CHEM_MOB_SPAWN_HOSTILE) chemical_mob_spawn_meancritters += T - if(2) + if(CHEM_MOB_SPAWN_FRIENDLY) chemical_mob_spawn_nicecritters += T var/atom/A = holder.my_atom var/turf/T = get_turf(A) From 522c0b16d3d5fc24e3a78f8adb0b677824bb9c30 Mon Sep 17 00:00:00 2001 From: Isaac Erwin Date: Tue, 5 Apr 2016 14:24:32 -0400 Subject: [PATCH 07/11] Fixes knee-high rainbow socks Knee-high rainbow socks are no longer one pixel too far to the right --- icons/mob/underwear.dmi | Bin 53161 -> 53158 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/underwear.dmi b/icons/mob/underwear.dmi index 928163c75ece63c4e68d2cbbe04ee55aef82338c..c212261f9ec2bf8c21874e1c701c2703148e8764 100644 GIT binary patch delta 29815 zcmY(q1z1#F_da|O1w~4cjzLr~=$2LxkPxIB>F&-0qI8IKj(~KRG)Q-Mm*kMb(8K%> z@AJIx_x-MGm>Krjb7Jki*1qqx?wt$A%z|T5MVD#D$yYF~wFdaR*u(x*SyFu^iM1Yt0)c#Q;wBy|CvSyv!z3 z@{t^2m_CuUdu#yjs+F+CtsM99N_UKJTFi`$j;YzJ=9W!}L1#r&=zDG0mpvEM^j>(` zOAMd}cE|raT<1#ZmAta`B1}{FS*m%M`!#CA#YGSLGHuwjQpfi?kse?vNTh1;@2jBQo=gOm=3srIz4Pr>&G2(P`Uo_^^U- zdsBmf4a>J$78!-pI;wyUHp_*2bzqg>+N{=Bzc-dCbsvPr*w_iXA}#Gr*Q?at-rf{s zn!M>uJD9DgxDco6)$5)nf45YPan1a|-yf^g8|6OOcy|stZWVLtG~uF%h>MF`ohmiR zDJ~|3I`ScIT~nbA&ysqu8=9El`$l(<>#mh7Zi%BGe$OSimKc{UzRPIqr20YN)((J= z+7brtHzr(M5k&-UhDUguc(E2;2TAN`s>38fa=%IB{K&-Z+fd&WCyW}F#(T7=>!Iar z<>{3-mKCIYz^5mPhjcy<3J_|3I9h83Rd95AH51>;w08+2!mK0lk6@h;pyb#k!Q-y8 zXrS2kVM}Mst)_@)-C5d z{!w_>H99eCo3Ap)OK*~97RD!5LMF1!))-Zb3&TK{&)}{T6L|H$gr(^o0RS!VUhIuh z`5+w%MgZ2422f`t|F3cOEj0n?}jv@TA<*VE#vdQfzqQbYwXq!PaOUUHY770wFK6>GE|&l(L#}R)-}0H3 zt4!1DC4pvF#{kR_b5Fo9iFqo{k|y9&R}DsZK55jCOJTN-%f(&iS9R!`R5pBa+j62q zi3fNoc_Z+851qODK>B07K$p;LVyb-MqiOT6x}vDOd%)~oZFr&C)kB~7<-IA=&^l)0*8UHDOJ6SM z<4Rc}BWcV`z2S-@P|+PN^9a+qTUub!XW9|^LzZQAT3)u7TUMAn^y>qBRpfTdn8O~y zu;(r3FRjX$I&s%z6SO~1PMp0^$qwMa8zUnlt%L+BAy2j0QiFi&wZSGs0&NgBXU&5T zefUg~J^}CUOqI4)=q`(+Y8*D`=WO=oY7~ycphir7=ba(g7m)&HMrP9OeGMj2_V9~3 zmDUyeEhK&$O``yFd2aP+?(*m)2Kb6Zpp^3Koa6kkpJj5-Z4&G0&v)d&9jvRu-`T}U zv0o8#Fr4GngDU;WB5gHc6y}dTFGknt@YEFk)s>IF@m|^oWz;zyFhn-!qh06RKCmeE zeI701iM40hh%PTT5Ei5e2{DrF7*^8?eKI}G``v4MBfRet2BdrYe=;DTW5@_R%cx!c zQ@z7|^=JNw@HP3nl2QrK<{?iAXH^!A2Xg-8&FM5Bi)n;f z@3Q@E3+A-xl@;5Js@dxoe;uD3188Mwyon;uN259Jqt{z=gXLQm$D| zbKhG#YuiGj)^?7N%z~qB63bdBW0+6y)${uuwS+-CU)v!-#S7a1F*#fEGny(}>r`;U z_|zK&SED^WJ)AU(4h{}l0xy>~=H})K;4BgMo%WN8Os=%-THC|E4dbR*oeF1{H0tCixeMAo6BUQ!ee1b`s7p0+ z-e2bPc#%T=bNVS=;syJ@E9`##N#IYr)=o9bdL0&f`^I9M!G6@enVA_@y%zSs%Y<>N z256z;jFM3&dtj|yh&&!UF3HxB1ooz9*HLaXoH%OX1`xnLP-Lh_$HbVyqvJS8eWDtQErHIW8Z2Px z)+Y?scM34cBHgjeMn9I~8my>ubvo>){QLv1DPd7`8nz&Gk_v18hk}m=NW?~8P}r#l zQoO`1?h;%hSnknWY|BaE|5$593H)%Jr{qHog2l<@z|@Re%X={RhKV#N{davG8mvuB>#x=+=&Q)mHgI za)0s%;l8w%{w8wVULUMm7`Of2+`fg;m&C&|a2`C$(f#9O0$S(v=|3>4e%;1~$79^m zM~zD9oV~sY5%`OLeaeJ>Kr;~tC~6{j#&QML%jxnMgc_Hx`4cjho2-g`zz3F~H|V=T zFJ2nP^@u0Rvi)ND@89a$LMT31)%vQ6-hvuTT2lOo z9VA}g+lat+G>PAFR*WjoBo2_>IG*Io=#zeaQL^pP)qtaNmR>9e zzoTL1vGek^PQA*kEiYE1mTZw=4f2s4ih_)hZ^n~^Z8+}Y62v4lX{r9T^ZM*NH5@^CY0&Kx z!M%wKalL!wX^~ zBZXoxJra2{|K(4GwztJQFMjvn0>4cF_w8+;+Cid3+3BbiRTY(v1emq|=C$zAK1j>G za%HlyI~hg`2ib9)f~o?A^DK^x^4yMB{5F{#S2VvnfeRW-Uo4c&(SAHIJ1_Hth?X4D`sbo9QE_n4 zl*DIm{<1e8Uoxc2{e0CyA99`Osw~qc^zb+eFIeIA11~ylwqMQcJ7D{J!rO0dUagNS zYaBn*-i2N(1%6S>iGoq`o}QrS^!cCeC|p21j3N`yC`tXN#$pbaaUYqZi;MImf*`K9 zJuxW>qf7X-69y(@{Eh&xR)zRbR{V;`VH(^?c&CdXC{>JR0nepL@B?o8sp`0WJw(0> zAu+>@=^c~vm+>;7dRc+h+7U)c4lwG}tCaF1u_VCXK~(0~`^d}vj{c;||51b1t8-i+)^eVYZV%L9DH{|d!`(*i+wwx> z0o(6}Cgf1dr3!R+gpy}8k%qnueE??-H?uP{mm4qlM!8bGFU&~7#51=Uf<!R*@v^9Kx2%^L6M!O_=hIe2(tA_X9#qC%4Vf#H@f0Kshx zV6`)%Qv&Aobezn3t~wH;lo&ubNF$gRm(QJ%PA;M4R_*CDF-|kAsmav_lUw90= zhG{lljh)&^hdg=`eZw$v*u7Ehx7tEkBP3K9S(voC=uf-{f!~n}`$7O~Y%l9ut)|Ls zY+z}EbBYsBuVcxiv=?qtDml7g87~Z%-4ZYw1rV`%BCi0F&6;entV{Fg>r>Iq1?F`H29pmOmd1PS&0PgeS#tAI;X}4XUA;C= z5-Eb=Vm-Kf8vs6J6UoZTK7al^@Rb8E)ria{G`G}0etb|?R`x9+;oeOG2_WRi$dlQ; z8I9_#N2{hbHWH$uep~cornMb^HW0=EHmhr%Fpe-#p4}_l60&RHfm+^`x7NW*h=MTY zrFCskzhfOnGJ9%=TAz?h#yQp9a#`9*0uF!M;^_)A3cmD@hFO{IG1Hu~iTCDNL7`V= z8p{)$)uZ|iq^O3Vh>lbmBl=@#{*v>g=);UWME*<1sk}Re2!kNv0$DtX&&eFrN*FgE z_Y!&fFlhD{h`xT4G=y>KL(#9RtxXLq4NJhTYC9eBNgn^)smaxpzU4cT9W zme6N(Yb?wdasev*03DLMw}*y@eRp;&M~|Z(;9`ALSHG7%dXE;2{Thu*8O_g6lFJ?q zfU}!Iujnc9vjQs06E4|hde#UytVcq^o-Th zhY}gJ!{f|cCU30txhp246QQ%P8cdPm zwq&(?s;m-&s-OB3xkmQUTow~09j}U@c{6wU`3~OU+qr99bODYKYl-nr?%qOYCv1)St3DP+&Q4!fXCoX# z2wDj;lUGz#t!@ryn3|ivg$RF9%{qnU>@QhR+o7N9W`GnGiNa|F!91Rzq<1PRvEFkc zv_4r`S=GCcYq=|44QEI|A<8JPF%sf%I|~hz@7}$0pI(d84TsV&(&Kl0m^6Pa{q1F$ zTqGqX)`K!IS(C3BD)jtL#AU;*uf?LC87~>v&ez`a%*g7fU`+mqMyz%+%Tr8J~N3cyhRoL(i(Cg*{QEcZV(OqqmV<++U1ORhxpbXOuR0&=kw7Np^dw6>KUh!l| zVq)TB!2m2SoW_Cz86pmN5blrodrYrhaUh9kw=p-P4v7|fhj?g`np|brIlgr-C3fqx zM=9s4m<8dIf3CP3NphGNfX+0DXC9k$d($SNzO$C@O(bqe9Zc!U7YhsH{wDXrN|kJky^Of@T>MwgRf*>ixqZBupc&y3$31c=TvC z2-*;5v*f?_JX~ql5ET`L8}C7Bo%*8ze&gO}?W>2IviqoZBNEd3vvh8?)@K>y8e?+N zheW-G+gD`+_B#Xu2RF-9spFOc@OvavdU#e)pt=n&v;#5>;8vEM$u6{mat7tj8(nBCCz}T#Wl$E|7@G zl$5aSRQDdsZXp5Wm|_>ikf7GXfdcjStL*m!TGLW^AvS2c(smClP%FKqg2*jJ5D1;o zLRo)*;#VpnbAuK1uHmNJZN|C=L?w(z3^b}cn6;MEWz~(}%8rSsJ)oq37ev=x2L!Of z3ywCj_9S>L-&s8=Y2s69Y~q_hk5t1My^{K|LVCYu?KA&QUa>()FFa+E79K85`M@BB zlV&1pL22{?z5)it891R*_C2w=lVo}Hy7f8zZlFtgngz6Cu#&ZLO=|f;*@%^|q&kwd z#kgMOC)D^Mq%0E;69k3{dkmXD-#P0PzGmC3?t9DWl)lAI!K%I<0aLZ~UJo>4zx+fI zVP%Q0`o7En=(5RG9xlO8lm^#e-ht?=LA02YQzd)< z_O|&Pv(uz@{Od0A(7vqdYBJ|KYT#4VtP=|_mA|EkYJpnh5D?6)#;uQ*h!NlU?Th){ zoPr}j`07mzBe3*w{y8y!E1P;HH@us@2+|xR_zP!ufpO3!Uh#D{_y?rp>S@b0e-;xBY$I=Q4%~3BcsWCoBNm@Src(mXq!SmVk`hCn<#z*ZW7R7#5 z;WMDp|D4sxc42S+c`5!Y8&iroOJhUBAVG_sjQ6;)mq^OQ5IQd)+4YOz~n zRFH|GN{5L`#CPxVT9&x*{&)*N3PGxtf}EkP`NAH~Vp{0zqS_GDQ6A!8QTT!&_fV}+ z1$7-FMmHm}#*U17tO(~A`3Ib%j)G^&fKX<%7cAxaSHinp%@A@R8uTpO7hG86F3(*& zq{ad`n4Om$28$Ih$jNpunP-pQ@Blwt_h3Ie{!ST0umNg~o^Ch4PI+-5&ZO-Aet1vxXU!EV!?+v%pwh|{d_botxhG55;|7{wfrw|PIQBp#9dAc8G z-ln0UF%{Q%3_b%yWM#v2idxQs1C2ee&JF>e2;pnB8PUTDRp-)I-p5`t(oH122XY0P zNdZfmA}-Rm2|Nub*y$tQZtTXWp%Knn&gYa_oxhQzXeV;(wobC%o=@6v|J8u2%_{{g zt<@2`<;2#J-c)FP{~Gv=G_~Xo<5*CAX~L(;{?Ew2Gy)Aq zg3L|pOr!cs7bijS-XAr|ycYOY4L3SV{f<&>%@ZeOT3hQ{ce%K=-nzq2|$rg@rvbIpgL= zb8j5;s?qO`&Wp7%WG>4Tc@qDryqLXxcciYo)!FyjT1oi=xqH=69f3>qGEweaK^6I~(DU<-_rh!=Ou6yOwwHktu!%T9)39*(z_%3nXYU{Lp#!N_yz8I;s2hG4me0>0bL} zf7H3X$m<3PeS%ptUFQy~S&yHT=o#X`S!4gkVNY*+fs>_WBhT~h!yndCCIfZ|*}r8| zM{laE1x&PdT0%pj>>cP>H7cc6S*)+Lm`R~mHCuEL#HElv@#l{W*y%C*R`}$~C;r@D ziRU@-OG*-K6j+aHb6^Ic#6MyATWA&ime;Lb=WLa%VrKTjd3T2R^i`M4%&BSy!jMpCSu9$Q= z?W3@z@_sH?duq{(Im&~=E8SLK3aaYKumO^DgKetmjKkAOVbMgVN1XYXy1iX(0Zr%N zuv0yS*#|sDEm%^~*3tRU%nVNPWWLE&C1c2>zj)xRCh$Qg;Fs z2i5g1uVLEYwa0D*OV!r;QA<#EnYDh@)mI|z+Iy(gUaKr45$VQXA1|S=wdeI~{yR_+ z$X@i9^;`6reNu(-nQ-Hr|IHs}=Ph=8VMcta`+1VWbL5=P$s-D~a0kVK>&Bbw@>$o;5HTjaa&P4yV7atmnd0=O#@a50J02#}cY#Ci=C9uZIsY7J(J=r!dFXXQh*X4yeogho?)cdhVZy8&KRMsE&3e6L zuW^_i7Gbfdi(X{xH*fE$<4JM{7aIDZ=6QYGXJ|;p&3uwT0jhe*_^xErqWAx~hW{bN4g7&24$yBAU zucKDqnDsAp&^woYc*qsd`&7LgtqZS<%yoO1iM24tl&D+!T8ArWfX5#`aG`Kg%88K`;3ctUz=q_621pL{~4OyQv~CyDB-j0JXAn;u9$+LNtOh zW7!?$;OS0F2~Sr1n!+(4I?<>ti738r2E zuSYiS za-COr*u${sacTE$`8ZK6YH^YsZ9@CAY@CI~e= z=t|;xtSkga~MR~1+mMut``|Mxm@za6^ zM=PLcn_^6&MG_7QQqXh_)>15cv0!X^u?;#aEuddkK4jbN{m^i(t;H~a-zF5e!e{3! zzhu{jY?d*^X?l)3>+^R@?M&fL2d<^6Y8(m9*8^yoZEd?IS0nr{Qi$UWu9CYpztE3_`L7u~Gj{RnLGTlmK)}gz4=yRAtoIMwm<6`0hT7v#G|eNzVQm&9%ZMk)@3;oiYqCPb^=WK|dxjs$D{# zkxA)zFz;OqqLFnY*e#*A73|QI93@xRq!JtXB4eD;Lt(uQd-Tvq)JT8FUtZvpATbz2 zq+5~`T=6Q=el~DhiE>eb#_eg5bsURsQD*J=BJavP*=j;4d523^gR2{wVc~XsQc}K& zfh$aYTmY(G9=JD19jg{;1tn8CNbnKFI-H`Y1wUfb@oNm*kJofPXKX&-ZwNu#T9l}h z(Q((nQ8yh;@q`y|T=wHg)C?vVI1%Poc?YA&zwm)L9G{QP#k2P%895~aBlDp*^u44j$p zVInbP@92Xv(=U){zUJ;EOWsH+Er4aGRI!-^1jeKuo@?t1D15D{*d43pB#w zRVIMfbP9_)w@ObLRT*3jxY+$&IkIcU-p}|Q74k`ry0&i3`}Kg}HF?(c7SCBgYtS9^ z8D$;|W1F%EK{{jp-TC3cq4{U3O_zqy{i8DohEIk&b8PuOHe}yAThxuCXbsKVt@i3` z-`sm0dNO!PF$7&LDvuzUUGr)IRGdFG|G9w1!^7*TP`Cs4H!E2){%*Mrs##FG4at^sAHIygM_akVs0sFJ(G2a(FMtz+=i9X`p4L4}jMu7K-~ z^aHE&&J?dbun093=f8jkhtT(eMsZODMRou`xQy~+?C~R ze$UMy|7F|SAtL zfNB9p5>4h^`kp9{ce{yh%b`1J-hW)-7{7^{r7t#*t9E6EdCYT1C|{Iv)=zf>KQ^~R z|5q!?I~JE>jAD>825ip`mj7?_+8`DgpftC&lQH^FIpmHD%}eV&nJpyCVs!J8%^h0w z9O&W+vSIqnc3SIJ`70f6)TGoWDdw&wiNY9w)Q z1l4}|;a1JXB`h_*0C7dPQF8rEZFDW>pPEQ`A~TE6Sc1H@P`j&P`^bSY!;xVf@-%hY ztTx=nM5!3mP0|g1AXVv|&I@{4c>}o|X>*>zQ2oT{Kk6$XWwgiX-nbKU{lVLYYm|4> zzx?0~Rf>SWBb(dbM|^A1lhzrc$VL*|r4oCIRxq zh$6xHv%Q~jgt%A%g*-oTH;XCCrr2y4!rk~WfVk-O?KQx*Z#Jm2@loW3p4N3~Ow775 zz-uJ1D7-F69F^q#1RTN#;(6`#3#dxf=wx@#j84WCiqR-58+MB~Bv3lS{!dq=A{$Bl zpkciH@E_N*dAkH2xnG(rq_QgsKMC4!bz6tUmrQq1(INEEwT5gf9&j}AsBa^SFUIv$ z96vmUPVu*UPjM1vL&8o@uf+MTQ{lB;rDY&*-$e zTeT=YJu`D=^&Pny>$Hy`f6sx8TCoWm_2Va)Ba<@PdFI1kJn7j{mg-LR@NE9DeaCIk zO3i#R7@8BN0%QOnuwSzq{TOq|mDLAox;e5TShdwZ#*PHFy`C5%Lau5rI;ue=bkLn~ z(8F4E`F!9p%s~=sEPh@|j~Baz%&!mE@@KB#fMJmA%EV{JE_UH`p+P>11YWyzM=t|s z#jnd$cMWjaIZE&(C|6}-{nh8ooykqxbB<|3!l!k@uzweK0*n3UbyeHhuPvRITe`*Ar^#*L{ zz}ZyKNc=QdBC`nRCC$sp9$4OH)W>auFTjibA-fCxiO46$fDyMJWjGUeKx;}s&%OyA zS@fk=(Umtnkle$~5Dea1%Q7#zg7EcBmG!5jQmn5T-%ZZBCyOz*+5Q-BKHl07+6qCv z$v+h+`)?u5jb0&EDEsge?cS8dVy*8X9IY=Px?GX1_b{nd`TI+4T4V2OjE9rTwA@fh zI=07k!0>-f-*VvDJB@JBunn1sJNoMZl(e9o_MM;$x1PPr*JG{&V)ML;8#eFOcJ%1@l|BY*&RRV&Uc2=t|29bMgI!^Sv|uG{MKU01 zaDg27Y2NRal~IhL8fseI*8HYzh+F~7@w{`Q+Bk5ZxY8om5=V}6_d8n$2l+Vp@5|YR z(EM43&vB-?*4I4Yt~?#C^cj4ZYRLRnJ10#?C;!;(b#OJ%#URv#J&z*-%0bvUd7K^S zF^%`5J09$JkoAk(+}g8p28Bz;3Qa^~GNuB_>mEZZ(b%!fLDaSoHg;^SK^9MQv|>=L zRB~?ehjlyN0xyJrb!~&!ocOL|Sk()1dF!_kZv4J<9O3a)>KSuQ&qFJOex!T<%%zr` zlbGRz0&32SZ~1KB$<4e(-l6<6!k)Jn=4!BojS+ZD5kDy;$jMpc*OAi6i?yRwdr8=@ zVmY7n!SjdEj~6045oXTlUZJsuh_XuiXX5O02hX-K6JJ()uQmg$)}|o;pPiM9b5aVi`^6cO8k3K2aFRXQtd0;&~qNKI-}lDfkvnS;0g9|MkNPj1W;} zBgkUIQl1GS+`vlVFbO|?zom=_+Jw$BiiZrxQDwh5{BGvnsvGz3;|GTZERjMl8q5VF zQJ1G2K=o#N$c5!>g9i`rX?rYJVfFnZzn8mWP{q0f$x^$S{#Z^5)WC}7ap_I<^!{nN z#bCa!Y<1m6rl2R#{x2HI>xYwxz6{MKYn{%5=On0Bo)Z~Jem#8j-~25%sE?b=nyQa$ zk|f0AOZRVg2HU*%*N#|1Db85Y|Iu@NruAFF;O~*$RcYr>1hTVwtykSa`aZz5(P%x-_X{ey2=R6I z7;R$u+fK_I^(9B4L8Xp@mGa7bG&Rmd)61L@~df${R zM|%1FnWc=k5LB%vY03szG)cGS1rHBEe%#vDc0$~X@JVZrg{3y{tVL|(`t+)mWz!k zhjH!tAG1)ii`ObVGkJsj57N)Cc5T4?r!>~C-y7n>T9gz zHC?Of#}8U&dg2*h5kN8fL;H=v#&Q)Q(S=gi_9If#*8S6r!a_XnCRlrWdryU1tle<> zyBW8QlmI2NkHfC1E(>mI6{eB&9rQ`}i0C&vKodxHZrSqX-b+I#Xvvq?(!vdC|GcuI z56RnJj5Z>Q>NshQ&s+t6wglSG-~1v$jwZ=cN?O`!)u2*C-OMZ(N1ZyN(=R=p4sxqU z#Kg_3htEd`1_vi0wel+R8_ts+CuwPEWFJF>)pOiwAClDlwxiV9gZd3_Kx8u28iZDN zaj&{+Ypl6VUh5|6ekP`zzn4&oIS#Vm9H4xTGPO4IT|JqV?e9QlvoITNQQFOU*U{YP zX_&jK<2d||{psqBo6}Or(O^eN)29!wtV?sk%fg`YKU6=5iVRXxQc%@vcx>z^ME#*A zdwY9%6_u>MK>L)kGIkKM_2x#=tzpB$9j%C5#q9L#Z0yrt*I9$k2^WwRp`saN$dcLJ zgHvyYoB?qfKF7OI^JtdrXjqP=thGS4Y!X(}VuWY_es}EHgD?^v-SqQltG2U4sEP?q z8_1@R5^2eiFJ_Z6Hz!BL&W_FA!6AnHV^LI6Qpm~*sIR1?)b)RVx$Ddi-M0WuL}St0 zMM+3z7#tjYqw>AE<@$O7$jE7BWq&KeO?qg5cKBf^*_ewWv$#3%NhM5Mv3A1}Ddw*r zX$;aTAtB-7LZ(WS$Jb_TEPetuoP$Olt`hB?LhqTIlx`VWST^9;*rvGaQ~9-1gk5(Q zR7}?;?ax+Y))an((;oBn?PH@0I{ne69%~?X9q23_{x%w*Kwn(Xdd>4&_N@bj1X~n+}De{XzsDgb!h^V-Pxw(e+U0(Y%2Y zdUIy&V*&SdJU`~wZe_ixxqR6KyQ!t;uFFBmws0yPdTHV5()=5VkPKl2&e>~*;H_Ih zwUw2XkUupC5iuN>B_~sjO-x8BfwBcG#&4Ck7*^VXh;EMhVq!;ck|T7VA(6Y_X_z7w>J98D$T!5GO1g}xR|5q~OpNZq+{`)Y?_BZXryN-cI5#q~HU=1^ zw>h>azNqg`F%c?AJ9?D63di5H5;EMogBs0gZ!X7D6v?wLWh4WX*Y3Y2$T6)|F!~)h)_kdRYl!2U3BU0b1$B@{(3u3&Ct1uaBTN#!F8+hK zn@b#2`}pB_lUfSmI1Wb6PI}O~E=mLLx_w|dbQ<-uGI+ z*1DX)djY2qAiKh# z=Z`-3BmiQvt6i$Zm}%jC7eXgGwgfkS?#xZt;jfxlG|LG3`}^&riOE20awhFsC5O6s zsQh)-o88mmv(~Wq_z_Msl)Bp*$+Vjkjv0NM`!lPm$s_Eu_dXSL9k-)(GbsE*LaQwq z!u0iex1*IJv}8Pm)E!7UaC1^@a!3qj2Icv#GI2hZ=jXrLyC86)9fP*9aMR%au+0G- zvDoBcLrTAqr{K;)7!-A+#%CauV*K;WQ}NzD`gypw(mXcDgO_!Wp-H;E;r*-m5;Qh3 zX|=9;!p~0`DR~=;NnThCxqtTGEsAJrQWkwL7!|m-|58?-=Da!F<$DVLd9r*T2j|$b zAWtYhNPZd*60K-&5iCUB-bZ&ep&`*ea=%5%*k2iR7Ckuk%)+asEW^;|06CoZ7w~Ag zpGB087$Gs%l+IC0m^KyR_^f)Yp_XmUk{p^Ej$TDfb!daKRn>D;iNM*X7K9!*skY+- zXY^U;rrX)F5K8zmWEl6%a6>$!QzEk`HK44idmy%Iv6DqNinqR%yDJUqSw~j1^hK4@%bb-5$>xV1- zyJfQ34;K0?+z#Fx3tX`RTz*(U|)PZAX6{s9fXTo9bA(RQqI-wrPRZQ9n<)Y!Y_@O=myPVjr~5e^gb)2B6%ih`T#qZEfuk zq`v~l_?-(ly*{|Py?zDl12I@xW9K4zY;Iy?v{ec!D=A4vw5oOH^~aB!hmBTf6b6dX zNmZQJEPCuW$efs1l^jCQLJxI;Obm8?tF!;D$H*2!wiS@5n8Pkt%A+sEg&o)o6pw_% z31Vh~$f`VFTbP->G1g#=8@t*mS6D5b-4%Tq*9-|Mf6BszQi7zFXXbV;Ja4K|Ib$C{ z5`u_3KHpt+G^)SNSG$$dH^TNx{i87i?N)C04i0wKY^2_o9aV#H0CZNpjZ_cjzeh)z zCXW%@+iJ$f^qjIGqr;qGxkDSF)ch(Qm%CLT<>kNq)z!Ik=Z;jL2~>uJ#FRH?7$5)o zLNV)xRm8I!1?xc5@S}!?dF^9x`2vyzLUFtH+|t@w+}*ua2U1;UZaVbz_Nu>sf6pg= z>lG6dBKNVE9Ra%g3RhIiEu9!3-1$krV>5B ziII`-BRj8n;J$d2oHTI`-4C}8Ws-R#k*7L$U|z?O+;%Hsnd?yquj65fnaC#+obbW8 z|MZs#ry6$EdRf#i2C1%6{v%_av1}EJy-{#)ri_k^OsO{hB?d$s95{eakm~i~1bq%i z`+}oe(I>t+`S}Js^NvK}FyZi-8I6Xk5owlpPEK5Td3ir6*dn357VAiNyHQ!5wAxw< zk%A9o1`0?nS%dlk2HC_fq`ICDYHDh1YqS&`Yo;-Lj*lIuF3wB7w(2=LLE9;zxh?BP zyWn}$-)COAP5(qt5Rx^OPY*$2xPk&k@Jp*6FjUFU&;KAuOa`QN!0f?02!NDP>gC1> z-UBGTdK!IPXu-`XEc{x)_?$;$&X$JXnbDg1o5km9Z#z3XI6_xfmqlCnqX1<5&F$?G zO(P{OkoE-gIdmZi6ZC{-3-XXc1i{_S+q*FpBPPXnl^3D`H}-8*N&^!D*<2R7cWP*zIx&mC9S-#Oe;tH&fKt7-7ke*|ArWB=2d`^7;$CtRu|dPoQ64de zoBH0JZqCuZ)$J)&xF$Bh#=%Dh&0cCAYbq!lV$&K6gaij4TS1t;HTs33zkT&%4yzf? zD}*k(rP^*)UO@r;4Dkmo_pMAof87S+PYTF)TFi0W&O2%l@wud=mrcA4p>;@%xK#_` z5J;aI&uRAX`lPB!4-)JpG9Gnr?d*toc<@7FWg=$~AgoHcQJ;#7`+Lt76)~ea39@Ty z)OkMb?(U9o=tFiqJ7^_nE>EkMAx>9;rneAybs%bVF?V$z8*rqF74zi;DzX z5j?0?pnT#%*sZ{X57!TSl?|6Vm~@Mh27deFY2;n{_}4G+iZUm~#*$=e)A%TQ35cc< zLeBDsrBv&k?$Fj~HX`fjXi#`kVIF&I<0uWBX(jlod@&p)E=4ii|KE(F^dz z+`^(2lEPmI0Kiiwo~ZC}{OIWDA9;B=93}%}y-*Yqg#K?cdZ)bXTz3e`x0~1O({gj~ zeaKeK(}BW*B{wAnB_(t$^VDm$!YrzzoHS1(^yw1>jN#{VX4&>}*QT5*Lb(1Q6zbgm{!~#`{_1sk zl2%hg4#5xz>r7SIz##9l{rl&AE-9QXYkXqj?Iat8Ee9VEdy

3Yc6H=Zt(1 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 Date: Tue, 5 Apr 2016 17:54:07 -0400 Subject: [PATCH 08/11] Automatic changelog generation for PR #4097 --- html/changelogs/AutoChangeLog-pr-4097.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4097.yml diff --git a/html/changelogs/AutoChangeLog-pr-4097.yml b/html/changelogs/AutoChangeLog-pr-4097.yml new file mode 100644 index 00000000000..2fd1635f900 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4097.yml @@ -0,0 +1,5 @@ +author: Tastyfish +delete-after: True +changes: + - tweak: "Beepsky is no longer a pokemon." + - tweak: "pAI-controlled Bots now reliably speak human-understandable languages over the radio." From d20d47d734ad9a63f0f51276e6899ea31371d7e1 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Tue, 5 Apr 2016 18:34:36 -0400 Subject: [PATCH 09/11] Automatic changelog generation for PR #4095 --- html/changelogs/AutoChangeLog-pr-4095.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4095.yml diff --git a/html/changelogs/AutoChangeLog-pr-4095.yml b/html/changelogs/AutoChangeLog-pr-4095.yml new file mode 100644 index 00000000000..35d1abdf256 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4095.yml @@ -0,0 +1,7 @@ +author: Fox McCloud +delete-after: True +changes: + - rscadd: "Can spawn friendly animals with a new gold core reaction by injection with water" + - tweak: "Hostile animal spawn increased from 3 to 5 for hostile gold cores" + - tweak: "Swarmers, revenants, and morphs no longer gold core spawnable" + - bugfix: "Fixes invisible animal spawns from gold core/life reactions" From c2d999e730b9b83c72c5cfd36dabb5a80d748cbf Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Tue, 5 Apr 2016 18:34:42 -0400 Subject: [PATCH 10/11] Automatic changelog generation for PR #4096 --- html/changelogs/AutoChangeLog-pr-4096.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4096.yml diff --git a/html/changelogs/AutoChangeLog-pr-4096.yml b/html/changelogs/AutoChangeLog-pr-4096.yml new file mode 100644 index 00000000000..9b8e42710d2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4096.yml @@ -0,0 +1,4 @@ +author: Fox McCloud +delete-after: True +changes: + - rscadd: "Adds tape to the ArtVend" From 3d4e85f3e624b394e0479560dcafacf91a7ead04 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Tue, 5 Apr 2016 18:37:58 -0400 Subject: [PATCH 11/11] Automatic changelog generation for PR #4100 --- html/changelogs/AutoChangeLog-pr-4100.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4100.yml diff --git a/html/changelogs/AutoChangeLog-pr-4100.yml b/html/changelogs/AutoChangeLog-pr-4100.yml new file mode 100644 index 00000000000..783667ec9bb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4100.yml @@ -0,0 +1,4 @@ +author: Fox McCloud +delete-after: True +changes: + - tweak: "Can no longer use sentience potions on bots"