From 8d328777b7e973098e5bed40d6ca9092b1ba1abf Mon Sep 17 00:00:00 2001 From: Mechoid Date: Sat, 2 May 2020 15:49:33 -0700 Subject: [PATCH] I love BYOND RNG, it is perfect and 100% reliable for testing. --- code/game/objects/random/mob.dm | 129 ++++++++++++++++++++ code/game/turfs/simulated/outdoors/grass.dm | 13 ++ 2 files changed, 142 insertions(+) diff --git a/code/game/objects/random/mob.dm b/code/game/objects/random/mob.dm index 966498a2bd2..0df1dd2afef 100644 --- a/code/game/objects/random/mob.dm +++ b/code/game/objects/random/mob.dm @@ -203,3 +203,132 @@ prob(30);/mob/living/simple_mob/animal/passive/mouse/brown, prob(30);/mob/living/simple_mob/animal/passive/mouse/gray, prob(25);/obj/random/mouseremains) //because figuring out how to come up with it picking nothing is beyond my coding ability. +<<<<<<< HEAD +======= + +// Mercs +/obj/random/mob/merc + name = "Random Mercenary" + desc = "This is a random PoI mercenary." + icon_state = "syndicate" + + mob_faction = "syndicate" + mob_returns_home = 1 + mob_wander_distance = 7 // People like to wander, and these people probably have a lot of stuff to guard. + +/obj/random/mob/merc/item_to_spawn() + return pick(prob(60);/mob/living/simple_mob/humanoid/merc/melee/poi, + prob(40);/mob/living/simple_mob/humanoid/merc/melee/sword/poi, + prob(40);/mob/living/simple_mob/humanoid/merc/ranged/poi, + prob(30);/mob/living/simple_mob/humanoid/merc/ranged/smg/poi, + prob(20);/mob/living/simple_mob/humanoid/merc/ranged/laser/poi, + prob(5);/mob/living/simple_mob/humanoid/merc/ranged/ionrifle/poi, + prob(10);/mob/living/simple_mob/humanoid/merc/ranged/grenadier/poi, + prob(10);/mob/living/simple_mob/humanoid/merc/ranged/rifle/poi, + prob(15);/mob/living/simple_mob/humanoid/merc/ranged/rifle/mag/poi, + prob(10);/mob/living/simple_mob/humanoid/merc/ranged/technician/poi + ) + +/obj/random/mob/merc/armored + name = "Random Armored Infantry Merc" + desc = "This is a random PoI exo or robot for mercs." + icon_state = "drone3" + +/obj/random/mob/merc/armored/item_to_spawn() + return pick(prob(30);/mob/living/simple_mob/mechanical/mecha/combat/gygax/dark, + prob(40);/mob/living/simple_mob/mechanical/mecha/combat/gygax/medgax, + prob(40);/mob/living/simple_mob/mechanical/mecha/combat/gygax, + prob(10);/mob/living/simple_mob/mechanical/mecha/combat/durand/defensive/mercenary, + prob(60);/mob/living/simple_mob/mechanical/mecha/hoverpod/manned, + prob(5);/mob/living/simple_mob/mechanical/mecha/combat/marauder, + prob(1);/mob/living/simple_mob/mechanical/mecha/combat/marauder/seraph, + prob(15);/mob/living/simple_mob/mechanical/mecha/odysseus/manned, + prob(15);/mob/living/simple_mob/mechanical/mecha/odysseus/murdysseus/manned, + prob(60);/mob/living/simple_mob/mechanical/mecha/ripley/manned + ) + +/obj/random/mob/merc/all + name = "Random Mercenary All" + desc = "A random PoI mercenary, including armored." + +/obj/random/mob/merc/all/item_to_spawn() + return pick(prob(20);/obj/random/mob/merc, + prob(1);/obj/random/mob/merc/armored + ) + +// Multiple mobs, one spawner. +/obj/random/mob/multiple + name = "Random Multiple Mob Spawner" + desc = "A base multiple-mob spawner. Takes lists of lists." + +/obj/random/mob/multiple/spawn_item() + var/list/things_to_make = item_to_spawn() + + for(var/new_type in things_to_make) + + var/mob/living/simple_mob/M = new new_type(src.loc) + + if(!istype(M)) + continue + + if(M.has_AI()) + var/datum/ai_holder/AI = M.ai_holder + AI.go_sleep() //Don't fight eachother while we're still setting up! + AI.returns_home = mob_returns_home + AI.wander = mob_wander + AI.max_home_distance = mob_wander_distance + if(overwrite_hostility) + AI.hostile = mob_hostile + AI.retaliate = mob_retaliate + AI.go_wake() //Now you can kill eachother if your faction didn't override. + + if(pixel_x || pixel_y) + M.pixel_x = pixel_x + M.pixel_y = pixel_y + +/obj/random/mob/multiple/sifmobs + name = "Random Sifmob Pack" + desc = "A pack of random neutral sif mobs." + +/obj/random/mob/multiple/sifmobs/item_to_spawn() + return pick( + prob(60);list( + /mob/living/simple_mob/animal/sif/diyaab, + /mob/living/simple_mob/animal/sif/diyaab, + /mob/living/simple_mob/animal/sif/diyaab + ), + prob(15);list( + /mob/living/simple_mob/animal/sif/duck, + /mob/living/simple_mob/animal/sif/duck, + /mob/living/simple_mob/animal/sif/duck + ), + prob(10);list( + /mob/living/simple_mob/animal/sif/shantak/retaliate, + /mob/living/simple_mob/animal/sif/shantak/retaliate, + /mob/living/simple_mob/animal/sif/shantak/retaliate, + /mob/living/simple_mob/animal/sif/shantak/leader/autofollow/retaliate + ), + prob(5);list( + /mob/living/simple_mob/animal/sif/kururak/leader, + /mob/living/simple_mob/animal/sif/kururak, + /mob/living/simple_mob/animal/sif/kururak + ), + prob(5);list( + /mob/living/simple_mob/animal/sif/glitterfly, + /mob/living/simple_mob/animal/sif/glitterfly, + /mob/living/simple_mob/animal/sif/glitterfly, + /mob/living/simple_mob/animal/sif/glitterfly, + /mob/living/simple_mob/animal/sif/glitterfly + ), + prob(1);list( + /mob/living/simple_mob/animal/goat, + /mob/living/simple_mob/animal/goat + ), + prob(1);list( + /mob/living/simple_mob/animal/sif/sakimm/intelligent, + /mob/living/simple_mob/animal/sif/sakimm, + /mob/living/simple_mob/animal/sif/sakimm, + /mob/living/simple_mob/animal/sif/sakimm + ) + ) +>>>>>>> 7d52c30... I love BYOND RNG, it is perfect and 100% reliable for testing. (#7070) diff --git a/code/game/turfs/simulated/outdoors/grass.dm b/code/game/turfs/simulated/outdoors/grass.dm index e557fb16da0..4593876ab9a 100644 --- a/code/game/turfs/simulated/outdoors/grass.dm +++ b/code/game/turfs/simulated/outdoors/grass.dm @@ -32,6 +32,19 @@ var/list/grass_types = list( grass_chance = 5 var/tree_chance = 2 +<<<<<<< HEAD +======= + animal_chance = 0.5 + + animal_types = list( + /mob/living/simple_mob/animal/sif/diyaab = 10, + /mob/living/simple_mob/animal/sif/glitterfly = 2, + /mob/living/simple_mob/animal/sif/duck = 2, + /mob/living/simple_mob/animal/sif/shantak/retaliate = 2, + /obj/random/mob/multiple/sifmobs = 1 + ) + +>>>>>>> 7d52c30... I love BYOND RNG, it is perfect and 100% reliable for testing. (#7070) grass_types = list( /obj/structure/flora/sif/eyes = 1, /obj/structure/flora/sif/tendrils = 10