mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-01-29 02:13:12 +00:00
Added a new maint pred ghostpod for redgates. I have added two of these to redgates that I made only (for now). They are normal ghost pods but are always available from the start of the shift. The can be found in the find ghost pod verb and are called creature holes. Made a lot more mobs in my own redgate maps ghost joinable. Generally one of each type of mod that isn't a humanoid. Added a 25% chance for each mob to become ghost joinable from the semi-random vore mob spawners used in redgates. This applies to the passive and retaliate spawners only. Also made the other redgate maps available on the SD again.
421 lines
16 KiB
Plaintext
421 lines
16 KiB
Plaintext
/*
|
|
* Random Mobs
|
|
*/
|
|
|
|
/obj/random/mob
|
|
name = "Random Animal"
|
|
desc = "This is a random animal."
|
|
icon_state = "animal"
|
|
|
|
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
|
|
var/mob_ghostjoin = 0 //Should be a number between 0 and 100, dictates the probability of that mob being ghost joinable.
|
|
|
|
/obj/random/mob/item_to_spawn()
|
|
return pick(prob(10);/mob/living/simple_mob/animal/passive/lizard,
|
|
prob(6);/mob/living/simple_mob/animal/sif/diyaab,
|
|
prob(10);/mob/living/simple_mob/animal/passive/cat,
|
|
prob(6);/mob/living/simple_mob/animal/passive/cat,
|
|
prob(10);/mob/living/simple_mob/animal/passive/dog/corgi,
|
|
prob(6);/mob/living/simple_mob/animal/passive/dog/corgi/puppy,
|
|
prob(10);/mob/living/simple_mob/animal/passive/crab,
|
|
prob(10);/mob/living/simple_mob/animal/passive/chicken,
|
|
prob(6);/mob/living/simple_mob/animal/passive/chick,
|
|
prob(10);/mob/living/simple_mob/animal/passive/cow,
|
|
prob(6);/mob/living/simple_mob/animal/goat,
|
|
prob(10);/mob/living/simple_mob/animal/passive/penguin,
|
|
prob(10);/mob/living/simple_mob/animal/passive/mouse,
|
|
prob(10);/mob/living/simple_mob/animal/passive/yithian,
|
|
prob(10);/mob/living/simple_mob/animal/passive/tindalos,
|
|
prob(10);/mob/living/simple_mob/animal/passive/pillbug,
|
|
prob(10);/mob/living/simple_mob/animal/passive/dog/tamaskan,
|
|
prob(10);/mob/living/simple_mob/animal/passive/dog/brittany,
|
|
prob(3);/mob/living/simple_mob/animal/passive/bird/parrot,
|
|
prob(1);/mob/living/simple_mob/animal/passive/crab)
|
|
|
|
/obj/random/mob/spawn_item() //These should only ever have simple mobs.
|
|
var/build_path = item_to_spawn()
|
|
|
|
var/mob/living/simple_mob/M = new build_path(src.loc)
|
|
if(!istype(M))
|
|
return
|
|
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
|
|
|
|
if(mob_faction)
|
|
M.faction = mob_faction
|
|
|
|
if(mob_ghostjoin)
|
|
if(prob(mob_ghostjoin))
|
|
M.ghostjoin = 1
|
|
|
|
/obj/random/mob/sif
|
|
name = "Random Sif Animal"
|
|
desc = "This is a random cold weather animal."
|
|
icon_state = "animal"
|
|
|
|
mob_returns_home = 1
|
|
mob_wander_distance = 10
|
|
|
|
/obj/random/mob/sif/item_to_spawn()
|
|
return pick(prob(30);/mob/living/simple_mob/animal/sif/diyaab,
|
|
prob(20);/mob/living/simple_mob/animal/passive/hare,
|
|
prob(15);/mob/living/simple_mob/animal/passive/crab,
|
|
prob(15);/mob/living/simple_mob/animal/passive/penguin,
|
|
prob(15);/mob/living/simple_mob/animal/passive/mouse,
|
|
prob(15);/mob/living/simple_mob/animal/passive/dog/tamaskan,
|
|
prob(10);/mob/living/simple_mob/animal/sif/siffet,
|
|
prob(2);/mob/living/simple_mob/animal/giant_spider/frost,
|
|
prob(1);/mob/living/simple_mob/animal/space/goose,
|
|
prob(20);/mob/living/simple_mob/animal/passive/crab)
|
|
|
|
|
|
/obj/random/mob/sif/peaceful
|
|
name = "Random Peaceful Sif Animal"
|
|
desc = "This is a random peaceful cold weather animal."
|
|
icon_state = "animal_passive"
|
|
|
|
mob_returns_home = 1
|
|
mob_wander_distance = 12
|
|
|
|
/obj/random/mob/sif/peaceful/item_to_spawn()
|
|
return pick(prob(30);/mob/living/simple_mob/animal/sif/diyaab,
|
|
prob(20);/mob/living/simple_mob/animal/passive/hare,
|
|
prob(15);/mob/living/simple_mob/animal/passive/crab,
|
|
prob(15);/mob/living/simple_mob/animal/passive/penguin,
|
|
prob(15);/mob/living/simple_mob/animal/passive/mouse,
|
|
prob(15);/mob/living/simple_mob/animal/passive/dog/tamaskan,
|
|
prob(20);/mob/living/simple_mob/animal/sif/hooligan_crab)
|
|
|
|
/obj/random/mob/sif/hostile
|
|
name = "Random Hostile Sif Animal"
|
|
desc = "This is a random hostile cold weather animal."
|
|
icon_state = "animal_hostile"
|
|
|
|
/obj/random/mob/sif/hostile/item_to_spawn()
|
|
return pick(prob(22);/mob/living/simple_mob/animal/sif/savik,
|
|
prob(33);/mob/living/simple_mob/animal/giant_spider/frost,
|
|
prob(20);/mob/living/simple_mob/animal/sif/frostfly,
|
|
prob(10);/mob/living/simple_mob/animal/sif/tymisian,
|
|
prob(45);/mob/living/simple_mob/animal/sif/shantak)
|
|
|
|
/obj/random/mob/sif/kururak
|
|
name = "Random Kururak"
|
|
desc = "This is a random kururak, either waking or hibernating. Will be hostile if more than one are waking."
|
|
icon_state = "frost"
|
|
|
|
/obj/random/mob/sif/kururak/item_to_spawn()
|
|
return pick(prob(1);/mob/living/simple_mob/animal/sif/kururak/hibernate,
|
|
prob(20);/mob/living/simple_mob/animal/sif/kururak)
|
|
|
|
/obj/random/mob/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(33);/mob/living/simple_mob/animal/giant_spider/hunter,
|
|
prob(45);/mob/living/simple_mob/animal/giant_spider)
|
|
|
|
/obj/random/mob/spider/nurse
|
|
name = "Random Nurse Spider"
|
|
desc = "This is a random nurse spider."
|
|
icon_state = "nurse"
|
|
|
|
mob_returns_home = 1
|
|
mob_wander_distance = 4
|
|
|
|
/obj/random/mob/spider/nurse/item_to_spawn()
|
|
return pick(prob(22);/mob/living/simple_mob/animal/giant_spider/nurse/hat,
|
|
prob(45);/mob/living/simple_mob/animal/giant_spider/nurse)
|
|
|
|
/obj/random/mob/spider/mutant
|
|
name = "Random Mutant Spider"
|
|
desc = "This is a random mutated spider."
|
|
icon_state = "phoron"
|
|
|
|
/obj/random/mob/spider/mutant/item_to_spawn()
|
|
return pick(prob(5);/obj/random/mob/spider,
|
|
prob(10);/mob/living/simple_mob/animal/giant_spider/webslinger,
|
|
prob(10);/mob/living/simple_mob/animal/giant_spider/carrier,
|
|
prob(33);/mob/living/simple_mob/animal/giant_spider/lurker,
|
|
prob(33);/mob/living/simple_mob/animal/giant_spider/tunneler,
|
|
prob(40);/mob/living/simple_mob/animal/giant_spider/pepper,
|
|
prob(20);/mob/living/simple_mob/animal/giant_spider/thermic,
|
|
prob(40);/mob/living/simple_mob/animal/giant_spider/electric,
|
|
prob(1);/mob/living/simple_mob/animal/giant_spider/phorogenic,
|
|
prob(40);/mob/living/simple_mob/animal/giant_spider/frost)
|
|
|
|
/obj/random/mob/robotic
|
|
name = "Random Robot Mob"
|
|
desc = "This is a random robot."
|
|
icon_state = "robot"
|
|
|
|
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_mob/mechanical/combat_drone/lesser,
|
|
prob(50);/mob/living/simple_mob/mechanical/combat_drone,
|
|
prob(50);/mob/living/simple_mob/mechanical/mining_drone,
|
|
prob(15);/mob/living/simple_mob/mechanical/mecha/ripley,
|
|
prob(15);/mob/living/simple_mob/mechanical/mecha/odysseus,
|
|
prob(10);/mob/living/simple_mob/mechanical/hivebot,
|
|
prob(15);/mob/living/simple_mob/mechanical/hivebot/swarm,
|
|
prob(10);/mob/living/simple_mob/mechanical/hivebot/ranged_damage,
|
|
prob(5);/mob/living/simple_mob/mechanical/hivebot/ranged_damage/rapid,
|
|
prob(5);/mob/living/simple_mob/mechanical/hivebot/ranged_damage/ion,
|
|
prob(5);/mob/living/simple_mob/mechanical/hivebot/ranged_damage/laser,
|
|
prob(5);/mob/living/simple_mob/mechanical/hivebot/ranged_damage/strong,
|
|
prob(5);/mob/living/simple_mob/mechanical/hivebot/ranged_damage/strong/guard)
|
|
|
|
/obj/random/mob/robotic/drone
|
|
name = "Random Drone"
|
|
desc = "This is a random drone."
|
|
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/drone/item_to_spawn()
|
|
return pick(prob(6);/mob/living/simple_mob/mechanical/combat_drone/lesser,
|
|
prob(1);/mob/living/simple_mob/mechanical/combat_drone,
|
|
prob(3);/mob/living/simple_mob/mechanical/mining_drone)
|
|
|
|
/obj/random/mob/robotic/hivebot
|
|
name = "Random Hivebot"
|
|
desc = "This is a random hivebot."
|
|
icon_state = "robot"
|
|
|
|
mob_faction = "hivebot"
|
|
|
|
/obj/random/mob/robotic/hivebot/item_to_spawn()
|
|
return pick(prob(10);/mob/living/simple_mob/mechanical/hivebot,
|
|
prob(15);/mob/living/simple_mob/mechanical/hivebot/swarm,
|
|
prob(10);/mob/living/simple_mob/mechanical/hivebot/ranged_damage,
|
|
prob(5);/mob/living/simple_mob/mechanical/hivebot/ranged_damage/rapid,
|
|
prob(5);/mob/living/simple_mob/mechanical/hivebot/ranged_damage/ion,
|
|
prob(5);/mob/living/simple_mob/mechanical/hivebot/ranged_damage/laser,
|
|
prob(5);/mob/living/simple_mob/mechanical/hivebot/ranged_damage/strong,
|
|
prob(5);/mob/living/simple_mob/mechanical/hivebot/ranged_damage/strong/guard)
|
|
|
|
//Mice
|
|
|
|
/obj/random/mob/mouse
|
|
name = "Random Mouse"
|
|
desc = "This is a random boring maus."
|
|
icon_state = "mouse_gray"
|
|
spawn_nothing_percentage = 15
|
|
|
|
/obj/random/mob/mouse/item_to_spawn()
|
|
return pick(prob(15);/mob/living/simple_mob/animal/passive/mouse/white,
|
|
prob(15);/mob/living/simple_mob/animal/passive/mouse/black,
|
|
prob(30);/mob/living/simple_mob/animal/passive/mouse/brown,
|
|
prob(30);/mob/living/simple_mob/animal/passive/mouse/gray,
|
|
prob(30);/mob/living/simple_mob/animal/passive/mouse/rat)
|
|
|
|
/obj/random/mob/fish
|
|
name = "Random Fish"
|
|
desc = "This is a random fish found on Sif."
|
|
icon_state = "fish"
|
|
mob_faction = "fish"
|
|
overwrite_hostility = 1
|
|
mob_hostile = 0
|
|
mob_retaliate = 0
|
|
|
|
/obj/random/mob/fish/item_to_spawn()
|
|
return pick(prob(10);/mob/living/simple_mob/animal/passive/fish/bass,
|
|
prob(20);/mob/living/simple_mob/animal/passive/fish/icebass,
|
|
prob(20);/mob/living/simple_mob/animal/passive/fish/trout,
|
|
prob(20);/mob/living/simple_mob/animal/passive/fish/salmon,
|
|
prob(10);/mob/living/simple_mob/animal/passive/fish/pike,
|
|
prob(10);/mob/living/simple_mob/animal/passive/fish/perch,
|
|
prob(20);/mob/living/simple_mob/animal/passive/fish/murkin,
|
|
prob(15);/mob/living/simple_mob/animal/passive/fish/javelin,
|
|
prob(20);/mob/living/simple_mob/animal/passive/fish/rockfish,
|
|
prob(5);/mob/living/simple_mob/animal/passive/fish/solarfish,
|
|
prob(10);/mob/living/simple_mob/animal/passive/crab,
|
|
prob(1);/mob/living/simple_mob/animal/sif/hooligan_crab)
|
|
|
|
/obj/random/mob/bird
|
|
name = "Random Bird"
|
|
desc = "This is a random wild/feral bird."
|
|
icon_state = "bird"
|
|
mob_faction = "bird"
|
|
|
|
/obj/random/mob/bird/item_to_spawn()
|
|
return pick(prob(10);/mob/living/simple_mob/animal/passive/bird/black_bird,
|
|
prob(10);/mob/living/simple_mob/animal/passive/bird/azure_tit,
|
|
prob(20);/mob/living/simple_mob/animal/passive/bird/european_robin,
|
|
prob(10);/mob/living/simple_mob/animal/passive/bird/goldcrest,
|
|
prob(20);/mob/living/simple_mob/animal/passive/bird/ringneck_dove,
|
|
prob(10);/mob/living/simple_mob/animal/space/goose,
|
|
prob(5);/mob/living/simple_mob/animal/passive/chicken,
|
|
prob(1);/mob/living/simple_mob/animal/passive/penguin)
|
|
|
|
// Mercs
|
|
/obj/random/mob/merc
|
|
name = "Random Mercenary"
|
|
desc = "This is a random PoI mercenary."
|
|
icon_state = "humanoid"
|
|
|
|
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 = "mecha"
|
|
|
|
/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."
|
|
icon_state = "animal_group"
|
|
|
|
/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(15);list(
|
|
/mob/living/simple_mob/animal/passive/hare,
|
|
/mob/living/simple_mob/animal/passive/hare,
|
|
/mob/living/simple_mob/animal/passive/hare,
|
|
/mob/living/simple_mob/animal/passive/hare
|
|
),
|
|
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
|
|
)
|
|
)
|