diff --git a/code/modules/mob/living/simple_animal/hostile/survivors.dm b/code/modules/mob/living/simple_animal/hostile/survivors.dm index d5759431d65a..2f9837c4b1cb 100644 --- a/code/modules/mob/living/simple_animal/hostile/survivors.dm +++ b/code/modules/mob/living/simple_animal/hostile/survivors.dm @@ -44,11 +44,15 @@ /mob/living/simple_animal/hostile/asteroid/whitesands/survivor name = "Hermit Wanderer" desc =" A wild-eyed figure, wearing tattered mining equipment and boasting a malformed body, twisted by the heavy metals and high background radiation of the sandworlds." + loot = list( + /obj/effect/mob_spawn/human/corpse/damaged/whitesands/survivor + ) /mob/living/simple_animal/hostile/asteroid/whitesands/survivor/random/Initialize() . = ..() if(prob(35)) new /mob/living/simple_animal/hostile/asteroid/whitesands/ranged/hunter(loc) + return INITIALIZE_HINT_QDEL if(prob(10)) new /mob/living/simple_animal/hostile/asteroid/whitesands/ranged/gunslinger(loc) return INITIALIZE_HINT_QDEL @@ -88,6 +92,12 @@ //survivor corpses /obj/effect/mob_spawn/human/corpse/damaged/whitesands + uniform = /obj/item/clothing/under/color/random + belt = /obj/item/storage/belt/fannypack + shoes = /obj/item/clothing/shoes/workboots/mining + suit = /obj/item/clothing/suit/hooded/survivor + l_pocket = /obj/item/radio + r_pocket = /obj/item/tank/internals/emergency_oxygen/engi var/survivor_type //room for alternatives inside the fuckoff grade init. /obj/effect/mob_spawn/human/corpse/damaged/whitesands/Initialize() //everything here should equal out to 100 for the sake of my sanity. @@ -102,88 +112,6 @@ ) ) //to-do: learn how to make mobsprites for other survivors - //uniforms are random to show varied backgrounds, but similar goal - if(survivor_type == "survivor") - uniform = pickweight(list( - /obj/item/clothing/under/color/random = 65, - /obj/item/clothing/under/rank/cargo/miner/lavaland = 10, - /obj/item/clothing/under/rank/prisoner = 10, - /obj/item/clothing/under/rank/cargo/miner/lavaland/old = 5, - /obj/item/clothing/under/color/khaki/buster = 5, - /obj/item/clothing/under/rank/cargo/miner = 5 - ) - ) - else if (survivor_type == "hunter") - uniform = pickweight(list( - /obj/item/clothing/under/color/random = 50, - /obj/item/clothing/under/rank/cargo/miner/lavaland = 25, - /obj/item/clothing/under/rank/cargo/miner/lavaland/old = 15, - /obj/item/clothing/under/rank/security/officer/camo = 5, - /obj/item/clothing/under/utility = 5 - ) - ) - else if (survivor_type == "gunslinger") - uniform = pickweight(list( - /obj/item/clothing/under/rank/cargo/miner/lavaland = 35, - /obj/item/clothing/under/color/random = 25, - /obj/item/clothing/under/rank/cargo/miner/lavaland/old = 15, - /obj/item/clothing/under/rank/security/officer/camo = 10, - /obj/item/clothing/under/syndicate/camo = 10, - /obj/item/clothing/under/syndicate/combat = 5 - ) - ) - else - uniform = /obj/item/clothing/under/color/random - - //storage is semi-randomized, giving some variety - if(survivor_type == "survivor") - belt = pickweight(list( - /obj/item/storage/belt/fannypack = 40, - /obj/item/storage/belt/mining = 20, - /obj/item/storage/belt/mining/alt = 15, - /obj/item/storage/belt/utility = 10, - /obj/item/storage/belt/bandolier = 9, - /obj/item/storage/belt/utility/full = 5, - /obj/item/storage/belt/chameleon= 1, - ) - ) - else if(survivor_type == "hunter") - belt = pickweight(list( - /obj/item/storage/belt/mining = 30, - /obj/item/storage/belt/fannypack = 20, - /obj/item/storage/belt/mining/alt = 15, - /obj/item/storage/belt/mining/primitive = 15, - /obj/item/storage/belt/bandolier = 10, - /obj/item/storage/belt/military = 7, - /obj/item/storage/belt/mining/vendor = 3, - ) - ) - else if(survivor_type == "gunslinger") - belt = pickweight(list( - /obj/item/storage/belt/mining = 30, - /obj/item/storage/belt/bandolier = 30, - /obj/item/storage/belt/military = 20, - /obj/item/storage/belt/fannypack = 15, - /obj/item/storage/belt/mining/alt = 5, - /obj/item/storage/belt/mining/primitive = 5 - ) - ) - else - belt = /obj/item/storage/belt/fannypack - - //everyone wears the same suit - suit = /obj/item/clothing/suit/hooded/survivor - - if (survivor_type == "gunslinger") - if(prob(30)) - shoes = /obj/item/clothing/shoes/combat //but sometimes there are nicer shoes - else - shoes = /obj/item/clothing/shoes/workboots/mining - else - shoes = /obj/item/clothing/shoes/workboots/mining - - - //gloves are a tossup gloves = pickweight(list( @@ -260,35 +188,6 @@ if(prob(30)) //some pens maybe? backpack_contents += /obj/item/reagent_containers/hypospray/medipen/survival - //pockets - if(survivor_type == "survivor") //could also use fleshing out - if(prob(30)) - l_pocket = /obj/item/reagent_containers/food/snacks/meat/steak/goliath - else - l_pocket = /obj/item/tank/internals/emergency_oxygen/engi - if (prob(20)) - r_pocket = /obj/item/spacecash/bundle/mediumrand - else - r_pocket = null - - if(survivor_type == "hunter") - l_pocket = /obj/item/tank/internals/emergency_oxygen/engi - if (prob(20)) - r_pocket = /obj/item/reagent_containers/food/snacks/meat/steak/goliath - else if (prob(60)) - r_pocket = /obj/item/ammo_box/aac_300blk_stripper - else - r_pocket = null - - if(survivor_type == "gunslinger") - if(prob(50)) - l_pocket = /obj/item/ammo_box/magazine/skm_545_39 - r_pocket = /obj/item/tank/internals/emergency_oxygen/engi - - else - r_pocket = /obj/item/tank/internals/emergency_oxygen/engi - l_pocket = /obj/item/radio - //masks mask = pickweight(list( /obj/item/clothing/mask/gas = 40, @@ -298,7 +197,7 @@ ) ) - //the eyes are the window into the soul. I don't think these things have souls but whatever. + //the eyes are the window into the soul. if(prob(70)) glasses = pickweight(list( /obj/item/clothing/glasses/heat = 20, @@ -307,8 +206,6 @@ /obj/item/clothing/glasses = 20 ) ) - else - glasses = null //and of course, ears. if(prob(1)) //oh my god they can't hear the sandstorm coming they've got airpods in @@ -319,21 +216,91 @@ /obj/item/radio/headset/alt = 50 ) ) + //now for the fun stuff + switch(survivor_type) + if("survivor") + //uniforms are random to show varied backgrounds, but similar goal + uniform = pickweight(list( + /obj/item/clothing/under/color/random = 65, + /obj/item/clothing/under/rank/cargo/miner/lavaland = 10, + /obj/item/clothing/under/rank/prisoner = 10, + /obj/item/clothing/under/rank/cargo/miner/lavaland/old = 5, + /obj/item/clothing/under/color/khaki/buster = 5, + /obj/item/clothing/under/rank/cargo/miner = 5 + ) + ) + //storage is semi-randomized, giving some variety + belt = pickweight(list( + /obj/item/storage/belt/fannypack = 40, + /obj/item/storage/belt/mining = 20, + /obj/item/storage/belt/mining/alt = 15, + /obj/item/storage/belt/utility = 10, + /obj/item/storage/belt/bandolier = 9, + /obj/item/storage/belt/utility/full = 5, + /obj/item/storage/belt/chameleon= 1, + ) + ) + if(prob(30)) + l_pocket = /obj/item/reagent_containers/food/snacks/meat/steak/goliath + if(prob(20)) + r_pocket = /obj/item/spacecash/bundle/smallrand + + if("hunter") + uniform = pickweight(list( + /obj/item/clothing/under/color/random = 50, + /obj/item/clothing/under/rank/cargo/miner/lavaland = 25, + /obj/item/clothing/under/rank/cargo/miner/lavaland/old = 15, + /obj/item/clothing/under/rank/security/officer/camo = 5, + /obj/item/clothing/under/utility = 5 + ) + ) + belt = pickweight(list( + /obj/item/storage/belt/mining = 30, + /obj/item/storage/belt/fannypack = 20, + /obj/item/storage/belt/mining/alt = 15, + /obj/item/storage/belt/mining/primitive = 15, + /obj/item/storage/belt/bandolier = 10, + /obj/item/storage/belt/military = 7, + /obj/item/storage/belt/mining/vendor = 3, + ) + ) + if(prob(20)) + l_pocket = /obj/item/reagent_containers/food/snacks/meat/steak/goliath + else if(prob(60)) + l_pocket = /obj/item/ammo_box/aac_300blk_stripper + if(prob(20)) + new /obj/item/gun/ballistic/rifle/polymer(loc) + else + visible_message(span_warning("The hunter's weapon shatters as they impact the ground!")) + + if("gunslinger") + uniform = pickweight(list( + /obj/item/clothing/under/rank/cargo/miner/lavaland = 35, + /obj/item/clothing/under/color/random = 25, + /obj/item/clothing/under/rank/cargo/miner/lavaland/old = 15, + /obj/item/clothing/under/rank/security/officer/camo = 10, + /obj/item/clothing/under/syndicate/camo = 10, + /obj/item/clothing/under/syndicate/combat = 5 + ) + ) + belt = pickweight(list( + /obj/item/storage/belt/mining = 30, + /obj/item/storage/belt/bandolier = 30, + /obj/item/storage/belt/military = 20, + /obj/item/storage/belt/fannypack = 15, + /obj/item/storage/belt/mining/alt = 5, + /obj/item/storage/belt/mining/primitive = 5 + ) + ) + if(prob(30)) + shoes = /obj/item/clothing/shoes/combat //sometimes there are nicer shoes + if(prob(50)) + l_pocket = /obj/item/ammo_box/magazine/skm_545_39 + if(prob(20)) + new /obj/item/gun/ballistic/automatic/smg/skm_carbine(loc) + else + visible_message(span_warning("The gunslinger's weapon shatters as they impact the ground!")) - //exosuit bits - suit_store = null - if (survivor_type == "hunter") - if(prob(20)) - new /obj/item/gun/ballistic/rifle/polymer(loc) - else - visible_message("The hunter's weapon shatters as they impact the ground!") - suit_store = null - if(survivor_type == "gunslinger") - if(prob(20)) - new /obj/item/gun/ballistic/automatic/smg/skm_carbine(loc) - else - visible_message("The gunslinger's weapon shatters as they impact the ground!") - suit_store = null . = ..()