diff --git a/code/game/objects/random/random.dm b/code/game/objects/random/random.dm index 6b44dd5798..65fb378b72 100644 --- a/code/game/objects/random/random.dm +++ b/code/game/objects/random/random.dm @@ -1520,6 +1520,15 @@ var/list/multi_point_spawns icon = 'icons/mob/animal.dmi' icon_state = "chicken_white" + var/overwrite_hostility = 0 + + var/mob_faction = null + var/mob_returns_home = 0 + var/mob_wander = 1 + var/mob_wander_distance = 3 + var/mob_hostile = 0 + var/mob_retaliate = 0 + /obj/random/mob/item_to_spawn() return pick(prob(10);/mob/living/simple_animal/lizard, prob(6);/mob/living/simple_animal/retaliate/diyaab, @@ -1540,11 +1549,33 @@ var/list/multi_point_spawns prob(3);/mob/living/simple_animal/parrot, prob(1);/mob/living/simple_animal/giant_crab) +/obj/random/mob/spawn_item() //These should only ever have simple mobs. + var/build_path = item_to_spawn() + + var/mob/living/simple_animal/M = new build_path(src.loc) + M.ai_inactive = 1 //Don't fight eachother while we're still setting up! + if(mob_faction) + M.faction = mob_faction + M.returns_home = mob_returns_home + M.wander = mob_wander + M.wander_distance = mob_wander_distance + if(overwrite_hostility) + M.hostile = mob_hostile + M.retaliate = mob_retaliate + M.ai_inactive = 0 //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/sif name = "Random Sif Animal" desc = "This is a random cold weather animal." icon_state = "penguin" + mob_returns_home = 1 + mob_wander_distance = 10 + /obj/random/mob/sif/item_to_spawn() return pick(prob(30);/mob/living/simple_animal/retaliate/diyaab, prob(15);/mob/living/simple_animal/crab, @@ -1566,10 +1597,13 @@ var/list/multi_point_spawns prob(45);/mob/living/simple_animal/hostile/shantak) /obj/random/mob/spider - name = "Random Spider" + name = "Random Spider" //Spiders should patrol where they spawn. desc = "This is a random boring spider." icon_state = "guard" + mob_returns_home = 1 + mob_wander_distance = 4 + /obj/random/mob/spider/item_to_spawn() return pick(prob(22);/mob/living/simple_animal/hostile/giant_spider/nurse, prob(33);/mob/living/simple_animal/hostile/giant_spider/hunter, @@ -1597,6 +1631,15 @@ var/list/multi_point_spawns desc = "This is a random robot." icon_state = "drone_dead" + overwrite_hostility = 1 + + mob_faction = "malf_drone" + mob_returns_home = 1 + mob_wander = 1 + mob_wander_distance = 5 + mob_hostile = 1 + mob_retaliate = 1 + /obj/random/mob/robotic/item_to_spawn() //Hivebots have a total number of 'lots' equal to the lesser drone, at 60. return pick(prob(60);/mob/living/simple_animal/hostile/malf_drone/lesser, prob(50);/mob/living/simple_animal/hostile/malf_drone, @@ -1615,6 +1658,8 @@ var/list/multi_point_spawns desc = "This is a random hivebot." icon_state = "drone3" + mob_faction = "hivebot" + /obj/random/mob/robotic/hivebot/item_to_spawn() return pick(prob(10);/mob/living/simple_animal/hostile/hivebot, prob(15);/mob/living/simple_animal/hostile/hivebot/swarm,