mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-28 02:53:11 +00:00
Resolves compile errors with the exception of map errors.
This commit is contained in:
@@ -18,6 +18,7 @@
|
||||
feedback_add_details("admin_verb","SMITEV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
switch(smite_choice)
|
||||
/*
|
||||
if(SMITE_SHADEKIN_ATTACK)
|
||||
var/turf/Tt = get_turf(target) //Turf for target
|
||||
|
||||
@@ -34,7 +35,7 @@
|
||||
if(!Ts)
|
||||
return //Didn't find shadekin spawn turf
|
||||
|
||||
var/mob/living/simple_animal/shadekin/red/shadekin = new(Ts)
|
||||
var/mob/living/simple_mob/shadekin/red/shadekin = new(Ts)
|
||||
//Abuse of shadekin
|
||||
shadekin.real_name = shadekin.name
|
||||
shadekin.init_vore()
|
||||
@@ -47,29 +48,29 @@
|
||||
//Remove when done
|
||||
spawn(10 SECONDS)
|
||||
if(shadekin)
|
||||
shadekin.death()
|
||||
shadekin.death()*/ //VORESTATION AI TEMPORARY REMOVAL
|
||||
|
||||
/*if(SMITE_SHADEKIN_NOMF)
|
||||
var/list/kin_types = list(
|
||||
"Red Eyes (Dark)" = /mob/living/simple_animal/shadekin/red/dark,
|
||||
"Red Eyes (Light)" = /mob/living/simple_animal/shadekin/red/white,
|
||||
"Red Eyes (Brown)" = /mob/living/simple_animal/shadekin/red/brown,
|
||||
"Blue Eyes (Dark)" = /mob/living/simple_animal/shadekin/blue/dark,
|
||||
"Blue Eyes (Light)" = /mob/living/simple_animal/shadekin/blue/white,
|
||||
"Blue Eyes (Brown)" = /mob/living/simple_animal/shadekin/blue/brown,
|
||||
"Purple Eyes (Dark)" = /mob/living/simple_animal/shadekin/purple/dark,
|
||||
"Purple Eyes (Light)" = /mob/living/simple_animal/shadekin/purple/white,
|
||||
"Purple Eyes (Brown)" = /mob/living/simple_animal/shadekin/purple/brown,
|
||||
"Yellow Eyes (Dark)" = /mob/living/simple_animal/shadekin/yellow/dark,
|
||||
"Yellow Eyes (Light)" = /mob/living/simple_animal/shadekin/yellow/white,
|
||||
"Yellow Eyes (Brown)" = /mob/living/simple_animal/shadekin/yellow/brown,
|
||||
"Green Eyes (Dark)" = /mob/living/simple_animal/shadekin/green/dark,
|
||||
"Green Eyes (Light)" = /mob/living/simple_animal/shadekin/green/white,
|
||||
"Green Eyes (Brown)" = /mob/living/simple_animal/shadekin/green/brown,
|
||||
"Orange Eyes (Dark)" = /mob/living/simple_animal/shadekin/orange/dark,
|
||||
"Orange Eyes (Light)" = /mob/living/simple_animal/shadekin/orange/white,
|
||||
"Orange Eyes (Brown)" = /mob/living/simple_animal/shadekin/orange/brown,
|
||||
"Rivyr (Unique)" = /mob/living/simple_animal/shadekin/blue/rivyr)
|
||||
"Red Eyes (Dark)" = /mob/living/simple_mob/shadekin/red/dark,
|
||||
"Red Eyes (Light)" = /mob/living/simple_mob/shadekin/red/white,
|
||||
"Red Eyes (Brown)" = /mob/living/simple_mob/shadekin/red/brown,
|
||||
"Blue Eyes (Dark)" = /mob/living/simple_mob/shadekin/blue/dark,
|
||||
"Blue Eyes (Light)" = /mob/living/simple_mob/shadekin/blue/white,
|
||||
"Blue Eyes (Brown)" = /mob/living/simple_mob/shadekin/blue/brown,
|
||||
"Purple Eyes (Dark)" = /mob/living/simple_mob/shadekin/purple/dark,
|
||||
"Purple Eyes (Light)" = /mob/living/simple_mob/shadekin/purple/white,
|
||||
"Purple Eyes (Brown)" = /mob/living/simple_mob/shadekin/purple/brown,
|
||||
"Yellow Eyes (Dark)" = /mob/living/simple_mob/shadekin/yellow/dark,
|
||||
"Yellow Eyes (Light)" = /mob/living/simple_mob/shadekin/yellow/white,
|
||||
"Yellow Eyes (Brown)" = /mob/living/simple_mob/shadekin/yellow/brown,
|
||||
"Green Eyes (Dark)" = /mob/living/simple_mob/shadekin/green/dark,
|
||||
"Green Eyes (Light)" = /mob/living/simple_mob/shadekin/green/white,
|
||||
"Green Eyes (Brown)" = /mob/living/simple_mob/shadekin/green/brown,
|
||||
"Orange Eyes (Dark)" = /mob/living/simple_mob/shadekin/orange/dark,
|
||||
"Orange Eyes (Light)" = /mob/living/simple_mob/shadekin/orange/white,
|
||||
"Orange Eyes (Brown)" = /mob/living/simple_mob/shadekin/orange/brown,
|
||||
"Rivyr (Unique)" = /mob/living/simple_mob/shadekin/blue/rivyr)
|
||||
var/kin_type = input("Select the type of shadekin for [target] nomf","Shadekin Type Choice") as null|anything in kin_types
|
||||
if(!kin_type || !target)
|
||||
return
|
||||
@@ -88,7 +89,7 @@
|
||||
|
||||
//Begin abuse
|
||||
target.transforming = TRUE //Cheap hack to stop them from moving
|
||||
var/mob/living/simple_animal/shadekin/shadekin = new kin_type(Tt)
|
||||
var/mob/living/simple_mob/shadekin/shadekin = new kin_type(Tt)
|
||||
shadekin.real_name = shadekin.name
|
||||
shadekin.init_vore()
|
||||
shadekin.can_be_drop_pred = TRUE
|
||||
|
||||
@@ -24,12 +24,12 @@
|
||||
100 - low_probability * 50;"spacesuit", \
|
||||
"health", \
|
||||
25 + low_probability * 75;"snacks", \
|
||||
25;"alien", \
|
||||
/*25;"alien", \ */ //VORESTATION AI TEMPORARY REMOVAL
|
||||
"lights", \
|
||||
25 - low_probability * 25;"engineering", \
|
||||
25 - low_probability * 25;"coffin", \
|
||||
25;"mimic", \
|
||||
25;"viscerator", \
|
||||
/*25;"mimic", \ //VORESTATION AI TEMPORARY REMOVAL
|
||||
25;"viscerator", \ */ //VORESTATION AI TEMPORARY REMOVAL
|
||||
))
|
||||
if("treasure")
|
||||
var/obj/structure/closet/crate/C = new(src.loc)
|
||||
@@ -276,23 +276,23 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood)
|
||||
for(var/i=0,i<num,i++)
|
||||
new new_type(C)
|
||||
if("alien")
|
||||
/*if("alien")
|
||||
//ancient aliens
|
||||
var/obj/structure/closet/acloset/C = new(src.loc)
|
||||
if(prob(33))
|
||||
if(live_cargo) // Carp! Since Facehuggers got removed.
|
||||
var/num = rand(1,3)
|
||||
for(var/i=0,i<num,i++)
|
||||
new /mob/living/simple_animal/hostile/carp(C)
|
||||
new /mob/living/simple_mob/hostile/carp(C)
|
||||
else // Just a costume.
|
||||
new /obj/item/clothing/suit/storage/hooded/carp_costume(C)
|
||||
else if(prob(50))
|
||||
if(live_cargo) // Something else very much alive and angry.
|
||||
var/spawn_type = pick(/mob/living/simple_animal/hostile/alien, /mob/living/simple_animal/hostile/alien/drone, /mob/living/simple_animal/hostile/alien/sentinel)
|
||||
new spawn_type(C)
|
||||
/*var/spawn_type = pick(/mob/living/simple_mob/hostile/alien, /mob/living/simple_mob/hostile/alien/drone, /mob/living/simple_mob/hostile/alien/sentinel)
|
||||
new spawn_type(C) */ //VORESTATION AI TEMPORARY REMOVAL
|
||||
else // Just a costume.
|
||||
new /obj/item/clothing/head/xenos(C)
|
||||
new /obj/item/clothing/suit/xenos(C)
|
||||
new /obj/item/clothing/suit/xenos(C)*/ //VORESTATION AI TEMPORARY REMOVAL
|
||||
|
||||
//33% chance of nothing
|
||||
|
||||
@@ -336,14 +336,17 @@
|
||||
new /obj/effect/decal/remains/xeno(src)
|
||||
if("mimic")
|
||||
//a guardian of the tomb!
|
||||
var/mob/living/simple_animal/hostile/mimic/crate/mimic = new(src.loc)
|
||||
mimic.faction = spawned_faction
|
||||
// var/mob/living/simple_mob/hostile/mimic/crate/mimic = new(src.loc)
|
||||
// mimic.faction = spawned_faction
|
||||
var/obj/structure/closet/crate/secure/gear/C = new(src.loc) //VORESTATION AI TEMPORARY EDIT
|
||||
new /obj/item/weapon/storage/toolbox/electrical(C) //Placeholder to prevent errors. //VORESTATION AI TEMPORARY EDIT
|
||||
if("viscerator")
|
||||
//more tomb guardians!
|
||||
var/num = rand(1,3)
|
||||
var/obj/structure/closet/crate/secure/gear/C = new(src.loc)
|
||||
for(var/i=0,i<num,i++)
|
||||
new /mob/living/simple_animal/hostile/viscerator(C)
|
||||
//var/num = rand(1,3) //VORESTATION AI TEMPORARY REMOVAL
|
||||
var/obj/structure/closet/crate/secure/gear/C = new(src.loc) //VORESTATION AI TEMPORARY EDIT
|
||||
new /obj/item/weapon/storage/toolbox/electrical(C) //Placeholder to prevent errors. //VORESTATION AI TEMPORARY EDIT
|
||||
//for(var/i=0,i<num,i++) //VORESTATION AI TEMPORARY REMOVAL
|
||||
//new /mob/living/simple_mob/hostile/viscerator(C) //VORESTATION AI TEMPORARY REMOVAL
|
||||
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
////////////////
|
||||
|
||||
//Do not spawn
|
||||
/mob/living/simple_animal/hostile/blob
|
||||
/mob/living/simple_mob/hostile/blob
|
||||
icon = 'icons/mob/blob.dmi'
|
||||
pass_flags = PASSBLOB | PASSTABLE
|
||||
faction = "blob"
|
||||
@@ -23,21 +23,21 @@
|
||||
var/mob/observer/blob/overmind = null
|
||||
var/obj/structure/blob/factory/factory = null
|
||||
|
||||
/mob/living/simple_animal/hostile/blob/speech_bubble_appearance()
|
||||
/mob/living/simple_mob/hostile/blob/speech_bubble_appearance()
|
||||
return "slime"
|
||||
|
||||
/mob/living/simple_animal/hostile/blob/update_icons()
|
||||
/mob/living/simple_mob/hostile/blob/update_icons()
|
||||
if(overmind)
|
||||
color = overmind.blob_type.complementary_color
|
||||
else
|
||||
color = null
|
||||
|
||||
/mob/living/simple_animal/hostile/blob/Destroy()
|
||||
/mob/living/simple_mob/hostile/blob/Destroy()
|
||||
if(overmind)
|
||||
overmind.blob_mobs -= src
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/blob/blob_act(obj/structure/blob/B)
|
||||
/mob/living/simple_mob/hostile/blob/blob_act(obj/structure/blob/B)
|
||||
if(!overmind && B.overmind)
|
||||
overmind = B.overmind
|
||||
update_icon()
|
||||
@@ -46,12 +46,12 @@
|
||||
adjustBruteLoss(-maxHealth*0.0125)
|
||||
adjustFireLoss(-maxHealth*0.0125)
|
||||
|
||||
/mob/living/simple_animal/hostile/blob/CanPass(atom/movable/mover, turf/target)
|
||||
/mob/living/simple_mob/hostile/blob/CanPass(atom/movable/mover, turf/target)
|
||||
if(istype(mover, /obj/structure/blob)) // Don't block blobs from expanding onto a tile occupied by a blob mob.
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/blob/Process_Spacemove()
|
||||
/mob/living/simple_mob/hostile/blob/Process_Spacemove()
|
||||
for(var/obj/structure/blob/B in range(1, src))
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
// BLOB SPORE //
|
||||
////////////////
|
||||
|
||||
/mob/living/simple_animal/hostile/blob/spore
|
||||
/mob/living/simple_mob/hostile/blob/spore
|
||||
name = "blob spore"
|
||||
desc = "A floating, fragile spore."
|
||||
icon_state = "blobpod"
|
||||
@@ -19,24 +19,24 @@
|
||||
var/can_infest = FALSE
|
||||
var/is_infesting = FALSE
|
||||
|
||||
/mob/living/simple_animal/hostile/blob/spore/infesting
|
||||
/mob/living/simple_mob/hostile/blob/spore/infesting
|
||||
name = "infesting blob spore"
|
||||
can_infest = TRUE
|
||||
|
||||
/mob/living/simple_animal/hostile/blob/spore/weak
|
||||
/mob/living/simple_mob/hostile/blob/spore/weak
|
||||
name = "fragile blob spore"
|
||||
health = 15
|
||||
maxHealth = 15
|
||||
melee_damage_lower = 1
|
||||
melee_damage_upper = 2
|
||||
|
||||
/mob/living/simple_animal/hostile/blob/spore/New(var/newloc, var/obj/structure/blob/factory/my_factory)
|
||||
/mob/living/simple_mob/hostile/blob/spore/New(var/newloc, var/obj/structure/blob/factory/my_factory)
|
||||
if(istype(my_factory))
|
||||
factory = my_factory
|
||||
factory.spores += src
|
||||
..(newloc)
|
||||
|
||||
/mob/living/simple_animal/hostile/blob/spore/Destroy()
|
||||
/mob/living/simple_mob/hostile/blob/spore/Destroy()
|
||||
if(factory)
|
||||
factory.spores -= src
|
||||
factory = null
|
||||
@@ -46,13 +46,13 @@
|
||||
infested = null
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/blob/spore/death(gibbed, deathmessage = "bursts!")
|
||||
/mob/living/simple_mob/hostile/blob/spore/death(gibbed, deathmessage = "bursts!")
|
||||
if(overmind)
|
||||
overmind.blob_type.on_spore_death(src)
|
||||
..(gibbed, deathmessage)
|
||||
qdel(src)
|
||||
|
||||
/mob/living/simple_animal/hostile/blob/spore/update_icons()
|
||||
/mob/living/simple_mob/hostile/blob/spore/update_icons()
|
||||
if(overmind)
|
||||
color = overmind.blob_type.complementary_color
|
||||
set_light(3, 5, color)
|
||||
@@ -70,7 +70,7 @@
|
||||
color = initial(color)//looks better.
|
||||
overlays += blob_head_overlay
|
||||
|
||||
/mob/living/simple_animal/hostile/blob/spore/Life()
|
||||
/mob/living/simple_mob/hostile/blob/spore/Life()
|
||||
if(can_infest && !is_infesting && isturf(src.loc))
|
||||
for(var/mob/living/carbon/human/H in view(src,1))
|
||||
if(H.stat != DEAD) // We want zombies.
|
||||
@@ -83,7 +83,7 @@
|
||||
qdel(src)
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/hostile/blob/spore/proc/infest(mob/living/carbon/human/H)
|
||||
/mob/living/simple_mob/hostile/blob/spore/proc/infest(mob/living/carbon/human/H)
|
||||
is_infesting = TRUE
|
||||
if(H.wear_suit)
|
||||
var/obj/item/clothing/suit/A = H.wear_suit
|
||||
@@ -105,6 +105,6 @@
|
||||
update_icons()
|
||||
visible_message("<span class='warning'>The corpse of [H.name] suddenly rises!</span>")
|
||||
|
||||
/mob/living/simple_animal/hostile/blob/spore/GetIdCard()
|
||||
/mob/living/simple_mob/hostile/blob/spore/GetIdCard()
|
||||
if(infested) // If we've infested someone, use their ID.
|
||||
return infested.GetIdCard()
|
||||
@@ -3,20 +3,20 @@
|
||||
endWhen = 90 + 15 + 1
|
||||
var/spawncount
|
||||
var/list/possible_slimes = list(
|
||||
/mob/living/simple_animal/slime/purple,
|
||||
/mob/living/simple_animal/slime/orange,
|
||||
/mob/living/simple_animal/slime/metal,
|
||||
/mob/living/simple_animal/slime/yellow,
|
||||
/mob/living/simple_animal/slime/dark_purple,
|
||||
/mob/living/simple_animal/slime/silver,
|
||||
/mob/living/simple_animal/slime/ruby,
|
||||
/mob/living/simple_animal/slime/cerulean,
|
||||
/mob/living/simple_animal/slime/red,
|
||||
/mob/living/simple_animal/slime/green,
|
||||
/mob/living/simple_animal/slime/pink,
|
||||
/mob/living/simple_animal/slime/gold,
|
||||
/mob/living/simple_animal/slime/oil,
|
||||
/mob/living/simple_animal/slime/emerald,
|
||||
/mob/living/simple_mob/slime/purple,
|
||||
/mob/living/simple_mob/slime/orange,
|
||||
/mob/living/simple_mob/slime/metal,
|
||||
/mob/living/simple_mob/slime/yellow,
|
||||
/mob/living/simple_mob/slime/dark_purple,
|
||||
/mob/living/simple_mob/slime/silver,
|
||||
/mob/living/simple_mob/slime/ruby,
|
||||
/mob/living/simple_mob/slime/cerulean,
|
||||
/mob/living/simple_mob/slime/red,
|
||||
/mob/living/simple_mob/slime/green,
|
||||
/mob/living/simple_mob/slime/pink,
|
||||
/mob/living/simple_mob/slime/gold,
|
||||
/mob/living/simple_mob/slime/oil,
|
||||
/mob/living/simple_mob/slime/emerald,
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -139,7 +139,7 @@ var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Shipping Error", /datum/event/shipping_error , 30, list(ASSIGNMENT_ANY = 2), 0),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Space Dust", /datum/event/dust , 60, list(ASSIGNMENT_ENGINEER = 20), 0, 0, 50),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Trivial News", /datum/event/trivial_news, 400),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Ian Storm", /datum/event/ianstorm, 50),
|
||||
//new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Ian Storm", /datum/event/ianstorm, 50), //VORESTATION AI TEMPORARY REMOVAL
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lore News", /datum/event/lore_news, 400),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Vermin Infestation",/datum/event/infestation, 100, list(ASSIGNMENT_JANITOR = 100)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Wallrot", /datum/event/wallrot, 0, list(ASSIGNMENT_ENGINEER = 30, ASSIGNMENT_GARDENER = 50)),
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Solar Storm", /datum/event/solar_storm, 30, list(ASSIGNMENT_ENGINEER = 40, ASSIGNMENT_SECURITY = 30), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Virology Breach", /datum/event/prison_break/virology, 0, list(ASSIGNMENT_MEDICAL = 100), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Xenobiology Breach", /datum/event/prison_break/xenobiology, 0, list(ASSIGNMENT_SCIENCE = 100), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grub Infestation", /datum/event/grub_infestation, 40, list(ASSIGNMENT_SECURITY = 50, ASSIGNMENT_ENGINEER = 50), 1),
|
||||
//new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grub Infestation", /datum/event/grub_infestation, 40, list(ASSIGNMENT_SECURITY = 50, ASSIGNMENT_ENGINEER = 50), 1), //VORESTATION AI TEMPORARY REMOVAL
|
||||
//Evil grubs that drain station power slightly
|
||||
)
|
||||
add_disabled_events(list(
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
/datum/event/grub_infestation/start()
|
||||
while((spawncount >= 1) && vents.len)
|
||||
var/obj/vent = pick(vents)
|
||||
new /mob/living/simple_animal/solargrub_larva(get_turf(vent))
|
||||
//new /mob/living/simple_mob/solargrub_larva(get_turf(vent)) //VORESTATION AI TEMPORARY REMOVAL. Event commented out until mobs are fixed.
|
||||
vents -= vent
|
||||
spawncount--
|
||||
vents.Cut()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/datum/event/ianstorm
|
||||
/datum/event/ianstorm //VORESTATION AI TEMPORARY REMOVAL
|
||||
announceWhen = 1
|
||||
startWhen = 2
|
||||
endWhen = 3
|
||||
@@ -23,7 +23,7 @@
|
||||
for(var/i = 0, i < 3, i++)
|
||||
var/turf/target = get_step(T, pick(alldirs))
|
||||
if(target && istype(target, /turf/simulated/floor))
|
||||
var/mob/living/simple_animal/corgi/Ian/doge = new(target)
|
||||
var/mob/living/simple_mob/corgi/Ian/doge = new(target)
|
||||
doge.name = "Ian " + pick("Alpha", "Beta", "Chi", "Delta", "Epsilon", "Phi",
|
||||
"Gamma", "Eta", "Iota", "Kappa", "Lambda", "Omicron", "Theta",
|
||||
"Rho", "Sigma", "Tau", "Upsilon", "Omega", "Psi", "Zeta")
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
return 1
|
||||
|
||||
//This is already covered by mob/say_understands()
|
||||
//if (istype(other, /mob/living/simple_animal))
|
||||
//if (istype(other, /mob/living/simple_mob))
|
||||
// if((other.universal_speak && !speaking) || src.universal_speak || src.universal_understand)
|
||||
// return 1
|
||||
// return 0
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// Simple animal nanogoopeyness
|
||||
/mob/living/simple_animal/protean_blob
|
||||
/mob/living/simple_mob/protean_blob
|
||||
name = "protean blob"
|
||||
desc = "Some sort of big viscous pool of jelly."
|
||||
tt_desc = "Animated nanogoop"
|
||||
@@ -12,8 +12,9 @@
|
||||
faction = "neutral"
|
||||
maxHealth = 200
|
||||
health = 200
|
||||
say_list_type = /datum/say_list/protean_blob
|
||||
|
||||
ai_inactive = TRUE //Always off
|
||||
// ai_inactive = TRUE //Always off //VORESTATION AI TEMPORARY REMOVAL
|
||||
show_stat_health = FALSE //We will do it ourselves
|
||||
|
||||
response_help = "pats the"
|
||||
@@ -36,11 +37,6 @@
|
||||
minbodytemp = 0
|
||||
maxbodytemp = 900
|
||||
|
||||
speak_chance = 1
|
||||
speak = list("Blrb?","Sqrsh.","Glrsh!")
|
||||
emote_hear = list("squishes softly","spluts quietly","makes wet noises")
|
||||
emote_see = list("shifts wetly","undulates placidly")
|
||||
|
||||
var/mob/living/carbon/human/humanform
|
||||
var/obj/item/organ/internal/nano/refactory/refactory
|
||||
var/datum/modifier/healing
|
||||
@@ -52,8 +48,13 @@
|
||||
|
||||
can_buckle = TRUE //Blobsurfing
|
||||
|
||||
/datum/say_list/protean_blob
|
||||
speak = list("Blrb?","Sqrsh.","Glrsh!")
|
||||
emote_hear = list("squishes softly","spluts quietly","makes wet noises")
|
||||
emote_see = list("shifts wetly","undulates placidly")
|
||||
|
||||
//Constructor allows passing the human to sync damages
|
||||
/mob/living/simple_animal/protean_blob/New(var/newloc, var/mob/living/carbon/human/H)
|
||||
/mob/living/simple_mob/protean_blob/New(var/newloc, var/mob/living/carbon/human/H)
|
||||
..()
|
||||
if(H)
|
||||
humanform = H
|
||||
@@ -64,7 +65,7 @@
|
||||
else
|
||||
update_icon()
|
||||
|
||||
/mob/living/simple_animal/protean_blob/Destroy()
|
||||
/mob/living/simple_mob/protean_blob/Destroy()
|
||||
humanform = null
|
||||
refactory = null
|
||||
vore_organs = null
|
||||
@@ -73,15 +74,15 @@
|
||||
healing.expire()
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/protean_blob/init_vore()
|
||||
/mob/living/simple_mob/protean_blob/init_vore()
|
||||
return //Don't make a random belly, don't waste your time
|
||||
|
||||
/mob/living/simple_animal/protean_blob/Stat()
|
||||
/mob/living/simple_mob/protean_blob/Stat()
|
||||
..()
|
||||
if(humanform)
|
||||
humanform.species.Stat(humanform)
|
||||
|
||||
/mob/living/simple_animal/protean_blob/update_icon()
|
||||
/mob/living/simple_mob/protean_blob/update_icon()
|
||||
if(humanform)
|
||||
//Still have a refactory
|
||||
if(istype(refactory))
|
||||
@@ -97,7 +98,7 @@
|
||||
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/protean_blob/updatehealth()
|
||||
/mob/living/simple_mob/protean_blob/updatehealth()
|
||||
if(humanform)
|
||||
//Set the max
|
||||
maxHealth = humanform.getMaxHealth()*2 //HUMANS, and their 'double health', bleh.
|
||||
@@ -136,19 +137,19 @@
|
||||
else
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/protean_blob/adjustBruteLoss(var/amount)
|
||||
/mob/living/simple_mob/protean_blob/adjustBruteLoss(var/amount)
|
||||
if(humanform)
|
||||
humanform.adjustBruteLoss(amount)
|
||||
else
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/protean_blob/adjustFireLoss(var/amount)
|
||||
/mob/living/simple_mob/protean_blob/adjustFireLoss(var/amount)
|
||||
if(humanform)
|
||||
humanform.adjustFireLoss(amount)
|
||||
else
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/protean_blob/death(gibbed, deathmessage = "dissolves away, leaving only a few spare parts!")
|
||||
/mob/living/simple_mob/protean_blob/death(gibbed, deathmessage = "dissolves away, leaving only a few spare parts!")
|
||||
if(humanform)
|
||||
humanform.death(gibbed = gibbed)
|
||||
for(var/organ in humanform.internal_organs)
|
||||
@@ -168,7 +169,7 @@
|
||||
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/protean_blob/Life()
|
||||
/mob/living/simple_mob/protean_blob/Life()
|
||||
. = ..()
|
||||
if(. && istype(refactory) && humanform)
|
||||
if(!healing && health < maxHealth && refactory.get_stored_material(DEFAULT_WALL_MATERIAL) >= 100)
|
||||
@@ -177,7 +178,7 @@
|
||||
healing.expire()
|
||||
healing = null
|
||||
|
||||
/mob/living/simple_animal/protean_blob/lay_down()
|
||||
/mob/living/simple_mob/protean_blob/lay_down()
|
||||
..()
|
||||
if(resting)
|
||||
animate(src,alpha = 40,time = 1 SECOND)
|
||||
@@ -199,7 +200,7 @@
|
||||
target.forceMove(vore_selected)
|
||||
to_chat(target,"<span class='warning'>\The [src] quickly engulfs you, [vore_selected.vore_verb]ing you into their [vore_selected.name]!</span>")
|
||||
|
||||
/mob/living/simple_animal/protean_blob/DoPunch(var/atom/A)
|
||||
/mob/living/simple_mob/protean_blob/attack_hand(var/atom/A) //VORESTATION AI TEMPORARY REMOVAL (Marking this as such even though it was an edit.)
|
||||
if(refactory && istype(A,/obj/item/stack/material))
|
||||
var/obj/item/stack/material/S = A
|
||||
var/substance = S.material.name
|
||||
@@ -214,7 +215,7 @@
|
||||
else
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/protean_blob/attackby(var/obj/item/O, var/mob/user)
|
||||
/mob/living/simple_mob/protean_blob/attackby(var/obj/item/O, var/mob/user)
|
||||
if(refactory && istype(O,/obj/item/stack/material))
|
||||
var/obj/item/stack/material/S = O
|
||||
var/substance = S.material.name
|
||||
@@ -229,7 +230,7 @@
|
||||
else
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/protean_blob/MouseEntered(location,control,params)
|
||||
/mob/living/simple_mob/protean_blob/MouseEntered(location,control,params)
|
||||
if(resting)
|
||||
return
|
||||
..()
|
||||
@@ -251,12 +252,12 @@
|
||||
var/atom/creation_spot = drop_location()
|
||||
|
||||
//Create our new blob
|
||||
var/mob/living/simple_animal/protean_blob/blob = new(creation_spot,src)
|
||||
var/mob/living/simple_mob/protean_blob/blob = new(creation_spot,src)
|
||||
|
||||
//Drop all our things
|
||||
var/list/things_to_drop = contents.Copy()
|
||||
var/list/things_to_not_drop = list(w_uniform,nif,l_store,r_store,wear_id,l_ear,r_ear) //And whatever else we decide for balancing.
|
||||
|
||||
|
||||
/* No for now, because insta-pepperspray or flash on unblob
|
||||
if(l_hand && l_hand.w_class <= ITEMSIZE_SMALL) //Hands but only if small or smaller
|
||||
things_to_not_drop += l_hand
|
||||
@@ -267,7 +268,7 @@
|
||||
things_to_drop -= things_to_not_drop //Crunch the lists
|
||||
things_to_drop -= organs //Mah armbs
|
||||
things_to_drop -= internal_organs //Mah sqeedily spooch
|
||||
|
||||
|
||||
for(var/obj/item/I in things_to_drop) //rip hoarders
|
||||
drop_from_inventory(I)
|
||||
|
||||
@@ -316,7 +317,7 @@
|
||||
if(istype(I, /obj/item/weapon/holder))
|
||||
root.remove_from_mob(I)
|
||||
|
||||
/mob/living/carbon/human/proc/nano_outofblob(var/mob/living/simple_animal/protean_blob/blob)
|
||||
/mob/living/carbon/human/proc/nano_outofblob(var/mob/living/simple_mob/protean_blob/blob)
|
||||
if(!istype(blob))
|
||||
return
|
||||
if(buckled)
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
oldlimb.removed()
|
||||
qdel(oldlimb)
|
||||
|
||||
var/mob/living/simple_animal/protean_blob/blob = nano_intoblob()
|
||||
var/mob/living/simple_mob/protean_blob/blob = nano_intoblob()
|
||||
active_regen = TRUE
|
||||
if(do_after(blob,5 SECONDS))
|
||||
var/list/limblist = species.has_limbs[choice]
|
||||
@@ -128,7 +128,7 @@
|
||||
to_chat(src, "<span class='danger'>Remain still while the process takes place! It will take 5 seconds.</span>")
|
||||
visible_message("<B>[src]</B>'s form collapses into an amorphous blob of black ichor...")
|
||||
|
||||
var/mob/living/simple_animal/protean_blob/blob = nano_intoblob()
|
||||
var/mob/living/simple_mob/protean_blob/blob = nano_intoblob()
|
||||
active_regen = TRUE
|
||||
if(do_after(blob,5 SECONDS))
|
||||
synthetic = usable_manufacturers[manu_choice]
|
||||
@@ -149,7 +149,7 @@
|
||||
visible_message("<B>[src]</B>'s form begins to shift and ripple as if made of oil...")
|
||||
active_regen = TRUE
|
||||
|
||||
var/mob/living/simple_animal/protean_blob/blob = nano_intoblob()
|
||||
var/mob/living/simple_mob/protean_blob/blob = nano_intoblob()
|
||||
if(do_after(blob, delay_length, null, 0))
|
||||
if(stat != DEAD && refactory)
|
||||
var/list/holder = refactory.materials
|
||||
@@ -319,7 +319,7 @@
|
||||
return R
|
||||
return
|
||||
|
||||
/mob/living/simple_animal/protean_blob/nano_get_refactory()
|
||||
/mob/living/simple_mob/protean_blob/nano_get_refactory()
|
||||
if(refactory)
|
||||
return ..(refactory)
|
||||
if(humanform)
|
||||
@@ -353,7 +353,7 @@
|
||||
do_ability(usr)
|
||||
//Blobform using it
|
||||
else
|
||||
var/mob/living/simple_animal/protean_blob/blob = usr
|
||||
var/mob/living/simple_mob/protean_blob/blob = usr
|
||||
do_ability(blob.humanform)
|
||||
|
||||
/obj/effect/protean_ability/proc/do_ability(var/mob/living/L)
|
||||
|
||||
@@ -689,7 +689,7 @@
|
||||
|
||||
return ..(target)
|
||||
|
||||
/mob/living/simple_animal/can_shred(var/mob/living/carbon/human/target)
|
||||
/mob/living/simple_mob/can_shred(var/mob/living/carbon/human/target)
|
||||
if(!target)
|
||||
var/list/choices = list()
|
||||
for(var/mob/living/carbon/human/M in oviewers(1))
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32
|
||||
|
||||
//TODO: Make these simple_animals
|
||||
//TODO: Make these simple_mobs
|
||||
/* //Commented out as reference for future reproduction methods, or addition later if needed. - Mech
|
||||
var/const/MIN_IMPREGNATION_TIME = 100 //time it takes to impregnate someone
|
||||
var/const/MAX_IMPREGNATION_TIME = 150
|
||||
|
||||
@@ -142,7 +142,7 @@
|
||||
if(M.mind)
|
||||
user << "<span class='warning'> The slime resists!</span>"
|
||||
return ..()
|
||||
var/mob/living/simple_animal/slime/pet = new /mob/living/simple_animal/slime(M.loc)
|
||||
var/mob/living/simple_mob/slime/pet = new /mob/living/simple_mob/slime(M.loc)
|
||||
pet.icon_state = "[M.colour] [M.is_adult ? "adult" : "baby"] slime"
|
||||
pet.icon_living = "[M.colour] [M.is_adult ? "adult" : "baby"] slime"
|
||||
pet.icon_dead = "[M.colour] [M.is_adult ? "adult" : "baby"] slime dead"
|
||||
@@ -196,7 +196,7 @@
|
||||
if(M.mind)
|
||||
user << "<span class='warning'> The slime resists!</span>"
|
||||
return ..()
|
||||
var/mob/living/simple_animal/adultslime/pet = new /mob/living/simple_animal/adultslime(M.loc)
|
||||
var/mob/living/simple_mob/adultslime/pet = new /mob/living/simple_mob/adultslime(M.loc)
|
||||
pet.icon_state = "[M.colour] adult slime"
|
||||
pet.icon_living = "[M.colour] adult slime"
|
||||
pet.icon_dead = "[M.colour] baby slime dead"
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
return "I cannot feed on other slimes..."
|
||||
if (!Adjacent(M))
|
||||
return "This subject is too far away..."
|
||||
if (istype(M, /mob/living/carbon) && M.getCloneLoss() >= M.getMaxHealth() * 1.5 || istype(M, /mob/living/simple_animal) && M.stat == DEAD)
|
||||
if (istype(M, /mob/living/carbon) && M.getCloneLoss() >= M.getMaxHealth() * 1.5 || istype(M, /mob/living/simple_mob) && M.stat == DEAD)
|
||||
return "This subject does not have an edible life energy..."
|
||||
for(var/mob/living/carbon/slime/met in view())
|
||||
if(met.Victim == M && met != src)
|
||||
@@ -48,7 +48,7 @@
|
||||
if(Victim.health <= 0)
|
||||
Victim.adjustToxLoss(rand(2,4))
|
||||
|
||||
else if(istype(M, /mob/living/simple_animal))
|
||||
else if(istype(M, /mob/living/simple_mob))
|
||||
Victim.adjustBruteLoss(is_adult ? rand(7, 15) : rand(4, 12))
|
||||
|
||||
else
|
||||
|
||||
@@ -129,9 +129,9 @@ default behaviour is:
|
||||
forceMove(tmob.loc)
|
||||
|
||||
//VOREstation Edit - Begin
|
||||
if (istype(tmob, /mob/living/simple_animal)) //check bumpnom chance, if it's a simplemob that's bumped
|
||||
if (istype(tmob, /mob/living/simple_mob)) //check bumpnom chance, if it's a simplemob that's bumped
|
||||
tmob.Bumped(src)
|
||||
else if(istype(src, /mob/living/simple_animal)) //otherwise, if it's a simplemob doing the bumping. Simplemob on simplemob doesn't seem to trigger but that's fine.
|
||||
else if(istype(src, /mob/living/simple_mob)) //otherwise, if it's a simplemob doing the bumping. Simplemob on simplemob doesn't seem to trigger but that's fine.
|
||||
Bumped(tmob)
|
||||
if (tmob.loc == src) //check if they got ate, and if so skip the forcemove
|
||||
now_pushing = 0
|
||||
|
||||
@@ -299,7 +299,7 @@
|
||||
if(soaked >= round(throw_damage*0.8))
|
||||
return
|
||||
|
||||
//Handles embedding for non-humans and simple_animals.
|
||||
//Handles embedding for non-humans and simple_mobs.
|
||||
embed(O)
|
||||
|
||||
var/turf/T = near_wall(dir,2)
|
||||
|
||||
@@ -80,9 +80,9 @@
|
||||
to_chat(user, "<span class='notice'>\The [target.name] added to cargo compartment slot: [delivery_tag].</span>")
|
||||
update_patient()
|
||||
return
|
||||
|
||||
if(istype(target, /mob/living/simple_animal/mouse)) //Edible mice, dead or alive whatever. Mostly for carcass picking you cruel bastard :v
|
||||
var/mob/living/simple_animal/trashmouse = target
|
||||
/* //VORESTATION AI TEMPORARY REMOVAL
|
||||
if(istype(target, /mob/living/simple_mob/mouse)) //Edible mice, dead or alive whatever. Mostly for carcass picking you cruel bastard :v
|
||||
var/mob/living/simple_mob/trashmouse = target
|
||||
user.visible_message("<span class='warning'>[hound.name] is ingesting [trashmouse] into their [src.name].</span>", "<span class='notice'>You start ingesting [trashmouse] into your [src.name]...</span>")
|
||||
if(do_after(user, 30, trashmouse) && length(contents) < max_item_count)
|
||||
trashmouse.forceMove(src)
|
||||
@@ -95,7 +95,7 @@
|
||||
to_chat(user, "<span class='notice'>\The [trashmouse] added to cargo compartment slot: [delivery_tag].</span>")
|
||||
update_patient()
|
||||
return
|
||||
|
||||
*/
|
||||
else if(ishuman(target))
|
||||
var/mob/living/carbon/human/trashman = target
|
||||
if(patient)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/hostile/alien
|
||||
/mob/living/simple_mob/hostile/alien
|
||||
name = "alien hunter"
|
||||
desc = "Hiss!"
|
||||
icon = 'icons/mob/alien.dmi'
|
||||
@@ -48,7 +48,7 @@
|
||||
|
||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/xenomeat
|
||||
|
||||
/mob/living/simple_animal/hostile/alien/drone
|
||||
/mob/living/simple_mob/hostile/alien/drone
|
||||
name = "alien drone"
|
||||
icon_state = "aliend_running"
|
||||
icon_living = "aliend_running"
|
||||
@@ -58,7 +58,7 @@
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 15
|
||||
|
||||
/mob/living/simple_animal/hostile/alien/sentinel
|
||||
/mob/living/simple_mob/hostile/alien/sentinel
|
||||
name = "alien sentinel"
|
||||
icon_state = "aliens_running"
|
||||
icon_living = "aliens_running"
|
||||
@@ -71,7 +71,7 @@
|
||||
projectiletype = /obj/item/projectile/energy/neurotoxin/toxic
|
||||
projectilesound = 'sound/weapons/pierce.ogg'
|
||||
|
||||
/mob/living/simple_animal/hostile/alien/sentinel/praetorian
|
||||
/mob/living/simple_mob/hostile/alien/sentinel/praetorian
|
||||
name = "alien praetorian"
|
||||
icon = 'icons/mob/64x64.dmi'
|
||||
icon_state = "prat_s"
|
||||
@@ -86,7 +86,7 @@
|
||||
old_x = -16
|
||||
meat_amount = 5
|
||||
|
||||
/mob/living/simple_animal/hostile/alien/queen
|
||||
/mob/living/simple_mob/hostile/alien/queen
|
||||
name = "alien queen"
|
||||
icon_state = "alienq_running"
|
||||
icon_living = "alienq_running"
|
||||
@@ -103,7 +103,7 @@
|
||||
rapid = 1
|
||||
status_flags = 0
|
||||
|
||||
/mob/living/simple_animal/hostile/alien/queen/empress
|
||||
/mob/living/simple_mob/hostile/alien/queen/empress
|
||||
name = "alien empress"
|
||||
icon = 'icons/mob/64x64.dmi'
|
||||
icon_state = "queen_s"
|
||||
@@ -119,7 +119,7 @@
|
||||
pixel_x = -16
|
||||
old_x = -16
|
||||
|
||||
/mob/living/simple_animal/hostile/alien/queen/empress/mother
|
||||
/mob/living/simple_mob/hostile/alien/queen/empress/mother
|
||||
name = "alien mother"
|
||||
icon = 'icons/mob/96x96.dmi'
|
||||
icon_state = "empress_s"
|
||||
@@ -136,7 +136,7 @@
|
||||
pixel_x = -32
|
||||
old_x = -32
|
||||
|
||||
/mob/living/simple_animal/hostile/alien/death()
|
||||
/mob/living/simple_mob/hostile/alien/death()
|
||||
..()
|
||||
visible_message("[src] lets out a waning guttural screech, green blood bubbling from its maw...")
|
||||
playsound(src, 'sound/voice/hiss6.ogg', 100, 1)
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/hostile/creature
|
||||
/mob/living/simple_mob/hostile/creature
|
||||
name = "creature"
|
||||
desc = "A sanity-destroying otherthing."
|
||||
icon = 'icons/mob/critter.dmi'
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
speak_emote = list("gibbers")
|
||||
|
||||
/mob/living/simple_animal/hostile/creature/cult
|
||||
/mob/living/simple_mob/hostile/creature/cult
|
||||
faction = "cult"
|
||||
|
||||
min_oxy = 0
|
||||
@@ -40,14 +40,14 @@
|
||||
|
||||
supernatural = 1
|
||||
|
||||
/mob/living/simple_animal/hostile/creature/cult/cultify()
|
||||
/mob/living/simple_mob/hostile/creature/cult/cultify()
|
||||
return
|
||||
|
||||
/mob/living/simple_animal/hostile/creature/cult/Life()
|
||||
/mob/living/simple_mob/hostile/creature/cult/Life()
|
||||
..()
|
||||
check_horde()
|
||||
|
||||
/mob/living/simple_animal/hostile/creature/strong
|
||||
/mob/living/simple_mob/hostile/creature/strong
|
||||
maxHealth = 160
|
||||
health = 160
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
melee_damage_lower = 13
|
||||
melee_damage_upper = 25
|
||||
|
||||
/mob/living/simple_animal/hostile/creature/strong/cult
|
||||
/mob/living/simple_mob/hostile/creature/strong/cult
|
||||
faction = "cult"
|
||||
|
||||
min_oxy = 0
|
||||
@@ -70,9 +70,9 @@
|
||||
|
||||
supernatural = 1
|
||||
|
||||
/mob/living/simple_animal/hostile/creature/cult/cultify()
|
||||
/mob/living/simple_mob/hostile/creature/cult/cultify()
|
||||
return
|
||||
|
||||
/mob/living/simple_animal/hostile/creature/cult/Life()
|
||||
/mob/living/simple_mob/hostile/creature/cult/Life()
|
||||
..()
|
||||
check_horde()
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
|
||||
//malfunctioning combat drones
|
||||
/mob/living/simple_animal/hostile/malf_drone
|
||||
/mob/living/simple_mob/hostile/malf_drone
|
||||
name = "combat drone"
|
||||
desc = "An automated combat drone armed with state of the art weaponry and shielding."
|
||||
icon_state = "drone3"
|
||||
@@ -51,7 +51,7 @@
|
||||
var/exploding = 0
|
||||
var/has_loot = 1
|
||||
|
||||
/mob/living/simple_animal/hostile/malf_drone/New()
|
||||
/mob/living/simple_mob/hostile/malf_drone/New()
|
||||
..()
|
||||
if(prob(5))
|
||||
projectiletype = /obj/item/projectile/beam/pulse/drone
|
||||
@@ -60,14 +60,14 @@
|
||||
ion_trail.set_up(src)
|
||||
ion_trail.start()
|
||||
|
||||
/mob/living/simple_animal/hostile/malf_drone/Process_Spacemove(var/check_drift = 0)
|
||||
/mob/living/simple_mob/hostile/malf_drone/Process_Spacemove(var/check_drift = 0)
|
||||
return 1
|
||||
|
||||
/mob/living/simple_animal/hostile/malf_drone/isSynthetic()
|
||||
/mob/living/simple_mob/hostile/malf_drone/isSynthetic()
|
||||
return TRUE
|
||||
|
||||
//self repair systems have a chance to bring the drone back to life
|
||||
/mob/living/simple_animal/hostile/malf_drone/Life()
|
||||
/mob/living/simple_mob/hostile/malf_drone/Life()
|
||||
|
||||
//emps and lots of damage can temporarily shut us down
|
||||
if(disabled > 0)
|
||||
@@ -150,18 +150,18 @@
|
||||
..()
|
||||
|
||||
//ion rifle!
|
||||
/mob/living/simple_animal/hostile/malf_drone/emp_act(severity)
|
||||
/mob/living/simple_mob/hostile/malf_drone/emp_act(severity)
|
||||
health -= rand(3,15) * (severity + 1)
|
||||
disabled = rand(150, 600)
|
||||
hostile = 0
|
||||
walk(src,0)
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/hostile/malf_drone/death()
|
||||
/mob/living/simple_mob/hostile/malf_drone/death()
|
||||
..(null,"suddenly breaks apart.")
|
||||
qdel(src)
|
||||
|
||||
/mob/living/simple_animal/hostile/malf_drone/Destroy()
|
||||
/mob/living/simple_mob/hostile/malf_drone/Destroy()
|
||||
//More advanced than the default S_A loot system, for visual effect and random tech levels.
|
||||
if(has_loot)
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
@@ -280,7 +280,7 @@
|
||||
|
||||
// A slightly easier drone, for POIs.
|
||||
// Difference is that it should not be faster than you.
|
||||
/mob/living/simple_animal/hostile/malf_drone/lesser
|
||||
/mob/living/simple_mob/hostile/malf_drone/lesser
|
||||
desc = "An automated combat drone with an aged apperance."
|
||||
returns_home = TRUE
|
||||
move_to_delay = 6
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/hostile/faithless
|
||||
/mob/living/simple_mob/hostile/faithless
|
||||
name = "Faithless"
|
||||
desc = "The Wish Granter's faith in humanity, incarnate"
|
||||
icon_state = "faithless"
|
||||
@@ -37,15 +37,15 @@
|
||||
|
||||
speak_chance = 0
|
||||
|
||||
/mob/living/simple_animal/hostile/faithless/Process_Spacemove(var/check_drift = 0)
|
||||
/mob/living/simple_mob/hostile/faithless/Process_Spacemove(var/check_drift = 0)
|
||||
return 1
|
||||
|
||||
/mob/living/simple_animal/hostile/faithless/set_target()
|
||||
/mob/living/simple_mob/hostile/faithless/set_target()
|
||||
. = ..()
|
||||
if(.)
|
||||
audible_emote("wails at [target_mob]")
|
||||
|
||||
/mob/living/simple_animal/hostile/faithless/PunchTarget()
|
||||
/mob/living/simple_mob/hostile/faithless/PunchTarget()
|
||||
. = ..()
|
||||
var/mob/living/L = .
|
||||
if(istype(L))
|
||||
@@ -53,18 +53,18 @@
|
||||
L.Weaken(3)
|
||||
L.visible_message("<span class='danger'>\the [src] knocks down \the [L]!</span>")
|
||||
|
||||
/mob/living/simple_animal/hostile/faithless/cult
|
||||
/mob/living/simple_mob/hostile/faithless/cult
|
||||
faction = "cult"
|
||||
supernatural = 1
|
||||
|
||||
/mob/living/simple_animal/hostile/faithless/cult/cultify()
|
||||
/mob/living/simple_mob/hostile/faithless/cult/cultify()
|
||||
return
|
||||
|
||||
/mob/living/simple_animal/hostile/faithless/cult/Life()
|
||||
/mob/living/simple_mob/hostile/faithless/cult/Life()
|
||||
..()
|
||||
check_horde()
|
||||
|
||||
/mob/living/simple_animal/hostile/faithless/strong
|
||||
/mob/living/simple_mob/hostile/faithless/strong
|
||||
maxHealth = 100
|
||||
health = 100
|
||||
|
||||
@@ -72,13 +72,13 @@
|
||||
melee_damage_lower = 13
|
||||
melee_damage_upper = 28
|
||||
|
||||
/mob/living/simple_animal/hostile/faithless/strong/cult
|
||||
/mob/living/simple_mob/hostile/faithless/strong/cult
|
||||
faction = "cult"
|
||||
supernatural = 1
|
||||
|
||||
/mob/living/simple_animal/hostile/faithless/cult/cultify()
|
||||
/mob/living/simple_mob/hostile/faithless/cult/cultify()
|
||||
return
|
||||
|
||||
/mob/living/simple_animal/hostile/faithless/cult/Life()
|
||||
/mob/living/simple_mob/hostile/faithless/cult/Life()
|
||||
..()
|
||||
check_horde()
|
||||
@@ -3,7 +3,7 @@
|
||||
#define LASERS_TO_KILL * 40
|
||||
|
||||
// Default hivebot is melee, and a bit more meaty, so it can meatshield for their ranged friends.
|
||||
/mob/living/simple_animal/hostile/hivebot
|
||||
/mob/living/simple_mob/hostile/hivebot
|
||||
name = "hivebot"
|
||||
desc = "A robot. It appears to be somewhat resilient, but lacks a true weapon."
|
||||
icon = 'icons/mob/hivebot.dmi'
|
||||
@@ -52,13 +52,13 @@
|
||||
say_maybe_target = list("Possible threat detected. Investigating.", "Motion detected.", "Investigating.")
|
||||
say_got_target = list("Threat detected.", "New task: Remove threat.", "Threat removal engaged.", "Engaging target.")
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebot/isSynthetic()
|
||||
/mob/living/simple_mob/hostile/hivebot/isSynthetic()
|
||||
return TRUE
|
||||
|
||||
// Subtypes.
|
||||
|
||||
// Melee like the base type, but more fragile.
|
||||
/mob/living/simple_animal/hostile/hivebot/swarm
|
||||
/mob/living/simple_mob/hostile/hivebot/swarm
|
||||
name = "swarm hivebot"
|
||||
desc = "A robot. It looks fragile and weak"
|
||||
maxHealth = 1 LASERS_TO_KILL
|
||||
@@ -67,7 +67,7 @@
|
||||
melee_damage_upper = 8
|
||||
|
||||
// This one has a semi-weak ranged attack.
|
||||
/mob/living/simple_animal/hostile/hivebot/range
|
||||
/mob/living/simple_mob/hostile/hivebot/range
|
||||
name = "ranged hivebot"
|
||||
desc = "A robot. It has a simple ballistic weapon."
|
||||
ranged = 1
|
||||
@@ -75,7 +75,7 @@
|
||||
health = 2 LASERS_TO_KILL
|
||||
|
||||
// This one shoots a burst of three, and is considerably more dangerous.
|
||||
/mob/living/simple_animal/hostile/hivebot/range/rapid
|
||||
/mob/living/simple_mob/hostile/hivebot/range/rapid
|
||||
name = "rapid hivebot"
|
||||
desc = "A robot. It has a fast firing ballistic rifle."
|
||||
icon_living = "strong"
|
||||
@@ -84,7 +84,7 @@
|
||||
health = 2 LASERS_TO_KILL
|
||||
|
||||
// Shoots EMPs, to screw over other robots.
|
||||
/mob/living/simple_animal/hostile/hivebot/range/ion
|
||||
/mob/living/simple_mob/hostile/hivebot/range/ion
|
||||
name = "engineering hivebot"
|
||||
desc = "A robot. It has a tool which emits focused electromagnetic pulses, which are deadly to synthetic adverseries."
|
||||
projectiletype = /obj/item/projectile/ion/small //VOREStation Edit
|
||||
@@ -95,7 +95,7 @@
|
||||
health = 2 LASERS_TO_KILL
|
||||
|
||||
// Shoots deadly lasers.
|
||||
/mob/living/simple_animal/hostile/hivebot/range/laser
|
||||
/mob/living/simple_mob/hostile/hivebot/range/laser
|
||||
name = "laser hivebot"
|
||||
desc = "A robot. It has an energy weapon."
|
||||
projectiletype = /obj/item/projectile/beam/blue
|
||||
@@ -104,7 +104,7 @@
|
||||
health = 2 LASERS_TO_KILL
|
||||
|
||||
// Beefy and ranged.
|
||||
/mob/living/simple_animal/hostile/hivebot/range/strong
|
||||
/mob/living/simple_mob/hostile/hivebot/range/strong
|
||||
name = "strong hivebot"
|
||||
desc = "A robot. This one has reinforced plating, and looks tougher."
|
||||
icon_living = "strong"
|
||||
@@ -114,7 +114,7 @@
|
||||
melee_damage_upper = 15
|
||||
|
||||
// Also beefy, but tries to stay at their 'home', ideal for base defense.
|
||||
/mob/living/simple_animal/hostile/hivebot/range/guard
|
||||
/mob/living/simple_mob/hostile/hivebot/range/guard
|
||||
name = "guard hivebot"
|
||||
desc = "A robot. It seems to be guarding something."
|
||||
returns_home = TRUE
|
||||
@@ -122,7 +122,7 @@
|
||||
health = 4 LASERS_TO_KILL
|
||||
|
||||
// This one is intended for players to use. Well rounded and can make other hivebots follow them with verbs.
|
||||
/mob/living/simple_animal/hostile/hivebot/range/player
|
||||
/mob/living/simple_mob/hostile/hivebot/range/player
|
||||
name = "commander hivebot"
|
||||
desc = "A robot. This one seems to direct the others, and it has a laser weapon."
|
||||
icon_living = "commander"
|
||||
@@ -135,7 +135,7 @@
|
||||
|
||||
// Procs.
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebot/death()
|
||||
/mob/living/simple_mob/hostile/hivebot/death()
|
||||
..()
|
||||
visible_message("<b>[src]</b> blows apart!")
|
||||
new /obj/effect/decal/cleanable/blood/gibs/robot(src.loc)
|
||||
@@ -144,17 +144,17 @@
|
||||
s.start()
|
||||
qdel(src)
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebot/speech_bubble_appearance()
|
||||
/mob/living/simple_mob/hostile/hivebot/speech_bubble_appearance()
|
||||
return "synthetic_evil"
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebot/verb/command_follow()
|
||||
/mob/living/simple_mob/hostile/hivebot/verb/command_follow()
|
||||
set name = "Command - Follow"
|
||||
set category = "Hivebot"
|
||||
set desc = "This will ask other hivebots to follow you."
|
||||
|
||||
say("Delegating new task: Follow.")
|
||||
|
||||
for(var/mob/living/simple_animal/hostile/hivebot/buddy in hearers(src))
|
||||
for(var/mob/living/simple_mob/hostile/hivebot/buddy in hearers(src))
|
||||
if(buddy.faction != faction)
|
||||
continue
|
||||
if(buddy == src)
|
||||
@@ -164,14 +164,14 @@
|
||||
spawn(rand(5, 10))
|
||||
buddy.say( pick(buddy.say_understood) )
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebot/verb/command_stop()
|
||||
/mob/living/simple_mob/hostile/hivebot/verb/command_stop()
|
||||
set name = "Command - Stop Following"
|
||||
set category = "Hivebot"
|
||||
set desc = "This will ask other hivebots to cease following you."
|
||||
|
||||
say("Delegating new task: Stop following.")
|
||||
|
||||
for(var/mob/living/simple_animal/hostile/hivebot/buddy in hearers(src))
|
||||
for(var/mob/living/simple_mob/hostile/hivebot/buddy in hearers(src))
|
||||
if(buddy.faction != faction)
|
||||
continue
|
||||
if(buddy == src)
|
||||
@@ -180,7 +180,7 @@
|
||||
spawn(rand(5, 10))
|
||||
buddy.say( pick(buddy.say_understood) )
|
||||
|
||||
/mob/living/simple_animal/hostile/hivebot/tele//this still needs work
|
||||
/mob/living/simple_mob/hostile/hivebot/tele//this still needs work
|
||||
name = "Beacon"
|
||||
desc = "Some odd beacon thing"
|
||||
icon = 'icons/mob/hivebot.dmi'
|
||||
@@ -219,11 +219,11 @@
|
||||
bot_amt--
|
||||
switch(bot_type)
|
||||
if("norm")
|
||||
new /mob/living/simple_animal/hostile/hivebot(get_turf(src))
|
||||
new /mob/living/simple_mob/hostile/hivebot(get_turf(src))
|
||||
if("range")
|
||||
new /mob/living/simple_animal/hostile/hivebot/range(get_turf(src))
|
||||
new /mob/living/simple_mob/hostile/hivebot/range(get_turf(src))
|
||||
if("rapid")
|
||||
new /mob/living/simple_animal/hostile/hivebot/range/rapid(get_turf(src))
|
||||
new /mob/living/simple_mob/hostile/hivebot/range/rapid(get_turf(src))
|
||||
spawn(100)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
// Abstract Class
|
||||
//
|
||||
|
||||
/mob/living/simple_animal/hostile/mimic
|
||||
/mob/living/simple_mob/hostile/mimic
|
||||
name = "crate"
|
||||
desc = "A rectangular steel crate."
|
||||
icon = 'icons/obj/storage.dmi'
|
||||
@@ -41,16 +41,16 @@
|
||||
|
||||
showvoreprefs = 0 //VOREStation Edit - Hides mechanical vore prefs for mimics. You can't see their gaping maws when they're just sitting idle.
|
||||
|
||||
/mob/living/simple_animal/hostile/mimic/set_target()
|
||||
/mob/living/simple_mob/hostile/mimic/set_target()
|
||||
. = ..()
|
||||
if(.)
|
||||
audible_emote("growls at [.]")
|
||||
|
||||
/mob/living/simple_animal/hostile/mimic/death()
|
||||
/mob/living/simple_mob/hostile/mimic/death()
|
||||
..()
|
||||
qdel(src)
|
||||
|
||||
/mob/living/simple_animal/hostile/mimic/will_show_tooltip()
|
||||
/mob/living/simple_mob/hostile/mimic/will_show_tooltip()
|
||||
return FALSE
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
//
|
||||
|
||||
// Aggro when you try to open them. Will also pickup loot when spawns and drop it when dies.
|
||||
/mob/living/simple_animal/hostile/mimic/crate
|
||||
/mob/living/simple_mob/hostile/mimic/crate
|
||||
|
||||
attacktext = list("bitten")
|
||||
|
||||
@@ -68,52 +68,52 @@
|
||||
var/attempt_open = 0
|
||||
|
||||
// Pickup loot
|
||||
/mob/living/simple_animal/hostile/mimic/crate/initialize()
|
||||
/mob/living/simple_mob/hostile/mimic/crate/initialize()
|
||||
. = ..()
|
||||
for(var/obj/item/I in loc)
|
||||
I.forceMove(src)
|
||||
|
||||
/mob/living/simple_animal/hostile/mimic/crate/DestroySurroundings()
|
||||
/mob/living/simple_mob/hostile/mimic/crate/DestroySurroundings()
|
||||
..()
|
||||
if(prob(90))
|
||||
icon_state = "[initial(icon_state)]open"
|
||||
else
|
||||
icon_state = initial(icon_state)
|
||||
|
||||
/mob/living/simple_animal/hostile/mimic/crate/ListTargets()
|
||||
/mob/living/simple_mob/hostile/mimic/crate/ListTargets()
|
||||
if(attempt_open)
|
||||
return ..()
|
||||
else
|
||||
return ..(1)
|
||||
|
||||
/mob/living/simple_animal/hostile/mimic/crate/set_target()
|
||||
/mob/living/simple_mob/hostile/mimic/crate/set_target()
|
||||
. = ..()
|
||||
if(.)
|
||||
trigger()
|
||||
|
||||
/mob/living/simple_animal/hostile/mimic/crate/PunchTarget()
|
||||
/mob/living/simple_mob/hostile/mimic/crate/PunchTarget()
|
||||
. = ..()
|
||||
if(.)
|
||||
icon_state = initial(icon_state)
|
||||
|
||||
/mob/living/simple_animal/hostile/mimic/crate/proc/trigger()
|
||||
/mob/living/simple_mob/hostile/mimic/crate/proc/trigger()
|
||||
if(!attempt_open)
|
||||
visible_message("<b>[src]</b> starts to move!")
|
||||
attempt_open = 1
|
||||
|
||||
/mob/living/simple_animal/hostile/mimic/crate/adjustBruteLoss(var/damage)
|
||||
/mob/living/simple_mob/hostile/mimic/crate/adjustBruteLoss(var/damage)
|
||||
trigger()
|
||||
..(damage)
|
||||
|
||||
/mob/living/simple_animal/hostile/mimic/crate/LoseTarget()
|
||||
/mob/living/simple_mob/hostile/mimic/crate/LoseTarget()
|
||||
..()
|
||||
icon_state = initial(icon_state)
|
||||
|
||||
/mob/living/simple_animal/hostile/mimic/crate/LostTarget()
|
||||
/mob/living/simple_mob/hostile/mimic/crate/LostTarget()
|
||||
..()
|
||||
icon_state = initial(icon_state)
|
||||
|
||||
/mob/living/simple_animal/hostile/mimic/crate/death()
|
||||
/mob/living/simple_mob/hostile/mimic/crate/death()
|
||||
var/obj/structure/closet/crate/C = new(get_turf(src))
|
||||
// Put loot in crate
|
||||
for(var/obj/O in src)
|
||||
@@ -122,7 +122,7 @@
|
||||
O.forceMove(C)
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/hostile/mimic/crate/PunchTarget()
|
||||
/mob/living/simple_mob/hostile/mimic/crate/PunchTarget()
|
||||
. =..()
|
||||
var/mob/living/L = .
|
||||
if(istype(L))
|
||||
@@ -136,7 +136,7 @@
|
||||
|
||||
var/global/list/protected_objects = list(/obj/structure/table, /obj/structure/cable, /obj/structure/window, /obj/item/projectile/animate)
|
||||
|
||||
/mob/living/simple_animal/hostile/mimic/copy
|
||||
/mob/living/simple_mob/hostile/mimic/copy
|
||||
|
||||
health = 100
|
||||
maxHealth = 100
|
||||
@@ -144,11 +144,11 @@ var/global/list/protected_objects = list(/obj/structure/table, /obj/structure/ca
|
||||
var/destroy_objects = 0
|
||||
var/knockdown_people = 0
|
||||
|
||||
/mob/living/simple_animal/hostile/mimic/copy/New(loc, var/obj/copy, var/mob/living/creator)
|
||||
/mob/living/simple_mob/hostile/mimic/copy/New(loc, var/obj/copy, var/mob/living/creator)
|
||||
..(loc)
|
||||
CopyObject(copy, creator)
|
||||
|
||||
/mob/living/simple_animal/hostile/mimic/copy/death()
|
||||
/mob/living/simple_mob/hostile/mimic/copy/death()
|
||||
|
||||
for(var/atom/movable/M in src)
|
||||
if(isbelly(M)) //VOREStation edit
|
||||
@@ -156,12 +156,12 @@ var/global/list/protected_objects = list(/obj/structure/table, /obj/structure/ca
|
||||
M.forceMove(get_turf(src))
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/hostile/mimic/copy/ListTargets()
|
||||
/mob/living/simple_mob/hostile/mimic/copy/ListTargets()
|
||||
// Return a list of targets that isn't the creator
|
||||
. = ..()
|
||||
return . - creator
|
||||
|
||||
/mob/living/simple_animal/hostile/mimic/copy/proc/CopyObject(var/obj/O, var/mob/living/creator)
|
||||
/mob/living/simple_mob/hostile/mimic/copy/proc/CopyObject(var/obj/O, var/mob/living/creator)
|
||||
|
||||
if((istype(O, /obj/item) || istype(O, /obj/structure)) && !is_type_in_list(O, protected_objects))
|
||||
|
||||
@@ -193,11 +193,11 @@ var/global/list/protected_objects = list(/obj/structure/table, /obj/structure/ca
|
||||
return 1
|
||||
return
|
||||
|
||||
/mob/living/simple_animal/hostile/mimic/copy/DestroySurroundings()
|
||||
/mob/living/simple_mob/hostile/mimic/copy/DestroySurroundings()
|
||||
if(destroy_objects)
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/hostile/mimic/copy/PunchTarget()
|
||||
/mob/living/simple_mob/hostile/mimic/copy/PunchTarget()
|
||||
. =..()
|
||||
if(knockdown_people)
|
||||
var/mob/living/L = .
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/shade
|
||||
/mob/living/simple_mob/shade
|
||||
name = "Shade"
|
||||
real_name = "Shade"
|
||||
desc = "A bound spirit"
|
||||
@@ -40,17 +40,17 @@
|
||||
|
||||
loot_list = list(/obj/item/weapon/ectoplasm = 100)
|
||||
|
||||
/mob/living/simple_animal/shade/cultify()
|
||||
/mob/living/simple_mob/shade/cultify()
|
||||
return
|
||||
|
||||
/mob/living/simple_animal/shade/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
/mob/living/simple_mob/shade/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
if(istype(O, /obj/item/device/soulstone))
|
||||
var/obj/item/device/soulstone/S = O;
|
||||
S.transfer_soul("SHADE", src, user)
|
||||
return
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/shade/death()
|
||||
/mob/living/simple_mob/shade/death()
|
||||
..()
|
||||
for(var/mob/M in viewers(src, null))
|
||||
if((M.client && !( M.blinded )))
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
//Weeping angels/SCP-173 hype
|
||||
//Horrible shitcoding and stolen code adaptations below. You have been warned.
|
||||
|
||||
/mob/living/simple_animal/hostile/statue
|
||||
/mob/living/simple_mob/hostile/statue
|
||||
name = "statue" // matches the name of the statue with the flesh-to-stone spell
|
||||
desc = "An incredibly lifelike marble carving. Its eyes seems to follow you..." // same as an ordinary statue with the added "eye following you" description
|
||||
icon = 'icons/obj/statue.dmi'
|
||||
@@ -79,21 +79,21 @@
|
||||
|
||||
// No movement while seen code.
|
||||
|
||||
/mob/living/simple_animal/hostile/statue/New(loc)
|
||||
/mob/living/simple_mob/hostile/statue/New(loc)
|
||||
..()
|
||||
// Give spells
|
||||
add_spell(new/spell/aoe_turf/flicker_lights)
|
||||
add_spell(new/spell/aoe_turf/blindness)
|
||||
add_spell(new/spell/aoe_turf/shatter)
|
||||
|
||||
/mob/living/simple_animal/hostile/statue/DestroySurroundings()
|
||||
/mob/living/simple_mob/hostile/statue/DestroySurroundings()
|
||||
if(can_be_seen(get_turf(loc)))
|
||||
if(client)
|
||||
to_chat(src, "<span class='warning'>You cannot move, there are eyes on you!</span>")
|
||||
return 0
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/statue/attackby(var/obj/item/O as obj, var/mob/user as mob) //banishing the statue is a risky job
|
||||
/mob/living/simple_mob/hostile/statue/attackby(var/obj/item/O as obj, var/mob/user as mob) //banishing the statue is a risky job
|
||||
if(istype(O, /obj/item/weapon/nullrod))
|
||||
visible_message("<span class='warning'>[user] tries to banish [src] with [O]!</span>")
|
||||
if(do_after(user, 15, src))
|
||||
@@ -111,21 +111,21 @@
|
||||
resistance = initial(resistance)
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/hostile/statue/death()
|
||||
/mob/living/simple_mob/hostile/statue/death()
|
||||
var/chunks_to_spawn = rand(2,5)
|
||||
for(var/I = 1 to chunks_to_spawn)
|
||||
new /obj/item/stack/material/marble(get_turf(loc))
|
||||
new /obj/item/cursed_marble(get_turf(loc))
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/hostile/statue/Move(turf/NewLoc)
|
||||
/mob/living/simple_mob/hostile/statue/Move(turf/NewLoc)
|
||||
if(can_be_seen(NewLoc))
|
||||
if(client)
|
||||
to_chat(src, "<span class='warning'>You cannot move, there are eyes on you!</span>")
|
||||
return 0
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/statue/Life()
|
||||
/mob/living/simple_mob/hostile/statue/Life()
|
||||
..()
|
||||
handle_target()
|
||||
handleAnnoyance()
|
||||
@@ -137,7 +137,7 @@
|
||||
else if ((annoyance - 2) > 0)
|
||||
annoyance -= 2
|
||||
|
||||
/mob/living/simple_animal/hostile/statue/proc/handle_target()
|
||||
/mob/living/simple_mob/hostile/statue/proc/handle_target()
|
||||
if(target_mob) // If we have a target and we're AI controlled
|
||||
var/mob/watching = can_be_seen()
|
||||
// If they're not our target
|
||||
@@ -148,7 +148,7 @@
|
||||
target_mob = watching
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/statue/proc/handleAnnoyance()
|
||||
/mob/living/simple_mob/hostile/statue/proc/handleAnnoyance()
|
||||
if(respond) //so it won't blind people 24/7
|
||||
respond = 0
|
||||
if (annoyance > 30)
|
||||
@@ -163,7 +163,7 @@
|
||||
respond = 1
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/statue/proc/AI_blind()
|
||||
/mob/living/simple_mob/hostile/statue/proc/AI_blind()
|
||||
for(var/mob/living/L in oviewers(12, src)) //the range is so big, because it tries to keep out of sight and can't reengage if you get too far
|
||||
if (prob(70))
|
||||
if(ishuman(L))
|
||||
@@ -174,7 +174,7 @@
|
||||
L.Blind(2)
|
||||
return
|
||||
|
||||
/mob/living/simple_animal/hostile/statue/proc/AI_flash()
|
||||
/mob/living/simple_mob/hostile/statue/proc/AI_flash()
|
||||
if (prob(60))
|
||||
visible_message("The statue slowly points at the light.")
|
||||
for(var/obj/machinery/light/L in oview(12, src))
|
||||
@@ -182,7 +182,7 @@
|
||||
return
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/statue/proc/AI_mirrorshmash()
|
||||
/mob/living/simple_mob/hostile/statue/proc/AI_mirrorshmash()
|
||||
for(var/obj/structure/mirror/M in oview(4, src))
|
||||
if ((!M.shattered )||(!M.glass))
|
||||
visible_message("The statue slowly points at the mirror!")
|
||||
@@ -192,7 +192,7 @@
|
||||
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/statue/AttackTarget()
|
||||
/mob/living/simple_mob/hostile/statue/AttackTarget()
|
||||
if(can_be_seen(get_turf(loc)))
|
||||
if(client)
|
||||
to_chat(src, "<span class='warning'>You cannot attack, there are eyes on you!</span>")
|
||||
@@ -203,7 +203,7 @@
|
||||
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/statue/DoPunch(var/atom/A) //had to redo that, since it's supposed to target only head and upper body
|
||||
/mob/living/simple_mob/hostile/statue/DoPunch(var/atom/A) //had to redo that, since it's supposed to target only head and upper body
|
||||
if(!Adjacent(A)) // They could've moved in the meantime.
|
||||
return FALSE
|
||||
|
||||
@@ -228,11 +228,11 @@
|
||||
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/statue/face_atom()
|
||||
/mob/living/simple_mob/hostile/statue/face_atom()
|
||||
if(!can_be_seen(get_turf(loc)))
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/hostile/statue/proc/can_be_seen(turf/destination)
|
||||
/mob/living/simple_mob/hostile/statue/proc/can_be_seen(turf/destination)
|
||||
if(!cannot_be_seen)
|
||||
return null
|
||||
|
||||
@@ -275,18 +275,18 @@
|
||||
|
||||
// Cannot talk
|
||||
|
||||
/mob/living/simple_animal/hostile/statue/say()
|
||||
/mob/living/simple_mob/hostile/statue/say()
|
||||
return 0
|
||||
|
||||
// Turn to dust when gibbed
|
||||
|
||||
/mob/living/simple_animal/hostile/statue/gib()
|
||||
/mob/living/simple_mob/hostile/statue/gib()
|
||||
dust()
|
||||
|
||||
|
||||
// Stop attacking clientless mobs
|
||||
|
||||
/mob/living/simple_animal/hostile/statue/proc/CanAttack(atom/the_target) //ignore clientless mobs
|
||||
/mob/living/simple_mob/hostile/statue/proc/CanAttack(atom/the_target) //ignore clientless mobs
|
||||
if(isliving(the_target))
|
||||
var/mob/living/L = the_target
|
||||
if(!L.client && !L.ckey)
|
||||
@@ -319,7 +319,7 @@
|
||||
spell_flags = 0
|
||||
range = 10
|
||||
|
||||
/spell/aoe_turf/blindness/cast(list/targets, mob/living/simple_animal/hostile/statue/user = usr)
|
||||
/spell/aoe_turf/blindness/cast(list/targets, mob/living/simple_mob/hostile/statue/user = usr)
|
||||
for(var/mob/living/L in targets)
|
||||
if(L == user || L == user.creator)
|
||||
continue
|
||||
@@ -350,7 +350,7 @@
|
||||
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/statue/verb/toggle_darkness()
|
||||
/mob/living/simple_mob/hostile/statue/verb/toggle_darkness()
|
||||
set name = "Toggle Darkness"
|
||||
set desc = "You ARE the darkness."
|
||||
set category = "Abilities"
|
||||
@@ -360,13 +360,13 @@
|
||||
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/statue/restrained()
|
||||
/mob/living/simple_mob/hostile/statue/restrained()
|
||||
. = ..()
|
||||
if(can_be_seen(loc))
|
||||
return 1
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/statue/ListTargets(dist = view_range)
|
||||
/mob/living/simple_mob/hostile/statue/ListTargets(dist = view_range)
|
||||
var/list/L = mobs_in_xray_view(dist, src)
|
||||
|
||||
for(var/obj/mecha/M in mechas_list)
|
||||
@@ -430,7 +430,7 @@
|
||||
/obj/item/cursed_marble/proc/transfer_personality(var/mob/candidate, var/mob/user)
|
||||
announce_ghost_joinleave(candidate, 0, "They are a statue now.")
|
||||
src.searching = 2
|
||||
var/mob/living/simple_animal/hostile/statue/S = new(get_turf(src))
|
||||
var/mob/living/simple_mob/hostile/statue/S = new(get_turf(src))
|
||||
S.client = candidate.client
|
||||
if(user)
|
||||
S.creator = user
|
||||
@@ -451,7 +451,7 @@
|
||||
var/choice = alert(user, "Are you sure you want to crush the marble? (this will spawn a clientless version of the statue, hostile to everyone, but you)", "Crush it?", "Yes", "No")
|
||||
if(choice)
|
||||
if(choice == "Yes")
|
||||
var/mob/living/simple_animal/hostile/statue/S = new /mob/living/simple_animal/hostile/statue(get_turf(user))
|
||||
var/mob/living/simple_mob/hostile/statue/S = new /mob/living/simple_mob/hostile/statue(get_turf(user))
|
||||
visible_message("<span class='warning'>The slab suddenly takes the shape of a humanoid!</span>")
|
||||
S.creator = user
|
||||
qdel(src)
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/hostile/scarybat
|
||||
/mob/living/simple_mob/hostile/scarybat
|
||||
name = "space bats"
|
||||
desc = "A swarm of cute little blood sucking bats that looks pretty upset."
|
||||
tt_desc = "N Bestia gregaria" //Nispean swarm bats, because of course Nisp has swarm bats
|
||||
@@ -47,25 +47,25 @@
|
||||
|
||||
var/mob/living/owner
|
||||
|
||||
/mob/living/simple_animal/hostile/scarybat/New(loc, mob/living/L as mob)
|
||||
/mob/living/simple_mob/hostile/scarybat/New(loc, mob/living/L as mob)
|
||||
..()
|
||||
if(istype(L))
|
||||
owner = L
|
||||
|
||||
/mob/living/simple_animal/hostile/scarybat/Process_Spacemove(var/check_drift = 0)
|
||||
/mob/living/simple_mob/hostile/scarybat/Process_Spacemove(var/check_drift = 0)
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/scarybat/set_target()
|
||||
/mob/living/simple_mob/hostile/scarybat/set_target()
|
||||
. = ..()
|
||||
if(.)
|
||||
emote("flutters towards [.]")
|
||||
|
||||
/mob/living/simple_animal/hostile/scarybat/ListTargets()
|
||||
/mob/living/simple_mob/hostile/scarybat/ListTargets()
|
||||
. = ..()
|
||||
if(owner)
|
||||
return . - owner
|
||||
|
||||
/mob/living/simple_animal/hostile/scarybat/PunchTarget()
|
||||
/mob/living/simple_mob/hostile/scarybat/PunchTarget()
|
||||
. =..()
|
||||
var/mob/living/L = .
|
||||
if(istype(L))
|
||||
@@ -73,13 +73,13 @@
|
||||
L.Stun(1)
|
||||
L.visible_message("<span class='danger'>\the [src] scares \the [L]!</span>")
|
||||
|
||||
/mob/living/simple_animal/hostile/scarybat/cult
|
||||
/mob/living/simple_mob/hostile/scarybat/cult
|
||||
faction = "cult"
|
||||
supernatural = 1
|
||||
|
||||
/mob/living/simple_animal/hostile/scarybat/cult/cultify()
|
||||
/mob/living/simple_mob/hostile/scarybat/cult/cultify()
|
||||
return
|
||||
|
||||
/mob/living/simple_animal/hostile/scarybat/cult/Life()
|
||||
/mob/living/simple_mob/hostile/scarybat/cult/Life()
|
||||
..()
|
||||
check_horde()
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
//Space bears!
|
||||
/mob/living/simple_animal/hostile/bear
|
||||
/mob/living/simple_mob/hostile/bear
|
||||
name = "space bear"
|
||||
desc = "A product of Space Russia?"
|
||||
tt_desc = "U Ursinae aetherius" //...bearspace? Maybe.
|
||||
@@ -48,7 +48,7 @@
|
||||
|
||||
// var/stance_step = 0
|
||||
|
||||
/mob/living/simple_animal/hostile/bear/handle_stance(var/new_stance)
|
||||
/mob/living/simple_mob/hostile/bear/handle_stance(var/new_stance)
|
||||
// Below was a bunch of code that made this specific mob be 'alert' and will hurt you when it gets closer.
|
||||
// It's commented out because it made infinite loops and the AI is going to be moved/rewritten sometime soon (famous last words)
|
||||
// and it would be better if this 'alert before attacking' behaviour was on the parent instead of a specific type of mob anyways.
|
||||
@@ -103,7 +103,7 @@
|
||||
..()
|
||||
*/
|
||||
|
||||
/mob/living/simple_animal/hostile/bear/update_icons()
|
||||
/mob/living/simple_mob/hostile/bear/update_icons()
|
||||
..()
|
||||
if(!stat)
|
||||
if(loc && istype(loc,/turf/space))
|
||||
@@ -111,16 +111,16 @@
|
||||
else
|
||||
icon_state = "bearfloor"
|
||||
|
||||
/mob/living/simple_animal/hostile/bear/Process_Spacemove(var/check_drift = 0)
|
||||
/mob/living/simple_mob/hostile/bear/Process_Spacemove(var/check_drift = 0)
|
||||
return
|
||||
|
||||
/mob/living/simple_animal/hostile/bear/FindTarget()
|
||||
/mob/living/simple_mob/hostile/bear/FindTarget()
|
||||
. = ..()
|
||||
if(.)
|
||||
custom_emote(1,"stares alertly at [.]")
|
||||
// handle_stance(STANCE_ALERT)
|
||||
|
||||
/mob/living/simple_animal/hostile/bear/PunchTarget()
|
||||
/mob/living/simple_mob/hostile/bear/PunchTarget()
|
||||
if(!Adjacent(target_mob))
|
||||
return
|
||||
custom_emote(1, pick( list("slashes at [target_mob]", "bites [target_mob]") ) )
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
//Why are these a subclass of cat?
|
||||
/mob/living/simple_animal/bird
|
||||
/mob/living/simple_mob/bird
|
||||
name = "parrot"
|
||||
desc = "A domesticated bird. Tweet tweet!"
|
||||
icon = 'icons/mob/birds.dmi'
|
||||
@@ -18,127 +18,127 @@
|
||||
|
||||
holder_type = /obj/item/weapon/holder/bird
|
||||
|
||||
/mob/living/simple_animal/bird/kea
|
||||
/mob/living/simple_mob/bird/kea
|
||||
name = "Kea"
|
||||
icon_state = "kea-flap"
|
||||
icon_living = "kea-flap"
|
||||
icon_dead = "kea-dead"
|
||||
|
||||
/mob/living/simple_animal/bird/eclectus
|
||||
/mob/living/simple_mob/bird/eclectus
|
||||
name = "Eclectus"
|
||||
icon_state = "eclectus-flap"
|
||||
icon_living = "eclectus-flap"
|
||||
icon_dead = "eclectus-dead"
|
||||
|
||||
/mob/living/simple_animal/bird/eclectusf
|
||||
/mob/living/simple_mob/bird/eclectusf
|
||||
name = "Eclectus"
|
||||
icon_state = "eclectusf-flap"
|
||||
icon_living = "eclectusf-flap"
|
||||
icon_dead = "eclectusf-dead"
|
||||
|
||||
/mob/living/simple_animal/bird/greybird
|
||||
/mob/living/simple_mob/bird/greybird
|
||||
name = "Grey Bird"
|
||||
icon_state = "agrey-flap"
|
||||
icon_living = "agrey-flap"
|
||||
icon_dead = "agrey-dead"
|
||||
|
||||
/mob/living/simple_animal/bird/blue_caique
|
||||
/mob/living/simple_mob/bird/blue_caique
|
||||
name = "Blue Caique "
|
||||
icon_state = "bcaique-flap"
|
||||
icon_living = "bcaique-flap"
|
||||
icon_dead = "bcaique-dead"
|
||||
|
||||
/mob/living/simple_animal/bird/white_caique
|
||||
/mob/living/simple_mob/bird/white_caique
|
||||
name = "White caique"
|
||||
icon_state = "wcaique-flap"
|
||||
icon_living = "wcaique-flap"
|
||||
icon_dead = "wcaique-dead"
|
||||
|
||||
/mob/living/simple_animal/bird/green_budgerigar
|
||||
/mob/living/simple_mob/bird/green_budgerigar
|
||||
name = "Green Budgerigar"
|
||||
icon_state = "gbudge-flap"
|
||||
icon_living = "gbudge-flap"
|
||||
icon_dead = "gbudge-dead"
|
||||
|
||||
/mob/living/simple_animal/bird/blue_Budgerigar
|
||||
/mob/living/simple_mob/bird/blue_Budgerigar
|
||||
name = "Blue Budgerigar"
|
||||
icon_state = "bbudge-flap"
|
||||
icon_living = "bbudge-flap"
|
||||
icon_dead = "bbudge-dead"
|
||||
|
||||
/mob/living/simple_animal/bird/bluegreen_Budgerigar
|
||||
/mob/living/simple_mob/bird/bluegreen_Budgerigar
|
||||
name = "Bluegreen Budgerigar"
|
||||
icon_state = "bgbudge-flap"
|
||||
icon_living = "bgbudge-flap"
|
||||
icon_dead = "bgbudge-dead"
|
||||
|
||||
/mob/living/simple_animal/bird/commonblackbird
|
||||
/mob/living/simple_mob/bird/commonblackbird
|
||||
name = "Black Bird"
|
||||
icon_state = "commonblackbird"
|
||||
icon_living = "commonblackbird"
|
||||
icon_dead = "commonblackbird-dead"
|
||||
|
||||
/mob/living/simple_animal/bird/azuretit
|
||||
/mob/living/simple_mob/bird/azuretit
|
||||
name = "Azure Tit"
|
||||
icon_state = "azuretit"
|
||||
icon_living = "azuretit"
|
||||
icon_dead = "azuretit-dead"
|
||||
|
||||
/mob/living/simple_animal/bird/europeanrobin
|
||||
/mob/living/simple_mob/bird/europeanrobin
|
||||
name = "European Robin"
|
||||
icon_state = "europeanrobin"
|
||||
icon_living = "europeanrobin"
|
||||
icon_dead = "europeanrobin-dead"
|
||||
|
||||
/mob/living/simple_animal/bird/goldcrest
|
||||
/mob/living/simple_mob/bird/goldcrest
|
||||
name = "Goldcrest"
|
||||
icon_state = "goldcrest"
|
||||
icon_living = "goldcrest"
|
||||
icon_dead = "goldcrest-dead"
|
||||
|
||||
/mob/living/simple_animal/bird/ringneckdove
|
||||
/mob/living/simple_mob/bird/ringneckdove
|
||||
name = "Ringneck Dove"
|
||||
icon_state = "ringneckdove"
|
||||
icon_living = "ringneckdove"
|
||||
icon_dead = "ringneckdove-dead"
|
||||
|
||||
/mob/living/simple_animal/bird/cockatiel
|
||||
/mob/living/simple_mob/bird/cockatiel
|
||||
name = "Cockatiel"
|
||||
icon_state = "tiel-flap"
|
||||
icon_living = "tiel-flap"
|
||||
icon_dead = "tiel-dead"
|
||||
|
||||
/mob/living/simple_animal/bird/white_cockatiel
|
||||
/mob/living/simple_mob/bird/white_cockatiel
|
||||
name = "White Cockatiel"
|
||||
icon_state = "wtiel-flap"
|
||||
icon_living = "wtiel-flap"
|
||||
icon_dead = "wtiel-dead"
|
||||
|
||||
/mob/living/simple_animal/bird/yellowish_cockatiel
|
||||
/mob/living/simple_mob/bird/yellowish_cockatiel
|
||||
name = "Yellowish Cockatiel"
|
||||
icon_state = "luttiel-flap"
|
||||
icon_living = "luttiel-flap"
|
||||
icon_dead = "luttiel-dead"
|
||||
|
||||
/mob/living/simple_animal/bird/grey_cockatiel
|
||||
/mob/living/simple_mob/bird/grey_cockatiel
|
||||
name = "Grey Cockatiel"
|
||||
icon_state = "blutiel-flap"
|
||||
icon_living = "blutiel-flap"
|
||||
icon_dead = "blutiel-dead"
|
||||
|
||||
/mob/living/simple_animal/bird/too
|
||||
/mob/living/simple_mob/bird/too
|
||||
name = "Too"
|
||||
icon_state = "too-flap"
|
||||
icon_living = "too-flap"
|
||||
icon_dead = "too-dead"
|
||||
|
||||
/mob/living/simple_animal/bird/hooded_too
|
||||
/mob/living/simple_mob/bird/hooded_too
|
||||
name = "Utoo"
|
||||
icon_state = "utoo-flap"
|
||||
icon_living = "utoo-flap"
|
||||
icon_dead = "utoo-dead"
|
||||
|
||||
/mob/living/simple_animal/bird/pink_too
|
||||
/mob/living/simple_mob/bird/pink_too
|
||||
name = "Mtoo"
|
||||
icon_state = "mtoo-flap"
|
||||
icon_living = "mtoo-flap"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/hostile/carp
|
||||
/mob/living/simple_mob/hostile/carp
|
||||
name = "space carp"
|
||||
desc = "A ferocious, fang-bearing creature that resembles a fish."
|
||||
tt_desc = "U Cyprinus aetherius" //carpspace? maybe
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat
|
||||
|
||||
/mob/living/simple_animal/hostile/carp/large
|
||||
/mob/living/simple_mob/hostile/carp/large
|
||||
name = "elder carp"
|
||||
desc = "An older, more matured carp. Few survive to this age due to their aggressiveness."
|
||||
icon = 'icons/mob/64x32.dmi'
|
||||
@@ -56,7 +56,7 @@
|
||||
maxHealth = 50
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/carp/large/huge
|
||||
/mob/living/simple_mob/hostile/carp/large/huge
|
||||
name = "great white carp"
|
||||
desc = "A very rare breed of carp- and a very aggressive one."
|
||||
icon = 'icons/mob/64x64.dmi'
|
||||
@@ -75,15 +75,15 @@
|
||||
old_y = -16
|
||||
pixel_y = -16
|
||||
|
||||
/mob/living/simple_animal/hostile/carp/Process_Spacemove(var/check_drift = 0)
|
||||
/mob/living/simple_mob/hostile/carp/Process_Spacemove(var/check_drift = 0)
|
||||
return 1 //No drifting in space for space carp! //original comments do not steal
|
||||
|
||||
/mob/living/simple_animal/hostile/carp/set_target()
|
||||
/mob/living/simple_mob/hostile/carp/set_target()
|
||||
. = ..()
|
||||
if(.)
|
||||
custom_emote(1,"nashes at [.]")
|
||||
|
||||
/mob/living/simple_animal/hostile/carp/PunchTarget()
|
||||
/mob/living/simple_mob/hostile/carp/PunchTarget()
|
||||
. =..()
|
||||
var/mob/living/L = .
|
||||
if(istype(L))
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
//Cat
|
||||
/mob/living/simple_animal/cat
|
||||
/mob/living/simple_mob/cat
|
||||
name = "cat"
|
||||
desc = "A domesticated, feline pet. Has a tendency to adopt crewmembers."
|
||||
tt_desc = "E Felis silvestris catus"
|
||||
@@ -44,7 +44,7 @@
|
||||
var/turns_since_scan = 0
|
||||
var/mob/flee_target
|
||||
|
||||
/mob/living/simple_animal/cat/Life()
|
||||
/mob/living/simple_mob/cat/Life()
|
||||
. = ..()
|
||||
if(!.) return
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
|
||||
handle_flee_target()
|
||||
|
||||
/mob/living/simple_animal/cat/PunchTarget()
|
||||
/mob/living/simple_mob/cat/PunchTarget()
|
||||
if(ismouse(target_mob))
|
||||
var/mob/living/simple_mob/animal/passive/mouse/mouse = target_mob
|
||||
mouse.splat()
|
||||
@@ -71,11 +71,11 @@
|
||||
else
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/cat/Found(var/atom/found_atom)
|
||||
/mob/living/simple_mob/cat/Found(var/atom/found_atom)
|
||||
if(ismouse(found_atom) && SA_attackable(found_atom))
|
||||
return found_atom
|
||||
|
||||
/mob/living/simple_animal/cat/proc/handle_flee_target()
|
||||
/mob/living/simple_mob/cat/proc/handle_flee_target()
|
||||
//see if we should stop fleeing
|
||||
if (flee_target && !(flee_target in ListTargets(view_range)))
|
||||
flee_target = null
|
||||
@@ -88,21 +88,21 @@
|
||||
stop_automated_movement = 1
|
||||
walk_away(src, flee_target, 7, 2)
|
||||
|
||||
/mob/living/simple_animal/cat/react_to_attack(var/atom/A)
|
||||
/mob/living/simple_mob/cat/react_to_attack(var/atom/A)
|
||||
if(A == src) return
|
||||
flee_target = A
|
||||
turns_since_scan = 5
|
||||
|
||||
/mob/living/simple_animal/cat/ex_act()
|
||||
/mob/living/simple_mob/cat/ex_act()
|
||||
. = ..()
|
||||
react_to_attack(src.loc)
|
||||
|
||||
//Basic friend AI
|
||||
/mob/living/simple_animal/cat/fluff
|
||||
/mob/living/simple_mob/cat/fluff
|
||||
var/mob/living/carbon/human/friend
|
||||
var/befriend_job = null
|
||||
|
||||
/mob/living/simple_animal/cat/fluff/Life()
|
||||
/mob/living/simple_mob/cat/fluff/Life()
|
||||
. = ..()
|
||||
if(!. || ai_inactive || !friend) return
|
||||
|
||||
@@ -129,7 +129,7 @@
|
||||
var/verb = pick("meows", "mews", "mrowls")
|
||||
audible_emote("[verb] anxiously.")
|
||||
|
||||
/mob/living/simple_animal/cat/fluff/verb/become_friends()
|
||||
/mob/living/simple_mob/cat/fluff/verb/become_friends()
|
||||
set name = "Become Friends"
|
||||
set category = "IC"
|
||||
set src in view(1)
|
||||
@@ -153,7 +153,7 @@
|
||||
return
|
||||
|
||||
//RUNTIME IS ALIVE! SQUEEEEEEEE~
|
||||
/mob/living/simple_animal/cat/fluff/Runtime
|
||||
/mob/living/simple_mob/cat/fluff/Runtime
|
||||
name = "Runtime"
|
||||
desc = "Her fur has the look and feel of velvet, and her tail quivers occasionally."
|
||||
tt_desc = "E Felis silvestris medicalis" //a hypoallergenic breed produced by NT for... medical purposes? Sure.
|
||||
@@ -165,7 +165,7 @@
|
||||
icon_rest = "cat_rest"
|
||||
befriend_job = "Chief Medical Officer"
|
||||
|
||||
/mob/living/simple_animal/cat/kitten
|
||||
/mob/living/simple_mob/cat/kitten
|
||||
name = "kitten"
|
||||
desc = "D'aaawwww"
|
||||
icon_state = "kitten"
|
||||
@@ -181,7 +181,7 @@
|
||||
gender = MALE
|
||||
icon_state = "cat3"
|
||||
|
||||
/mob/living/simple_animal/cat/fluff/bones
|
||||
/mob/living/simple_mob/cat/fluff/bones
|
||||
name = "Bones"
|
||||
desc = "That's Bones the cat. He's a laid back, black cat. Meow."
|
||||
gender = MALE
|
||||
@@ -193,6 +193,6 @@
|
||||
holder_type = /obj/item/weapon/holder/cat/fluff/bones
|
||||
var/friend_name = "Erstatz Vryroxes"
|
||||
|
||||
/mob/living/simple_animal/cat/kitten/New()
|
||||
/mob/living/simple_mob/cat/kitten/New()
|
||||
gender = pick(MALE, FEMALE)
|
||||
..()
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/cat/fluff/Runtime/init_vore()
|
||||
/mob/living/simple_mob/cat/fluff/Runtime/init_vore()
|
||||
..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "Stomach"
|
||||
@@ -38,7 +38,7 @@
|
||||
icon_state = "kitten"
|
||||
w_class = ITEMSIZE_SMALL
|
||||
|
||||
/mob/living/simple_animal/cat/fluff/tabiranth
|
||||
/mob/living/simple_mob/cat/fluff/tabiranth
|
||||
name = "Spirit"
|
||||
desc = "A small, inquisitive feline, who constantly seems to investigate his surroundings."
|
||||
icon = 'icons/mob/custom_items_mob.dmi'
|
||||
@@ -55,7 +55,7 @@
|
||||
health = 50
|
||||
|
||||
//Emergency teleport - Until a spriter makes something better
|
||||
/mob/living/simple_animal/cat/fluff/tabiranth/death(gibbed, deathmessage = "teleports away!")
|
||||
/mob/living/simple_mob/cat/fluff/tabiranth/death(gibbed, deathmessage = "teleports away!")
|
||||
overlays = list()
|
||||
icon_state = ""
|
||||
flick("kphaseout",src)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
//Corgi
|
||||
/mob/living/simple_animal/corgi
|
||||
/mob/living/simple_mob/corgi
|
||||
name = "corgi"
|
||||
real_name = "corgi"
|
||||
desc = "It's a corgi."
|
||||
@@ -33,7 +33,7 @@
|
||||
var/obj/item/inventory_back
|
||||
|
||||
//IAN! SQUEEEEEEEEE~
|
||||
/mob/living/simple_animal/corgi/Ian
|
||||
/mob/living/simple_mob/corgi/Ian
|
||||
name = "Ian"
|
||||
real_name = "Ian" //Intended to hold the name without altering it.
|
||||
gender = MALE
|
||||
@@ -44,7 +44,7 @@
|
||||
response_disarm = "bops"
|
||||
response_harm = "kicks"
|
||||
|
||||
/mob/living/simple_animal/corgi/Ian/Life()
|
||||
/mob/living/simple_mob/corgi/Ian/Life()
|
||||
..()
|
||||
|
||||
//Not replacing with SA FollowTarget mechanics because Ian behaves... very... specifically.
|
||||
@@ -100,7 +100,7 @@
|
||||
name = "corgi meat"
|
||||
desc = "Tastes like... well, you know..."
|
||||
|
||||
/mob/living/simple_animal/corgi/attackby(var/obj/item/O as obj, var/mob/user as mob) //Marker -Agouri
|
||||
/mob/living/simple_mob/corgi/attackby(var/obj/item/O as obj, var/mob/user as mob) //Marker -Agouri
|
||||
if(istype(O, /obj/item/weapon/newspaper))
|
||||
if(!stat)
|
||||
for(var/mob/M in viewers(user, null))
|
||||
@@ -113,7 +113,7 @@
|
||||
else
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/corgi/regenerate_icons()
|
||||
/mob/living/simple_mob/corgi/regenerate_icons()
|
||||
overlays = list()
|
||||
|
||||
if(inventory_head)
|
||||
@@ -137,7 +137,7 @@
|
||||
return
|
||||
|
||||
|
||||
/mob/living/simple_animal/corgi/puppy
|
||||
/mob/living/simple_mob/corgi/puppy
|
||||
name = "corgi puppy"
|
||||
real_name = "corgi"
|
||||
desc = "It's a corgi puppy."
|
||||
@@ -146,7 +146,7 @@
|
||||
icon_dead = "puppy_dead"
|
||||
|
||||
//pupplies cannot wear anything.
|
||||
/mob/living/simple_animal/corgi/puppy/Topic(href, href_list)
|
||||
/mob/living/simple_mob/corgi/puppy/Topic(href, href_list)
|
||||
if(href_list["remove_inv"] || href_list["add_inv"])
|
||||
usr << "<font color='red'>You can't fit this on [src]</font>"
|
||||
return
|
||||
@@ -154,7 +154,7 @@
|
||||
|
||||
|
||||
//LISA! SQUEEEEEEEEE~
|
||||
/mob/living/simple_animal/corgi/Lisa
|
||||
/mob/living/simple_mob/corgi/Lisa
|
||||
name = "Lisa"
|
||||
real_name = "Lisa"
|
||||
gender = FEMALE
|
||||
@@ -169,13 +169,13 @@
|
||||
var/puppies = 0
|
||||
|
||||
//Lisa already has a cute bow!
|
||||
/mob/living/simple_animal/corgi/Lisa/Topic(href, href_list)
|
||||
/mob/living/simple_mob/corgi/Lisa/Topic(href, href_list)
|
||||
if(href_list["remove_inv"] || href_list["add_inv"])
|
||||
to_chat(usr, "<font color='red'>[src] already has a cute bow!</font>")
|
||||
return
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/corgi/Lisa/Life()
|
||||
/mob/living/simple_mob/corgi/Lisa/Life()
|
||||
..()
|
||||
|
||||
if(!stat && !resting && !buckled)
|
||||
@@ -185,7 +185,7 @@
|
||||
var/alone = 1
|
||||
var/ian = 0
|
||||
for(var/mob/M in oviewers(7, src))
|
||||
if(istype(M, /mob/living/simple_animal/corgi/Ian))
|
||||
if(istype(M, /mob/living/simple_mob/corgi/Ian))
|
||||
if(M.client)
|
||||
alone = 0
|
||||
break
|
||||
@@ -197,7 +197,7 @@
|
||||
if(alone && ian && puppies < 4)
|
||||
if(near_camera(src) || near_camera(ian))
|
||||
return
|
||||
new /mob/living/simple_animal/corgi/puppy(loc)
|
||||
new /mob/living/simple_mob/corgi/puppy(loc)
|
||||
|
||||
|
||||
if(prob(1))
|
||||
@@ -209,7 +209,7 @@
|
||||
|
||||
|
||||
//Technically this should be like, its own file or something or a subset of dog but whatever. Not a coder.
|
||||
/mob/living/simple_animal/corgi/tamaskan
|
||||
/mob/living/simple_mob/corgi/tamaskan
|
||||
name = "tamaskan"
|
||||
real_name = "tamaskan"
|
||||
desc = "It's a tamaskan."
|
||||
@@ -219,7 +219,7 @@
|
||||
|
||||
retaliate = 1 //Tamaskans are bigass dogs, okay?
|
||||
|
||||
/mob/living/simple_animal/corgi/tamaskan/spice
|
||||
/mob/living/simple_mob/corgi/tamaskan/spice
|
||||
name = "Spice"
|
||||
real_name = "Spice" //Intended to hold the name without altering it.
|
||||
gender = FEMALE
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/corgi/show_inv(mob/user as mob)
|
||||
/mob/living/simple_mob/corgi/show_inv(mob/user as mob)
|
||||
user.set_machine(src)
|
||||
if(user.stat) return
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
onclose(user, "mob[real_name]")
|
||||
return
|
||||
|
||||
/mob/living/simple_animal/corgi/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
/mob/living/simple_mob/corgi/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
if(inventory_head && inventory_back)
|
||||
//helmet and armor = 100% protection
|
||||
if( istype(inventory_head,/obj/item/clothing/head/helmet) && istype(inventory_back,/obj/item/clothing/suit/armor) )
|
||||
@@ -33,7 +33,7 @@
|
||||
return
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/corgi/Topic(href, href_list)
|
||||
/mob/living/simple_mob/corgi/Topic(href, href_list)
|
||||
if(usr.stat) return
|
||||
|
||||
//Removing from inventory
|
||||
@@ -150,7 +150,7 @@
|
||||
else
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/corgi/proc/place_on_head(obj/item/item_to_add)
|
||||
/mob/living/simple_mob/corgi/proc/place_on_head(obj/item/item_to_add)
|
||||
item_to_add.loc = src
|
||||
src.inventory_head = item_to_add
|
||||
regenerate_icons()
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
//Look Sir, free crabs!
|
||||
/mob/living/simple_animal/crab
|
||||
/mob/living/simple_mob/crab
|
||||
name = "crab"
|
||||
desc = "A hard-shelled crustacean. Seems quite content to lounge around all the time."
|
||||
tt_desc = "E Cancer bellianus"
|
||||
@@ -28,7 +28,7 @@
|
||||
var/obj/item/inventory_head
|
||||
var/obj/item/inventory_mask
|
||||
|
||||
/mob/living/simple_animal/crab/Life()
|
||||
/mob/living/simple_mob/crab/Life()
|
||||
..()
|
||||
//CRAB movement, I'm not porting this up to SA because... "sideways-only movement" var nothanks
|
||||
if(!ckey && !stat)
|
||||
@@ -40,7 +40,7 @@
|
||||
regenerate_icons()
|
||||
|
||||
//COFFEE! SQUEEEEEEEEE!
|
||||
/mob/living/simple_animal/crab/Coffee
|
||||
/mob/living/simple_mob/crab/Coffee
|
||||
name = "Coffee"
|
||||
real_name = "Coffee"
|
||||
desc = "It's Coffee, the other pet!"
|
||||
@@ -49,7 +49,7 @@
|
||||
response_harm = "stomps"
|
||||
|
||||
//Sif Crabs
|
||||
/mob/living/simple_animal/giant_crab
|
||||
/mob/living/simple_mob/giant_crab
|
||||
name = "giant crab"
|
||||
desc = "A large, hard-shelled crustacean. This one is mostly grey."
|
||||
tt_desc = "S Cancer holligus"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// Different types of fish! They are all subtypes of this tho
|
||||
/mob/living/simple_animal/fish
|
||||
/mob/living/simple_mob/fish
|
||||
name = "fish"
|
||||
desc = "Its a fishy. No touchy fishy."
|
||||
icon = 'icons/mob/fish.dmi'
|
||||
@@ -16,7 +16,7 @@
|
||||
)
|
||||
|
||||
// Don't swim out of the water
|
||||
/mob/living/simple_animal/fish/handle_wander_movement()
|
||||
/mob/living/simple_mob/fish/handle_wander_movement()
|
||||
if(isturf(src.loc) && !resting && !buckled && canmove) //Physically capable of moving?
|
||||
lifes_since_move++ //Increment turns since move (turns are life() cycles)
|
||||
if(lifes_since_move >= turns_per_move)
|
||||
@@ -30,49 +30,49 @@
|
||||
lifes_since_move = 0
|
||||
|
||||
// Take damage if we are not in water
|
||||
/mob/living/simple_animal/fish/handle_breathing()
|
||||
/mob/living/simple_mob/fish/handle_breathing()
|
||||
var/turf/T = get_turf(src)
|
||||
if(T && !is_type_in_list(T, suitable_turf_types))
|
||||
if(prob(50))
|
||||
say(pick("Blub", "Glub", "Burble"))
|
||||
adjustBruteLoss(unsuitable_atoms_damage)
|
||||
|
||||
/mob/living/simple_animal/fish/bass
|
||||
/mob/living/simple_mob/fish/bass
|
||||
name = "bass"
|
||||
tt_desc = "E Micropterus notius"
|
||||
icon_state = "bass-swim"
|
||||
icon_living = "bass-swim"
|
||||
icon_dead = "bass-dead"
|
||||
|
||||
/mob/living/simple_animal/fish/trout
|
||||
/mob/living/simple_mob/fish/trout
|
||||
name = "trout"
|
||||
tt_desc = "E Salmo trutta"
|
||||
icon_state = "trout-swim"
|
||||
icon_living = "trout-swim"
|
||||
icon_dead = "trout-dead"
|
||||
|
||||
/mob/living/simple_animal/fish/salmon
|
||||
/mob/living/simple_mob/fish/salmon
|
||||
name = "salmon"
|
||||
tt_desc = "E Oncorhynchus nerka"
|
||||
icon_state = "salmon-swim"
|
||||
icon_living = "salmon-swim"
|
||||
icon_dead = "salmon-dead"
|
||||
|
||||
/mob/living/simple_animal/fish/perch
|
||||
/mob/living/simple_mob/fish/perch
|
||||
name = "perch"
|
||||
tt_desc = "E Perca flavescens"
|
||||
icon_state = "perch-swim"
|
||||
icon_living = "perch-swim"
|
||||
icon_dead = "perch-dead"
|
||||
|
||||
/mob/living/simple_animal/fish/pike
|
||||
/mob/living/simple_mob/fish/pike
|
||||
name = "pike"
|
||||
tt_desc = "E Esox aquitanicus"
|
||||
icon_state = "pike-swim"
|
||||
icon_living = "pike-swim"
|
||||
icon_dead = "pike-dead"
|
||||
|
||||
/mob/living/simple_animal/fish/koi
|
||||
/mob/living/simple_mob/fish/koi
|
||||
name = "koi"
|
||||
tt_desc = "E Cyprinus rubrofuscus"
|
||||
icon_state = "koi-swim"
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
/mob/living/simple_animal/fish/koi/poisonous
|
||||
/mob/living/simple_mob/fish/koi/poisonous
|
||||
desc = "A genetic marvel, combining the docility and aesthetics of the koi with some of the resiliency and cunning of the noble space carp."
|
||||
health = 50
|
||||
maxHealth = 50
|
||||
|
||||
/mob/living/simple_animal/fish/koi/poisonous/New()
|
||||
/mob/living/simple_mob/fish/koi/poisonous/New()
|
||||
..()
|
||||
create_reagents(60)
|
||||
reagents.add_reagent("toxin", 45)
|
||||
reagents.add_reagent("impedrezene", 15)
|
||||
|
||||
/mob/living/simple_animal/fish/koi/poisonous/Life()
|
||||
/mob/living/simple_mob/fish/koi/poisonous/Life()
|
||||
..()
|
||||
if(isbelly(loc) && prob(10))
|
||||
var/obj/belly/B = loc
|
||||
sting(B.owner)
|
||||
|
||||
/mob/living/simple_animal/fish/koi/poisonous/react_to_attack(var/atom/A)
|
||||
/mob/living/simple_mob/fish/koi/poisonous/react_to_attack(var/atom/A)
|
||||
if(isliving(A) && Adjacent(A))
|
||||
var/mob/living/M = A
|
||||
visible_message("<span class='warning'>\The [src][is_dead()?"'s corpse":""] flails at [M]!</span>")
|
||||
@@ -33,7 +33,7 @@
|
||||
break
|
||||
sleep(3)
|
||||
|
||||
/mob/living/simple_animal/fish/koi/poisonous/proc/sting(var/mob/living/M)
|
||||
/mob/living/simple_mob/fish/koi/poisonous/proc/sting(var/mob/living/M)
|
||||
if(!M.reagents)
|
||||
return 0
|
||||
M.reagents.add_reagent("toxin", 2)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/fluffy
|
||||
/mob/living/simple_mob/fluffy
|
||||
name = "Fluffy"
|
||||
desc = "It's a pink Diyaab! It seems to be very tame and quiet."
|
||||
icon = 'icons/mob/animal_vr.dmi'
|
||||
@@ -28,7 +28,7 @@
|
||||
meat_amount = 1
|
||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
|
||||
|
||||
/mob/living/simple_animal/fluffy/Life()
|
||||
/mob/living/simple_mob/fluffy/Life()
|
||||
. = ..()
|
||||
if(!. || ai_inactive) return
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/fox
|
||||
/mob/living/simple_mob/fox
|
||||
name = "fox"
|
||||
desc = "It's a fox. I wonder what it says?"
|
||||
tt_desc = "Vulpes vulpes"
|
||||
@@ -39,7 +39,7 @@
|
||||
var/turns_since_scan = 0
|
||||
var/mob/flee_target
|
||||
|
||||
/mob/living/simple_animal/fox/init_vore()
|
||||
/mob/living/simple_mob/fox/init_vore()
|
||||
..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "Stomach"
|
||||
@@ -62,25 +62,25 @@
|
||||
"With a loud glorp, the stomach spills more acids onto you.")
|
||||
|
||||
// All them complicated fox procedures.
|
||||
/mob/living/simple_animal/fox/Life()
|
||||
/mob/living/simple_mob/fox/Life()
|
||||
. = ..()
|
||||
if(!.) return
|
||||
|
||||
handle_flee_target()
|
||||
|
||||
/mob/living/simple_animal/fox/PunchTarget()
|
||||
if(istype(target_mob,/mob/living/simple_animal/mouse))
|
||||
var/mob/living/simple_animal/mouse/mouse = target_mob
|
||||
/mob/living/simple_mob/fox/PunchTarget()
|
||||
if(istype(target_mob,/mob/living/simple_mob/mouse))
|
||||
var/mob/living/simple_mob/mouse/mouse = target_mob
|
||||
mouse.splat()
|
||||
visible_emote(pick("bites \the [mouse]!","pounces on \the [mouse]!","chomps on \the [mouse]!"))
|
||||
else
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/fox/Found(var/atom/found_atom)
|
||||
if(istype(found_atom,/mob/living/simple_animal/mouse))
|
||||
/mob/living/simple_mob/fox/Found(var/atom/found_atom)
|
||||
if(istype(found_atom,/mob/living/simple_mob/mouse))
|
||||
return found_atom
|
||||
|
||||
/mob/living/simple_animal/fox/proc/handle_flee_target()
|
||||
/mob/living/simple_mob/fox/proc/handle_flee_target()
|
||||
//see if we should stop fleeing
|
||||
if (flee_target && !(flee_target in ListTargets(view_range)))
|
||||
flee_target = null
|
||||
@@ -93,16 +93,16 @@
|
||||
stop_automated_movement = 1
|
||||
walk_away(src, flee_target, 7, 2)
|
||||
|
||||
/mob/living/simple_animal/fox/react_to_attack(var/atom/A)
|
||||
/mob/living/simple_mob/fox/react_to_attack(var/atom/A)
|
||||
if(A == src) return
|
||||
flee_target = A
|
||||
turns_since_scan = 5
|
||||
|
||||
/mob/living/simple_animal/fox/ex_act()
|
||||
/mob/living/simple_mob/fox/ex_act()
|
||||
. = ..()
|
||||
react_to_attack(src.loc)
|
||||
|
||||
/mob/living/simple_animal/fox/MouseDrop(atom/over_object)
|
||||
/mob/living/simple_mob/fox/MouseDrop(atom/over_object)
|
||||
var/mob/living/carbon/H = over_object
|
||||
if(!istype(H) || !Adjacent(H)) return ..()
|
||||
|
||||
@@ -112,17 +112,17 @@
|
||||
else
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/fox/get_scooped(var/mob/living/carbon/grabber)
|
||||
/mob/living/simple_mob/fox/get_scooped(var/mob/living/carbon/grabber)
|
||||
if (stat >= DEAD)
|
||||
return //since the holder icon looks like a living cat
|
||||
..()
|
||||
|
||||
//Basic friend AI
|
||||
/mob/living/simple_animal/fox/fluff
|
||||
/mob/living/simple_mob/fox/fluff
|
||||
var/mob/living/carbon/human/friend
|
||||
var/befriend_job = null
|
||||
|
||||
/mob/living/simple_animal/fox/fluff/Life()
|
||||
/mob/living/simple_mob/fox/fluff/Life()
|
||||
. = ..()
|
||||
if(!. || ai_inactive || !friend) return
|
||||
|
||||
@@ -149,7 +149,7 @@
|
||||
var/verb = pick("yaps", "howls", "whines")
|
||||
audible_emote("[verb] anxiously.")
|
||||
|
||||
/mob/living/simple_animal/fox/fluff/verb/friend()
|
||||
/mob/living/simple_mob/fox/fluff/verb/friend()
|
||||
set name = "Become Friends"
|
||||
set category = "IC"
|
||||
set src in view(1)
|
||||
@@ -173,13 +173,13 @@
|
||||
desc = "The fox doesn't say a goddamn thing, now."
|
||||
|
||||
//Captain fox
|
||||
/mob/living/simple_animal/fox/fluff/Renault
|
||||
/mob/living/simple_mob/fox/fluff/Renault
|
||||
name = "Renault"
|
||||
desc = "Renault, the Colony Director's trustworthy fox. I wonder what it says?"
|
||||
tt_desc = "Vulpes nobilis"
|
||||
befriend_job = "Colony Director"
|
||||
|
||||
/mob/living/simple_animal/fox/fluff/Renault/init_vore()
|
||||
/mob/living/simple_mob/fox/fluff/Renault/init_vore()
|
||||
..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "Stomach"
|
||||
@@ -201,7 +201,7 @@
|
||||
"A thick glob of acids drip down from above, adding to the pool of caustic fluids in Renault's belly.",
|
||||
"There's a loud gurgle as the stomach declares the intent to make you a part of Renault.")
|
||||
|
||||
/mob/living/simple_animal/fox/syndicate
|
||||
/mob/living/simple_mob/fox/syndicate
|
||||
name = "syndi-fox"
|
||||
desc = "It's a DASTARDLY fox! The horror! Call the shuttle!"
|
||||
tt_desc = "Vulpes malus"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#define SPINNING_COCOON 4
|
||||
|
||||
//basic spider mob, these generally guard nests
|
||||
/mob/living/simple_animal/hostile/giant_spider
|
||||
/mob/living/simple_mob/hostile/giant_spider
|
||||
name = "giant spider"
|
||||
desc = "Furry and brown, it makes you shudder to look at it. This one has deep red eyes."
|
||||
tt_desc = "X Brachypelma phorus"
|
||||
@@ -51,14 +51,14 @@
|
||||
|
||||
low_priority = TRUE //VOREStation Edit
|
||||
|
||||
/mob/living/simple_animal/hostile/giant_spider/proc/add_eyes()
|
||||
/mob/living/simple_mob/hostile/giant_spider/proc/add_eyes()
|
||||
if(!eye_layer)
|
||||
eye_layer = image(icon, "[icon_state]-eyes")
|
||||
eye_layer.plane = PLANE_LIGHTING_ABOVE
|
||||
|
||||
overlays += eye_layer
|
||||
|
||||
/mob/living/simple_animal/hostile/giant_spider/proc/remove_eyes()
|
||||
/mob/living/simple_mob/hostile/giant_spider/proc/remove_eyes()
|
||||
overlays -= eye_layer
|
||||
|
||||
/*
|
||||
@@ -66,7 +66,7 @@ Nurse Family
|
||||
*/
|
||||
|
||||
//nursemaids - these create webs and eggs
|
||||
/mob/living/simple_animal/hostile/giant_spider/nurse
|
||||
/mob/living/simple_mob/hostile/giant_spider/nurse
|
||||
desc = "Furry and beige, it makes you shudder to look at it. This one has brilliant green eyes."
|
||||
tt_desc = "X Brachypelma phorus laetus"
|
||||
icon_state = "nurse"
|
||||
@@ -85,7 +85,7 @@ Nurse Family
|
||||
var/atom/cocoon_target
|
||||
var/egg_inject_chance = 5
|
||||
|
||||
/mob/living/simple_animal/hostile/giant_spider/nurse/hat
|
||||
/mob/living/simple_mob/hostile/giant_spider/nurse/hat
|
||||
desc = "Furry and beige, it makes you shudder to look at it. This one has brilliant green eyes and a tiny nurse hat."
|
||||
icon_state = "nursemed"
|
||||
icon_living = "nursemed"
|
||||
@@ -101,7 +101,7 @@ Nurse Family
|
||||
poison_chance = 15
|
||||
// VOREStation Edit End
|
||||
|
||||
/mob/living/simple_animal/hostile/giant_spider/nurse/queen
|
||||
/mob/living/simple_mob/hostile/giant_spider/nurse/queen
|
||||
desc = "Absolutely gigantic, this creature is horror itself."
|
||||
tt_desc = "X Brachypelma phorus tyrannus"
|
||||
icon = 'icons/mob/64x64.dmi'
|
||||
@@ -124,7 +124,7 @@ Nurse Family
|
||||
old_x = -16
|
||||
old_y = -16
|
||||
|
||||
/mob/living/simple_animal/hostile/giant_spider/webslinger
|
||||
/mob/living/simple_mob/hostile/giant_spider/webslinger
|
||||
desc = "Furry and green, it makes you shudder to look at it. This one has brilliant green eyes, and a cloak of web."
|
||||
tt_desc = "X Brachypelma phorus balisticus"
|
||||
icon_state = "webslinger"
|
||||
@@ -150,7 +150,7 @@ Nurse Family
|
||||
spattack_min_range = 0
|
||||
spattack_max_range = 5
|
||||
|
||||
/mob/living/simple_animal/hostile/giant_spider/webslinger/AttackTarget() //One day.
|
||||
/mob/living/simple_mob/hostile/giant_spider/webslinger/AttackTarget() //One day.
|
||||
var/mob/living/carbon/human/victim = null //Webslinger needs to know if its target is human later.
|
||||
if(ishuman(target_mob))
|
||||
victim = target_mob
|
||||
@@ -165,7 +165,7 @@ Nurse Family
|
||||
shoot_range = 5
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/giant_spider/carrier
|
||||
/mob/living/simple_mob/hostile/giant_spider/carrier
|
||||
desc = "Furry, beige, and red, it makes you shudder to look at it. This one has luminous green eyes."
|
||||
tt_desc = "X Brachypelma phorus gerulus"
|
||||
icon_state = "carrier"
|
||||
@@ -183,20 +183,20 @@ Nurse Family
|
||||
|
||||
var/spiderling_count = 0
|
||||
var/spiderling_type = /obj/effect/spider/spiderling
|
||||
var/swarmling_type = /mob/living/simple_animal/hostile/giant_spider/hunter
|
||||
var/swarmling_type = /mob/living/simple_mob/hostile/giant_spider/hunter
|
||||
var/swarmling_faction = "spiders"
|
||||
|
||||
/mob/living/simple_animal/hostile/giant_spider/carrier/New()
|
||||
/mob/living/simple_mob/hostile/giant_spider/carrier/New()
|
||||
spiderling_count = rand(5,10)
|
||||
adjust_scale(1.2)
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/hostile/giant_spider/carrier/death()
|
||||
/mob/living/simple_mob/hostile/giant_spider/carrier/death()
|
||||
visible_message("<span class='notice'>\The [src]'s abdomen splits as it rolls over, spiderlings crawling from the wound.</span>")
|
||||
spawn(1)
|
||||
for(var/I = 1 to spiderling_count)
|
||||
if(prob(10) && src)
|
||||
var/mob/living/simple_animal/hostile/giant_spider/swarmling = new swarmling_type(src.loc)
|
||||
var/mob/living/simple_mob/hostile/giant_spider/swarmling = new swarmling_type(src.loc)
|
||||
var/swarm_health = Floor(swarmling.maxHealth * 0.4)
|
||||
var/swarm_dam_lower = Floor(melee_damage_lower * 0.4)
|
||||
var/swarm_dam_upper = Floor(melee_damage_upper * 0.4)
|
||||
@@ -214,10 +214,10 @@ Nurse Family
|
||||
break
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/giant_spider/carrier/recursive
|
||||
/mob/living/simple_mob/hostile/giant_spider/carrier/recursive
|
||||
desc = "Furry, beige, and red, it makes you shudder to look at it. This one has luminous green eyes. You have a distinctly <font face='comic sans ms'>bad</font> feeling about this."
|
||||
|
||||
swarmling_type = /mob/living/simple_animal/hostile/giant_spider/carrier/recursive
|
||||
swarmling_type = /mob/living/simple_mob/hostile/giant_spider/carrier/recursive
|
||||
|
||||
/*
|
||||
Hunter Family
|
||||
@@ -225,7 +225,7 @@ Hunter Family
|
||||
|
||||
//hunters have the most poison and move the fastest, so they can find prey
|
||||
|
||||
/mob/living/simple_animal/hostile/giant_spider/hunter
|
||||
/mob/living/simple_mob/hostile/giant_spider/hunter
|
||||
desc = "Furry and black, it makes you shudder to look at it. This one has sparkling purple eyes."
|
||||
tt_desc = "X Brachypelma phorus venandi"
|
||||
icon_state = "hunter"
|
||||
@@ -238,7 +238,7 @@ Hunter Family
|
||||
|
||||
poison_per_bite = 5
|
||||
|
||||
/mob/living/simple_animal/hostile/giant_spider/lurker
|
||||
/mob/living/simple_mob/hostile/giant_spider/lurker
|
||||
desc = "Translucent and white, it makes you shudder to look at it. This one has incandescent red eyes."
|
||||
tt_desc = "X Brachypelma phorus insidator"
|
||||
icon_state = "lurker"
|
||||
@@ -258,11 +258,11 @@ Hunter Family
|
||||
poison_type = "cryptobiolin"
|
||||
poison_per_bite = 2
|
||||
|
||||
/mob/living/simple_animal/hostile/giant_spider/lurker/death()
|
||||
/mob/living/simple_mob/hostile/giant_spider/lurker/death()
|
||||
alpha = 255
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/giant_spider/tunneler
|
||||
/mob/living/simple_mob/hostile/giant_spider/tunneler
|
||||
desc = "Sandy and brown, it makes you shudder to look at it. This one has glittering yellow eyes."
|
||||
tt_desc = "X Brachypelma phorus cannalis"
|
||||
icon_state = "tunneler"
|
||||
@@ -280,7 +280,7 @@ Hunter Family
|
||||
poison_per_bite = 3
|
||||
poison_type = "serotrotium_v"
|
||||
|
||||
/mob/living/simple_animal/hostile/giant_spider/tunneler/death()
|
||||
/mob/living/simple_mob/hostile/giant_spider/tunneler/death()
|
||||
spawn(1)
|
||||
for(var/I = 1 to rand(3,6))
|
||||
if(src)
|
||||
@@ -293,7 +293,7 @@ Hunter Family
|
||||
Guard Family
|
||||
*/
|
||||
|
||||
/mob/living/simple_animal/hostile/giant_spider/pepper
|
||||
/mob/living/simple_mob/hostile/giant_spider/pepper
|
||||
desc = "Red and brown, it makes you shudder to look at it. This one has glinting red eyes."
|
||||
tt_desc = "X Brachypelma phorus ignis"
|
||||
icon_state = "pepper"
|
||||
@@ -310,11 +310,11 @@ Guard Family
|
||||
poison_per_bite = 5
|
||||
poison_type = "condensedcapsaicin_v"
|
||||
|
||||
/mob/living/simple_animal/hostile/giant_spider/pepper/New()
|
||||
/mob/living/simple_mob/hostile/giant_spider/pepper/New()
|
||||
adjust_scale(1.1)
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/hostile/giant_spider/thermic
|
||||
/mob/living/simple_mob/hostile/giant_spider/thermic
|
||||
desc = "Mirage-cloaked and orange, it makes you shudder to look at it. This one has simmering orange eyes."
|
||||
tt_desc = "X Brachypelma phorus incaendium"
|
||||
icon_state = "pit"
|
||||
@@ -331,7 +331,7 @@ Guard Family
|
||||
poison_per_bite = 1
|
||||
poison_type = "thermite_v"
|
||||
|
||||
/mob/living/simple_animal/hostile/giant_spider/electric
|
||||
/mob/living/simple_mob/hostile/giant_spider/electric
|
||||
desc = "Spined and yellow, it makes you shudder to look at it. This one has flickering gold eyes."
|
||||
tt_desc = "X Brachypelma phorus aromatitis"
|
||||
icon_state = "spark"
|
||||
@@ -355,7 +355,7 @@ Guard Family
|
||||
poison_per_bite = 3
|
||||
poison_type = "stimm"
|
||||
|
||||
/mob/living/simple_animal/hostile/giant_spider/phorogenic
|
||||
/mob/living/simple_mob/hostile/giant_spider/phorogenic
|
||||
desc = "Crystalline and purple, it makes you shudder to look at it. This one has haunting purple eyes."
|
||||
tt_desc = "X Brachypelma phorus phorus"
|
||||
icon_state = "phoron"
|
||||
@@ -376,11 +376,11 @@ Guard Family
|
||||
|
||||
var/exploded = 0
|
||||
|
||||
/mob/living/simple_animal/hostile/giant_spider/phorogenic/New()
|
||||
/mob/living/simple_mob/hostile/giant_spider/phorogenic/New()
|
||||
adjust_scale(1.25)
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/giant_spider/phorogenic/death()
|
||||
/mob/living/simple_mob/hostile/giant_spider/phorogenic/death()
|
||||
visible_message("<span class='danger'>\The [src]'s body begins to rupture!</span>")
|
||||
spawn(rand(1,5))
|
||||
if(src && !exploded)
|
||||
@@ -389,7 +389,7 @@ Guard Family
|
||||
explosion(src.loc, 1, 2, 4, 6)
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/giant_spider/frost
|
||||
/mob/living/simple_mob/hostile/giant_spider/frost
|
||||
desc = "Icy and blue, it makes you shudder to look at it. This one has brilliant blue eyes."
|
||||
tt_desc = "X Brachypelma phorus pruinae"
|
||||
icon_state = "frost"
|
||||
@@ -406,16 +406,16 @@ Guard Family
|
||||
Spider Procs
|
||||
*/
|
||||
|
||||
/mob/living/simple_animal/hostile/giant_spider/New(var/location, var/atom/parent)
|
||||
/mob/living/simple_mob/hostile/giant_spider/New(var/location, var/atom/parent)
|
||||
get_light_and_color(parent)
|
||||
add_eyes()
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/hostile/giant_spider/death()
|
||||
/mob/living/simple_mob/hostile/giant_spider/death()
|
||||
remove_eyes()
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/hostile/giant_spider/DoPunch(var/atom/A)
|
||||
/mob/living/simple_mob/hostile/giant_spider/DoPunch(var/atom/A)
|
||||
. = ..()
|
||||
if(.) // If we succeeded in hitting.
|
||||
if(isliving(A))
|
||||
@@ -428,7 +428,7 @@ Spider Procs
|
||||
to_chat(L, "<span class='warning'>You feel a tiny prick.</span>")
|
||||
L.reagents.add_reagent(poison_type, poison_per_bite)
|
||||
|
||||
/mob/living/simple_animal/hostile/giant_spider/nurse/DoPunch(var/atom/A)
|
||||
/mob/living/simple_mob/hostile/giant_spider/nurse/DoPunch(var/atom/A)
|
||||
. = ..()
|
||||
if(.) // If we succeeded in hitting.
|
||||
if(ishuman(A))
|
||||
@@ -446,7 +446,7 @@ Spider Procs
|
||||
O.implants += eggs
|
||||
to_chat(H, "<font size='3'><span class='warning'>\The [src] injects something into your [O.name]!</span></font>")
|
||||
|
||||
/mob/living/simple_animal/hostile/giant_spider/webslinger/DoPunch(var/atom/A)
|
||||
/mob/living/simple_mob/hostile/giant_spider/webslinger/DoPunch(var/atom/A)
|
||||
. = ..()
|
||||
if(.) // If we succeeded in hitting.
|
||||
if(isliving(A))
|
||||
@@ -456,7 +456,7 @@ Spider Procs
|
||||
visible_message("<span class='danger'>\The [src] throws a layer of web at \the [L]!</span>")
|
||||
new /obj/effect/spider/stickyweb(L.loc)
|
||||
|
||||
/mob/living/simple_animal/hostile/giant_spider/handle_stance()
|
||||
/mob/living/simple_mob/hostile/giant_spider/handle_stance()
|
||||
. = ..()
|
||||
if(ai_inactive) return
|
||||
|
||||
@@ -473,7 +473,7 @@ Spider Procs
|
||||
stop_automated_movement = 0
|
||||
walk(src,0)
|
||||
|
||||
/mob/living/simple_animal/hostile/giant_spider/nurse/proc/GiveUp(var/C)
|
||||
/mob/living/simple_mob/hostile/giant_spider/nurse/proc/GiveUp(var/C)
|
||||
spawn(10 SECONDS)
|
||||
if(busy == MOVING_TO_TARGET)
|
||||
if(cocoon_target == C && get_dist(src,cocoon_target) > 1)
|
||||
@@ -481,7 +481,7 @@ Spider Procs
|
||||
busy = 0
|
||||
stop_automated_movement = 0
|
||||
|
||||
/mob/living/simple_animal/hostile/giant_spider/nurse/Life()
|
||||
/mob/living/simple_mob/hostile/giant_spider/nurse/Life()
|
||||
. = ..()
|
||||
if(!. || ai_inactive) return
|
||||
|
||||
@@ -554,7 +554,7 @@ Spider Procs
|
||||
C.pixel_x = cocoon_target.pixel_x
|
||||
C.pixel_y = cocoon_target.pixel_y
|
||||
for(var/mob/living/M in C.loc)
|
||||
if(istype(M, /mob/living/simple_animal/hostile/giant_spider))
|
||||
if(istype(M, /mob/living/simple_mob/hostile/giant_spider))
|
||||
continue
|
||||
large_cocoon = 1
|
||||
fed++
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// Slightly placeholder, mostly to replace ion hivebots on V4
|
||||
/mob/living/simple_animal/hostile/giant_spider/ion
|
||||
/mob/living/simple_mob/hostile/giant_spider/ion
|
||||
desc = "Furry and green, it makes you shudder to look at it. This one has brilliant green eyes and a hint of static discharge."
|
||||
tt_desc = "X Brachypelma phorus ionus"
|
||||
icon_state = "webslinger"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/hostile/goose //hey are these even in the game
|
||||
/mob/living/simple_mob/hostile/goose //hey are these even in the game
|
||||
name = "goose"
|
||||
desc = "It looks pretty angry!"
|
||||
tt_desc = "E Branta canadensis" //that iconstate is just a regular goose
|
||||
@@ -51,10 +51,10 @@
|
||||
|
||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
|
||||
|
||||
/mob/living/simple_animal/hostile/goose/set_target()
|
||||
/mob/living/simple_mob/hostile/goose/set_target()
|
||||
. = ..()
|
||||
if(.)
|
||||
custom_emote(1,"flaps and honks at [.]!")
|
||||
|
||||
/mob/living/simple_animal/hostile/goose/Process_Spacemove(var/check_drift = 0)
|
||||
/mob/living/simple_mob/hostile/goose/Process_Spacemove(var/check_drift = 0)
|
||||
return 1 // VOREStation Edit No drifting in space!
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/lizard
|
||||
/mob/living/simple_mob/lizard
|
||||
name = "Lizard"
|
||||
desc = "A cute tiny lizard."
|
||||
tt_desc = "E Anolis cuvieri"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/yithian
|
||||
/mob/living/simple_mob/yithian
|
||||
name = "yithian"
|
||||
desc = "A friendly creature vaguely resembling an oversized snail without a shell."
|
||||
tt_desc = "J Escargot escargot" // a product of Jade, which is a planet that totally exists
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
faction = "yithian"
|
||||
|
||||
/mob/living/simple_animal/tindalos
|
||||
/mob/living/simple_mob/tindalos
|
||||
name = "tindalos"
|
||||
desc = "It looks like a large, flightless grasshopper."
|
||||
tt_desc = "J Locusta bruchus"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/mouse
|
||||
/mob/living/simple_mob/mouse
|
||||
name = "mouse"
|
||||
real_name = "mouse"
|
||||
desc = "It's a small rodent."
|
||||
@@ -43,7 +43,7 @@
|
||||
|
||||
var/body_color //brown, gray and white, leave blank for random
|
||||
|
||||
/mob/living/simple_animal/mouse/Life()
|
||||
/mob/living/simple_mob/mouse/Life()
|
||||
. = ..()
|
||||
if(!. || ai_inactive) return
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
else if(prob(1))
|
||||
audible_emote("snuffles.")
|
||||
|
||||
/mob/living/simple_animal/mouse/New()
|
||||
/mob/living/simple_mob/mouse/New()
|
||||
..()
|
||||
|
||||
verbs += /mob/living/proc/ventcrawl
|
||||
@@ -82,7 +82,7 @@
|
||||
icon_rest = "mouse_[body_color]_sleep"
|
||||
desc = "A small [body_color] rodent, often seen hiding in maintenance areas and making a nuisance of itself."
|
||||
|
||||
/mob/living/simple_animal/mouse/proc/splat()
|
||||
/mob/living/simple_mob/mouse/proc/splat()
|
||||
src.health = 0
|
||||
src.stat = DEAD
|
||||
src.icon_dead = "mouse_[body_color]_splat"
|
||||
@@ -92,7 +92,7 @@
|
||||
client.time_died_as_mouse = world.time
|
||||
|
||||
|
||||
/mob/living/simple_animal/mouse/Crossed(AM as mob|obj)
|
||||
/mob/living/simple_mob/mouse/Crossed(AM as mob|obj)
|
||||
if( ishuman(AM) )
|
||||
if(!stat)
|
||||
var/mob/M = AM
|
||||
@@ -100,7 +100,7 @@
|
||||
M << 'sound/effects/mouse_squeak.ogg'
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/mouse/death()
|
||||
/mob/living/simple_mob/mouse/death()
|
||||
layer = MOB_LAYER
|
||||
playsound(src, 'sound/effects/mouse_squeak_loud.ogg', 35, 1)
|
||||
if(client)
|
||||
@@ -111,27 +111,27 @@
|
||||
* Mouse types
|
||||
*/
|
||||
|
||||
/mob/living/simple_animal/mouse/white
|
||||
/mob/living/simple_mob/mouse/white
|
||||
body_color = "white"
|
||||
icon_state = "mouse_white"
|
||||
|
||||
/mob/living/simple_animal/mouse/gray
|
||||
/mob/living/simple_mob/mouse/gray
|
||||
body_color = "gray"
|
||||
icon_state = "mouse_gray"
|
||||
|
||||
/mob/living/simple_animal/mouse/brown
|
||||
/mob/living/simple_mob/mouse/brown
|
||||
body_color = "brown"
|
||||
icon_state = "mouse_brown"
|
||||
|
||||
//TOM IS ALIVE! SQUEEEEEEEE~K :)
|
||||
/mob/living/simple_animal/mouse/brown/Tom
|
||||
/mob/living/simple_mob/mouse/brown/Tom
|
||||
name = "Tom"
|
||||
desc = "Jerry the cat is not amused."
|
||||
|
||||
/mob/living/simple_animal/mouse/brown/Tom/New()
|
||||
/mob/living/simple_mob/mouse/brown/Tom/New()
|
||||
..()
|
||||
// Change my name back, don't want to be named Tom (666)
|
||||
name = initial(name)
|
||||
|
||||
/mob/living/simple_animal/mouse/cannot_use_vents()
|
||||
/mob/living/simple_mob/mouse/cannot_use_vents()
|
||||
return
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/mob/living/simple_animal/mouse
|
||||
/mob/living/simple_mob/mouse
|
||||
no_vore = 1 //Mice can't eat others due to the amount of bugs caused by it.
|
||||
|
||||
|
||||
|
||||
|
||||
/mob/living/simple_animal/mouse/attack_hand(mob/living/hander)
|
||||
/mob/living/simple_mob/mouse/attack_hand(mob/living/hander)
|
||||
src.get_scooped(hander) //For one-click mouse scooping under any conditions. They knew what they were getting into!
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
*/
|
||||
|
||||
//Parrot is too snowflake for me to rewrite right now, someone should make it use the new
|
||||
//simple_animal movement stuff. -Aro
|
||||
//simple_mob movement stuff. -Aro
|
||||
|
||||
//Only a maximum of one action and one intent should be active at any given time.
|
||||
//Actions
|
||||
@@ -28,7 +28,7 @@
|
||||
#define PARROT_FLEE 64 //Flying away from its attacker
|
||||
|
||||
|
||||
/mob/living/simple_animal/parrot
|
||||
/mob/living/simple_mob/parrot
|
||||
name = "parrot"
|
||||
desc = "The parrot squawks, \"It's a parrot! BAWWK!\""
|
||||
tt_desc = "E Ara macao"
|
||||
@@ -94,7 +94,7 @@
|
||||
var/obj/item/held_item = null
|
||||
|
||||
|
||||
/mob/living/simple_animal/parrot/New()
|
||||
/mob/living/simple_mob/parrot/New()
|
||||
..()
|
||||
if(!ears)
|
||||
var/headset = pick(/obj/item/device/radio/headset/headset_sec, \
|
||||
@@ -106,27 +106,27 @@
|
||||
|
||||
parrot_sleep_dur = parrot_sleep_max //In case someone decides to change the max without changing the duration var
|
||||
|
||||
verbs.Add(/mob/living/simple_animal/parrot/proc/steal_from_ground, \
|
||||
/mob/living/simple_animal/parrot/proc/steal_from_mob, \
|
||||
/mob/living/simple_animal/parrot/verb/drop_held_item_player, \
|
||||
/mob/living/simple_animal/parrot/proc/perch_player)
|
||||
verbs.Add(/mob/living/simple_mob/parrot/proc/steal_from_ground, \
|
||||
/mob/living/simple_mob/parrot/proc/steal_from_mob, \
|
||||
/mob/living/simple_mob/parrot/verb/drop_held_item_player, \
|
||||
/mob/living/simple_mob/parrot/proc/perch_player)
|
||||
|
||||
|
||||
/mob/living/simple_animal/parrot/death()
|
||||
/mob/living/simple_mob/parrot/death()
|
||||
if(held_item)
|
||||
held_item.forceMove(src.loc)
|
||||
held_item = null
|
||||
walk(src,0)
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/parrot/Stat()
|
||||
/mob/living/simple_mob/parrot/Stat()
|
||||
..()
|
||||
stat("Held Item", held_item)
|
||||
|
||||
/*
|
||||
* Inventory
|
||||
*/
|
||||
/mob/living/simple_animal/parrot/show_inv(mob/user as mob)
|
||||
/mob/living/simple_mob/parrot/show_inv(mob/user as mob)
|
||||
user.set_machine(src)
|
||||
if(user.stat) return
|
||||
|
||||
@@ -140,7 +140,7 @@
|
||||
onclose(user, "mob[real_name]")
|
||||
return
|
||||
|
||||
/mob/living/simple_animal/parrot/Topic(href, href_list)
|
||||
/mob/living/simple_mob/parrot/Topic(href, href_list)
|
||||
|
||||
//Can the usr physically do this?
|
||||
if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
|
||||
@@ -223,7 +223,7 @@
|
||||
* Attack responces
|
||||
*/
|
||||
//Humans, monkeys, aliens
|
||||
/mob/living/simple_animal/parrot/attack_hand(mob/living/carbon/M as mob)
|
||||
/mob/living/simple_mob/parrot/attack_hand(mob/living/carbon/M as mob)
|
||||
..()
|
||||
if(client) return
|
||||
if(!stat && M.a_intent == I_HURT)
|
||||
@@ -244,7 +244,7 @@
|
||||
return
|
||||
|
||||
//Mobs with objects
|
||||
/mob/living/simple_animal/parrot/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
/mob/living/simple_mob/parrot/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
..()
|
||||
if(!stat && !client && !istype(O, /obj/item/stack/medical))
|
||||
if(O.force)
|
||||
@@ -258,7 +258,7 @@
|
||||
return
|
||||
|
||||
//Bullets
|
||||
/mob/living/simple_animal/parrot/bullet_act(var/obj/item/projectile/Proj)
|
||||
/mob/living/simple_mob/parrot/bullet_act(var/obj/item/projectile/Proj)
|
||||
..()
|
||||
if(!stat && !client)
|
||||
if(parrot_state == PARROT_PERCH)
|
||||
@@ -275,7 +275,7 @@
|
||||
/*
|
||||
* AI - Not really intelligent, but I'm calling it AI anyway.
|
||||
*/
|
||||
/mob/living/simple_animal/parrot/Life()
|
||||
/mob/living/simple_mob/parrot/Life()
|
||||
..()
|
||||
|
||||
//Sprite and AI update for when a parrot gets pulled
|
||||
@@ -513,12 +513,12 @@
|
||||
* Procs
|
||||
*/
|
||||
|
||||
/mob/living/simple_animal/parrot/movement_delay()
|
||||
/mob/living/simple_mob/parrot/movement_delay()
|
||||
if(client && stat == CONSCIOUS && parrot_state != "parrot_fly")
|
||||
icon_state = "parrot_fly"
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/parrot/proc/search_for_item()
|
||||
/mob/living/simple_mob/parrot/proc/search_for_item()
|
||||
for(var/atom/movable/AM in view(src))
|
||||
//Skip items we already stole or are wearing or are too big
|
||||
if(parrot_perch && AM.loc == parrot_perch.loc || AM.loc == src)
|
||||
@@ -535,7 +535,7 @@
|
||||
return C
|
||||
return null
|
||||
|
||||
/mob/living/simple_animal/parrot/proc/search_for_perch()
|
||||
/mob/living/simple_mob/parrot/proc/search_for_perch()
|
||||
for(var/obj/O in view(src))
|
||||
for(var/path in desired_perches)
|
||||
if(istype(O, path))
|
||||
@@ -543,7 +543,7 @@
|
||||
return null
|
||||
|
||||
//This proc was made to save on doing two 'in view' loops seperatly
|
||||
/mob/living/simple_animal/parrot/proc/search_for_perch_and_item()
|
||||
/mob/living/simple_mob/parrot/proc/search_for_perch_and_item()
|
||||
for(var/atom/movable/AM in view(src))
|
||||
for(var/perch_path in desired_perches)
|
||||
if(istype(AM, perch_path))
|
||||
@@ -568,7 +568,7 @@
|
||||
/*
|
||||
* Verbs - These are actually procs, but can be used as verbs by player-controlled parrots.
|
||||
*/
|
||||
/mob/living/simple_animal/parrot/proc/steal_from_ground()
|
||||
/mob/living/simple_mob/parrot/proc/steal_from_ground()
|
||||
set name = "Steal from ground"
|
||||
set category = "Parrot"
|
||||
set desc = "Grabs a nearby item."
|
||||
@@ -596,7 +596,7 @@
|
||||
to_chat(src, "<font color='red'>There is nothing of interest to take.</font>")
|
||||
return 0
|
||||
|
||||
/mob/living/simple_animal/parrot/proc/steal_from_mob()
|
||||
/mob/living/simple_mob/parrot/proc/steal_from_mob()
|
||||
set name = "Steal from mob"
|
||||
set category = "Parrot"
|
||||
set desc = "Steals an item right out of a person's hand!"
|
||||
@@ -627,7 +627,7 @@
|
||||
to_chat(src, "<font color='red'>There is nothing of interest to take.</font>")
|
||||
return 0
|
||||
|
||||
/mob/living/simple_animal/parrot/verb/drop_held_item_player()
|
||||
/mob/living/simple_mob/parrot/verb/drop_held_item_player()
|
||||
set name = "Drop held item"
|
||||
set category = "Parrot"
|
||||
set desc = "Drop the item you're holding."
|
||||
@@ -639,7 +639,7 @@
|
||||
|
||||
return
|
||||
|
||||
/mob/living/simple_animal/parrot/proc/drop_held_item(var/drop_gently = 1)
|
||||
/mob/living/simple_mob/parrot/proc/drop_held_item(var/drop_gently = 1)
|
||||
set name = "Drop held item"
|
||||
set category = "Parrot"
|
||||
set desc = "Drop the item you're holding."
|
||||
@@ -666,7 +666,7 @@
|
||||
held_item = null
|
||||
return 1
|
||||
|
||||
/mob/living/simple_animal/parrot/proc/perch_player()
|
||||
/mob/living/simple_mob/parrot/proc/perch_player()
|
||||
set name = "Sit"
|
||||
set category = "Parrot"
|
||||
set desc = "Sit on a nice comfy perch."
|
||||
@@ -687,17 +687,17 @@
|
||||
/*
|
||||
* Sub-types
|
||||
*/
|
||||
/mob/living/simple_animal/parrot/Poly
|
||||
/mob/living/simple_mob/parrot/Poly
|
||||
name = "Poly"
|
||||
desc = "Poly the Parrot. An expert on quantum cracker theory."
|
||||
speak = list("Poly wanna cracker!", ":e Check the singlo, you chucklefucks!",":e Wire the solars, you lazy bums!",":e WHO TOOK THE DAMN HARDSUITS?",":e OH GOD ITS FREE CALL THE SHUTTLE")
|
||||
|
||||
/mob/living/simple_animal/parrot/Poly/New()
|
||||
/mob/living/simple_mob/parrot/Poly/New()
|
||||
ears = new /obj/item/device/radio/headset/headset_eng(src)
|
||||
available_channels = list(":e")
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/parrot/say(var/message)
|
||||
/mob/living/simple_mob/parrot/say(var/message)
|
||||
|
||||
if(stat)
|
||||
return
|
||||
@@ -731,25 +731,25 @@
|
||||
..(message)
|
||||
|
||||
|
||||
/mob/living/simple_animal/parrot/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "",var/italics = 0, var/mob/speaker = null)
|
||||
/mob/living/simple_mob/parrot/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "",var/italics = 0, var/mob/speaker = null)
|
||||
if(prob(50))
|
||||
parrot_hear(message)
|
||||
..(message,verb,language,alt_name,italics,speaker)
|
||||
|
||||
|
||||
|
||||
/mob/living/simple_animal/parrot/hear_radio(var/message, var/verb="says", var/datum/language/language=null, var/part_a, var/part_b, var/part_c, var/mob/speaker = null, var/hard_to_hear = 0)
|
||||
/mob/living/simple_mob/parrot/hear_radio(var/message, var/verb="says", var/datum/language/language=null, var/part_a, var/part_b, var/part_c, var/mob/speaker = null, var/hard_to_hear = 0)
|
||||
if(prob(50))
|
||||
parrot_hear("[pick(available_channels)] [message]")
|
||||
..(message,verb,language,part_a,part_b,speaker,hard_to_hear)
|
||||
|
||||
|
||||
/mob/living/simple_animal/parrot/proc/parrot_hear(var/message="")
|
||||
/mob/living/simple_mob/parrot/proc/parrot_hear(var/message="")
|
||||
if(!message || stat)
|
||||
return
|
||||
speech_buffer.Add(message)
|
||||
|
||||
/mob/living/simple_animal/parrot/attack_generic(var/mob/user, var/damage, var/attack_message)
|
||||
/mob/living/simple_mob/parrot/attack_generic(var/mob/user, var/damage, var/attack_message)
|
||||
|
||||
var/success = ..()
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/penguin
|
||||
/mob/living/simple_mob/penguin
|
||||
name = "space penguin"
|
||||
desc = "An ungainly, waddling, cute, and VERY well-dressed bird."
|
||||
tt_desc = "E Aptenodytes forsteri"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/hostile/carp/pike
|
||||
/mob/living/simple_mob/hostile/carp/pike
|
||||
name = "space pike"
|
||||
desc = "A bigger, angrier cousin of the space carp."
|
||||
icon = 'icons/mob/spaceshark.dmi'
|
||||
@@ -25,10 +25,10 @@
|
||||
|
||||
vore_icons = 0 //No custom icons yet
|
||||
|
||||
/mob/living/simple_animal/hostile/carp/pike/weak
|
||||
/mob/living/simple_mob/hostile/carp/pike/weak
|
||||
maxHealth = 75
|
||||
health = 75
|
||||
|
||||
/mob/living/simple_animal/hostile/carp/strong
|
||||
/mob/living/simple_mob/hostile/carp/strong
|
||||
maxHealth = 50
|
||||
health = 50
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/old_slime
|
||||
/mob/living/simple_mob/old_slime
|
||||
name = "pet slime"
|
||||
desc = "A lovable, domesticated slime."
|
||||
tt_desc = "Amorphidae proteus"
|
||||
@@ -20,19 +20,19 @@
|
||||
|
||||
var/colour = "grey"
|
||||
|
||||
/mob/living/simple_animal/old_slime/science
|
||||
/mob/living/simple_mob/old_slime/science
|
||||
name = "Kendrick"
|
||||
colour = "rainbow"
|
||||
icon_state = "rainbow baby slime"
|
||||
icon_living = "rainbow baby slime"
|
||||
icon_dead = "rainbow baby slime dead"
|
||||
|
||||
/mob/living/simple_animal/old_slime/science/initialize()
|
||||
/mob/living/simple_mob/old_slime/science/initialize()
|
||||
. = ..()
|
||||
overlays.Cut()
|
||||
overlays += "aslime-:33"
|
||||
|
||||
/mob/living/simple_animal/adultslime
|
||||
/mob/living/simple_mob/adultslime
|
||||
name = "pet slime"
|
||||
desc = "A lovable, domesticated slime."
|
||||
icon = 'icons/mob/slimes.dmi'
|
||||
@@ -52,17 +52,17 @@
|
||||
|
||||
var/colour = "grey"
|
||||
|
||||
/mob/living/simple_animal/adultslime/New()
|
||||
/mob/living/simple_mob/adultslime/New()
|
||||
..()
|
||||
overlays += "aslime-:33"
|
||||
|
||||
/mob/living/simple_animal/adultslime/death()
|
||||
var/mob/living/simple_animal/old_slime/S1 = new /mob/living/simple_animal/old_slime (src.loc)
|
||||
/mob/living/simple_mob/adultslime/death()
|
||||
var/mob/living/simple_mob/old_slime/S1 = new /mob/living/simple_mob/old_slime (src.loc)
|
||||
S1.icon_state = "[src.colour] baby slime"
|
||||
S1.icon_living = "[src.colour] baby slime"
|
||||
S1.icon_dead = "[src.colour] baby slime dead"
|
||||
S1.colour = "[src.colour]"
|
||||
var/mob/living/simple_animal/old_slime/S2 = new /mob/living/simple_animal/old_slime (src.loc)
|
||||
var/mob/living/simple_mob/old_slime/S2 = new /mob/living/simple_mob/old_slime (src.loc)
|
||||
S2.icon_state = "[src.colour] baby slime"
|
||||
S2.icon_living = "[src.colour] baby slime"
|
||||
S2.icon_dead = "[src.colour] baby slime dead"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/snake
|
||||
/mob/living/simple_mob/snake
|
||||
name = "snake"
|
||||
desc = "A big thick snake."
|
||||
icon = 'icons/mob/snake_vr.dmi'
|
||||
@@ -23,13 +23,13 @@
|
||||
speak_emote = list("hisses")
|
||||
|
||||
//NOODLE IS HERE! SQUEEEEEEEE~
|
||||
/mob/living/simple_animal/snake/Noodle
|
||||
/mob/living/simple_mob/snake/Noodle
|
||||
name = "Noodle"
|
||||
desc = "This snake is particularly chubby and demands nothing but the finest of treats."
|
||||
var/turns_since_scan = 0
|
||||
var/obj/movement_target
|
||||
|
||||
/mob/living/simple_animal/snake/Noodle/Life() //stolen from Ian in corgi.dm
|
||||
/mob/living/simple_mob/snake/Noodle/Life() //stolen from Ian in corgi.dm
|
||||
if(!..())
|
||||
return 0
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
else if(ishuman(movement_target.loc) && prob(20))
|
||||
visible_emote("stares at the [movement_target] that [movement_target.loc] has with an unknowable reptilian gaze.")
|
||||
|
||||
/mob/living/simple_animal/snake/Noodle/attackby(var/obj/item/O, var/mob/user)
|
||||
/mob/living/simple_mob/snake/Noodle/attackby(var/obj/item/O, var/mob/user)
|
||||
if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/snakesnack))
|
||||
visible_message("<span class='notice'>[user] feeds \the [O] to [src].</span>")
|
||||
qdel(O)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/spiderbot
|
||||
/mob/living/simple_mob/spiderbot
|
||||
name = "spider-bot"
|
||||
desc = "A skittering robotic friend!"
|
||||
tt_desc = "Maintenance Robot"
|
||||
@@ -53,14 +53,14 @@
|
||||
var/emagged = 0
|
||||
var/obj/item/held_item = null //Storage for single item they can hold.
|
||||
|
||||
/mob/living/simple_animal/spiderbot/New()
|
||||
/mob/living/simple_mob/spiderbot/New()
|
||||
..()
|
||||
add_language(LANGUAGE_GALCOM)
|
||||
default_language = all_languages[LANGUAGE_GALCOM]
|
||||
verbs |= /mob/living/proc/ventcrawl
|
||||
verbs |= /mob/living/proc/hide
|
||||
|
||||
/mob/living/simple_animal/spiderbot/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
/mob/living/simple_mob/spiderbot/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
|
||||
if(istype(O, /obj/item/device/mmi))
|
||||
var/obj/item/device/mmi/B = O
|
||||
@@ -144,7 +144,7 @@
|
||||
else
|
||||
O.attack(src, user, user.zone_sel.selecting)
|
||||
|
||||
/mob/living/simple_animal/spiderbot/emag_act(var/remaining_charges, var/mob/user)
|
||||
/mob/living/simple_mob/spiderbot/emag_act(var/remaining_charges, var/mob/user)
|
||||
if (emagged)
|
||||
user << "<span class='warning'>[src] is already overloaded - better run.</span>"
|
||||
return 0
|
||||
@@ -154,7 +154,7 @@
|
||||
spawn(200) src << "<span class='danger'>Internal heat sensors are spiking! Something is badly wrong with your cell!</span>"
|
||||
spawn(300) src.explode()
|
||||
|
||||
/mob/living/simple_animal/spiderbot/proc/transfer_personality(var/obj/item/device/mmi/M as obj)
|
||||
/mob/living/simple_mob/spiderbot/proc/transfer_personality(var/obj/item/device/mmi/M as obj)
|
||||
|
||||
src.mind = M.brainmob.mind
|
||||
src.mind.key = M.brainmob.key
|
||||
@@ -162,13 +162,13 @@
|
||||
src.name = "spider-bot ([M.brainmob.name])"
|
||||
src.languages = M.brainmob.languages
|
||||
|
||||
/mob/living/simple_animal/spiderbot/proc/explode() //When emagged.
|
||||
/mob/living/simple_mob/spiderbot/proc/explode() //When emagged.
|
||||
src.visible_message("<span class='danger'>\The [src] makes an odd warbling noise, fizzles, and explodes!</span>")
|
||||
explosion(get_turf(loc), -1, -1, 3, 5)
|
||||
eject_brain()
|
||||
death()
|
||||
|
||||
/mob/living/simple_animal/spiderbot/update_icon()
|
||||
/mob/living/simple_mob/spiderbot/update_icon()
|
||||
if(mmi)
|
||||
if(positronic)
|
||||
icon_state = "spiderbot-chassis-posi"
|
||||
@@ -180,7 +180,7 @@
|
||||
icon_state = "spiderbot-chassis"
|
||||
icon_living = "spiderbot-chassis"
|
||||
|
||||
/mob/living/simple_animal/spiderbot/proc/eject_brain()
|
||||
/mob/living/simple_mob/spiderbot/proc/eject_brain()
|
||||
if(mmi)
|
||||
var/turf/T = get_turf(loc)
|
||||
if(T)
|
||||
@@ -193,11 +193,11 @@
|
||||
remove_language("Robot Talk")
|
||||
positronic = null
|
||||
|
||||
/mob/living/simple_animal/spiderbot/Destroy()
|
||||
/mob/living/simple_mob/spiderbot/Destroy()
|
||||
eject_brain()
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/spiderbot/New()
|
||||
/mob/living/simple_mob/spiderbot/New()
|
||||
|
||||
radio = new /obj/item/device/radio/borg(src)
|
||||
camera = new /obj/machinery/camera(src)
|
||||
@@ -206,7 +206,7 @@
|
||||
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/spiderbot/death()
|
||||
/mob/living/simple_mob/spiderbot/death()
|
||||
|
||||
living_mob_list -= src
|
||||
dead_mob_list += src
|
||||
@@ -222,7 +222,7 @@
|
||||
return
|
||||
|
||||
//Cannibalized from the parrot mob. ~Zuhayr
|
||||
/mob/living/simple_animal/spiderbot/verb/drop_held_item()
|
||||
/mob/living/simple_mob/spiderbot/verb/drop_held_item()
|
||||
set name = "Drop held item"
|
||||
set category = "Spiderbot"
|
||||
set desc = "Drop the item you're holding."
|
||||
@@ -254,7 +254,7 @@
|
||||
|
||||
return
|
||||
|
||||
/mob/living/simple_animal/spiderbot/verb/get_item()
|
||||
/mob/living/simple_mob/spiderbot/verb/get_item()
|
||||
set name = "Pick up item"
|
||||
set category = "Spiderbot"
|
||||
set desc = "Allows you to take a nearby small item."
|
||||
@@ -288,13 +288,13 @@
|
||||
src << "<span class='warning'>There is nothing of interest to take.</span>"
|
||||
return 0
|
||||
|
||||
/mob/living/simple_animal/spiderbot/examine(mob/user)
|
||||
/mob/living/simple_mob/spiderbot/examine(mob/user)
|
||||
..(user)
|
||||
if(src.held_item)
|
||||
user << "It is carrying \icon[src.held_item] \a [src.held_item]."
|
||||
|
||||
/mob/living/simple_animal/spiderbot/cannot_use_vents()
|
||||
/mob/living/simple_mob/spiderbot/cannot_use_vents()
|
||||
return
|
||||
|
||||
/mob/living/simple_animal/spiderbot/binarycheck()
|
||||
/mob/living/simple_mob/spiderbot/binarycheck()
|
||||
return positronic
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/hostile/tomato
|
||||
/mob/living/simple_mob/hostile/tomato
|
||||
name = "tomato"
|
||||
desc = "It's a horrifyingly enormous beef tomato, and it's packing extra beef!"
|
||||
tt_desc = "X Solanum abominable"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/hostile/tree
|
||||
/mob/living/simple_mob/hostile/tree
|
||||
name = "pine tree"
|
||||
desc = "A pissed off tree-like alien. It seems annoyed with the festivities..."
|
||||
tt_desc = "X Festivus tyrannus"
|
||||
@@ -40,12 +40,12 @@
|
||||
|
||||
pixel_x = -16
|
||||
|
||||
/mob/living/simple_animal/hostile/tree/FindTarget()
|
||||
/mob/living/simple_mob/hostile/tree/FindTarget()
|
||||
. = ..()
|
||||
if(.)
|
||||
audible_emote("growls at [.]")
|
||||
|
||||
/mob/living/simple_animal/hostile/tree/PunchTarget()
|
||||
/mob/living/simple_mob/hostile/tree/PunchTarget()
|
||||
. =..()
|
||||
var/mob/living/L = .
|
||||
if(istype(L))
|
||||
@@ -53,7 +53,7 @@
|
||||
L.Weaken(3)
|
||||
L.visible_message("<span class='danger'>\the [src] knocks down \the [L]!</span>")
|
||||
|
||||
/mob/living/simple_animal/hostile/tree/death()
|
||||
/mob/living/simple_mob/hostile/tree/death()
|
||||
..(null,"is hacked into pieces!")
|
||||
playsound(loc, 'sound/effects/woodcutting.ogg', 100, 1)
|
||||
new /obj/item/stack/material/wood(loc)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/space_worm
|
||||
/mob/living/simple_mob/space_worm
|
||||
name = "space worm segment"
|
||||
desc = "A part of a space worm."
|
||||
icon = 'icons/mob/animal.dmi'
|
||||
@@ -35,8 +35,8 @@
|
||||
speak_emote = list("transmits") //not supposed to be used under AI control
|
||||
emote_hear = list("transmits") //I'm just adding it so it doesn't runtime if controlled by player who speaks
|
||||
|
||||
var/mob/living/simple_animal/space_worm/previous //next/previous segments, correspondingly
|
||||
var/mob/living/simple_animal/space_worm/next //head is the nextest segment
|
||||
var/mob/living/simple_mob/space_worm/previous //next/previous segments, correspondingly
|
||||
var/mob/living/simple_mob/space_worm/next //head is the nextest segment
|
||||
|
||||
var/stomachProcessProbability = 50
|
||||
var/digestionProbability = 20
|
||||
@@ -63,10 +63,10 @@
|
||||
New(var/location, var/segments = 6)
|
||||
..()
|
||||
|
||||
var/mob/living/simple_animal/space_worm/current = src
|
||||
var/mob/living/simple_mob/space_worm/current = src
|
||||
|
||||
for(var/i = 1 to segments)
|
||||
var/mob/living/simple_animal/space_worm/newSegment = new /mob/living/simple_animal/space_worm(loc)
|
||||
var/mob/living/simple_mob/space_worm/newSegment = new /mob/living/simple_mob/space_worm(loc)
|
||||
current.Attach(newSegment)
|
||||
current = newSegment
|
||||
|
||||
@@ -148,7 +148,7 @@
|
||||
|
||||
return 0
|
||||
|
||||
proc/Attach(var/mob/living/simple_animal/space_worm/attachement)
|
||||
proc/Attach(var/mob/living/simple_mob/space_worm/attachement)
|
||||
if(!attachement)
|
||||
return
|
||||
|
||||
@@ -158,8 +158,8 @@
|
||||
return
|
||||
|
||||
proc/Detach(die = 0)
|
||||
var/mob/living/simple_animal/space_worm/newHead = new /mob/living/simple_animal/space_worm/head(loc,0)
|
||||
var/mob/living/simple_animal/space_worm/newHeadPrevious = previous
|
||||
var/mob/living/simple_mob/space_worm/newHead = new /mob/living/simple_mob/space_worm/head(loc,0)
|
||||
var/mob/living/simple_mob/space_worm/newHeadPrevious = previous
|
||||
|
||||
previous = null //so that no extra heads are spawned
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/hostile/clown
|
||||
/mob/living/simple_mob/hostile/clown
|
||||
name = "clown"
|
||||
desc = "A denizen of clown planet"
|
||||
tt_desc = "E Homo sapiens corydon" //this is an actual clown, as opposed to someone dressed up as one
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/hostile/mecha
|
||||
/mob/living/simple_mob/hostile/mecha
|
||||
name = "mercenary gygax"
|
||||
desc = "Well that's forboding."
|
||||
icon = 'icons/mecha/mecha.dmi'
|
||||
@@ -66,38 +66,38 @@
|
||||
var/datum/effect/effect/system/spark_spread/sparks
|
||||
var/wreckage = /obj/effect/decal/mecha_wreckage/gygax/dark
|
||||
|
||||
/mob/living/simple_animal/hostile/mecha/New()
|
||||
/mob/living/simple_mob/hostile/mecha/New()
|
||||
..()
|
||||
sparks = new (src)
|
||||
sparks.set_up(3, 1, src)
|
||||
|
||||
/mob/living/simple_animal/hostile/mecha/Destroy()
|
||||
/mob/living/simple_mob/hostile/mecha/Destroy()
|
||||
qdel(sparks)
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/hostile/mecha/Life()
|
||||
/mob/living/simple_mob/hostile/mecha/Life()
|
||||
. = ..()
|
||||
if(!.) return
|
||||
if((health < getMaxHealth()*0.3) && prob(10))
|
||||
sparks.start()
|
||||
|
||||
/mob/living/simple_animal/hostile/mecha/bullet_act()
|
||||
/mob/living/simple_mob/hostile/mecha/bullet_act()
|
||||
..()
|
||||
sparks.start()
|
||||
|
||||
/mob/living/simple_animal/hostile/mecha/death()
|
||||
/mob/living/simple_mob/hostile/mecha/death()
|
||||
..(0,"explodes!")
|
||||
sparks.start()
|
||||
explosion(get_turf(src), 0, 0, 1, 3)
|
||||
qdel(src)
|
||||
new /obj/effect/decal/mecha_wreckage/gygax/dark(get_turf(src))
|
||||
|
||||
/mob/living/simple_animal/hostile/mecha/Move()
|
||||
/mob/living/simple_mob/hostile/mecha/Move()
|
||||
..()
|
||||
playsound(src,'sound/mecha/mechstep.ogg',40,1)
|
||||
|
||||
// This is a PoI mob, not the normal, floaty drones that hang out around windows
|
||||
/mob/living/simple_animal/hostile/mecha/malf_drone
|
||||
/mob/living/simple_mob/hostile/mecha/malf_drone
|
||||
name = "autonomous mechanized drone"
|
||||
desc = "It appears to be an exosuit, piloted by a drone intelligence. It looks scary."
|
||||
intelligence_level = SA_ROBOTIC
|
||||
@@ -116,8 +116,8 @@
|
||||
say_got_target = list("Threat detected.", "New task: Remove threat.", "Threat removal engaged.", "Engaging target.")
|
||||
returns_home = TRUE
|
||||
|
||||
/mob/living/simple_animal/hostile/mecha/malf_drone/isSynthetic()
|
||||
/mob/living/simple_mob/hostile/mecha/malf_drone/isSynthetic()
|
||||
return TRUE
|
||||
|
||||
/mob/living/simple_animal/hostile/mecha/malf_drone/speech_bubble_appearance()
|
||||
/mob/living/simple_mob/hostile/mecha/malf_drone/speech_bubble_appearance()
|
||||
return "synthetic_evil"
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/hostile/pirate
|
||||
/mob/living/simple_mob/hostile/pirate
|
||||
name = "Pirate"
|
||||
desc = "Does what he wants cause a pirate is free."
|
||||
tt_desc = "E Homo sapiens"
|
||||
@@ -50,7 +50,7 @@
|
||||
|
||||
var/corpse = /obj/effect/landmark/mobcorpse/pirate
|
||||
|
||||
/mob/living/simple_animal/hostile/pirate/ranged
|
||||
/mob/living/simple_mob/hostile/pirate/ranged
|
||||
name = "Pirate Gunner"
|
||||
icon_state = "pirateranged"
|
||||
icon_living = "pirateranged"
|
||||
@@ -64,7 +64,7 @@
|
||||
|
||||
corpse = /obj/effect/landmark/mobcorpse/pirate/ranged
|
||||
|
||||
/mob/living/simple_animal/hostile/pirate/death()
|
||||
/mob/living/simple_mob/hostile/pirate/death()
|
||||
..()
|
||||
if(corpse)
|
||||
new corpse (src.loc)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/hostile/russian
|
||||
/mob/living/simple_mob/hostile/russian
|
||||
name = "russian"
|
||||
desc = "For the Motherland!"
|
||||
tt_desc = "E Homo sapiens"
|
||||
@@ -47,7 +47,7 @@
|
||||
|
||||
var/corpse = /obj/effect/landmark/mobcorpse/russian
|
||||
|
||||
/mob/living/simple_animal/hostile/russian/ranged
|
||||
/mob/living/simple_mob/hostile/russian/ranged
|
||||
icon_state = "russianranged"
|
||||
icon_living = "russianranged"
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
|
||||
corpse = /obj/effect/landmark/mobcorpse/russian/ranged
|
||||
|
||||
/mob/living/simple_animal/hostile/russian/death()
|
||||
/mob/living/simple_mob/hostile/russian/death()
|
||||
..()
|
||||
if(corpse)
|
||||
new corpse (src.loc)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/hostile/syndicate
|
||||
/mob/living/simple_mob/hostile/syndicate
|
||||
name = "mercenary"
|
||||
desc = "Death to the Company."
|
||||
tt_desc = "E Homo sapiens"
|
||||
@@ -65,7 +65,7 @@
|
||||
|
||||
var/corpse = /obj/effect/landmark/mobcorpse/syndicatesoldier
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/death()
|
||||
/mob/living/simple_mob/hostile/syndicate/death()
|
||||
if(corpse)
|
||||
..()
|
||||
new corpse (src.loc)
|
||||
@@ -78,7 +78,7 @@
|
||||
|
||||
///////////////Sword and shield////////////
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/melee
|
||||
/mob/living/simple_mob/hostile/syndicate/melee
|
||||
icon_state = "syndicatemelee"
|
||||
icon_living = "syndicatemelee"
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
|
||||
loot_list = list(/obj/item/weapon/melee/energy/sword/red = 100, /obj/item/weapon/shield/energy = 100)
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/melee/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
/mob/living/simple_mob/hostile/syndicate/melee/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
if(O.force)
|
||||
if(prob(20))
|
||||
visible_message("<span class='danger'>\The [src] blocks \the [O] with its shield!</span>")
|
||||
@@ -106,7 +106,7 @@
|
||||
usr << "<span class='warning'>This weapon is ineffective, it does no damage.</span>"
|
||||
visible_message("<span class='warning'>\The [user] gently taps [src] with \the [O].</span>")
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/melee/bullet_act(var/obj/item/projectile/Proj)
|
||||
/mob/living/simple_mob/hostile/syndicate/melee/bullet_act(var/obj/item/projectile/Proj)
|
||||
if(!Proj) return
|
||||
if(prob(35))
|
||||
visible_message("<font color='red'><B>[src] blocks [Proj] with its shield!</B></font>")
|
||||
@@ -116,7 +116,7 @@
|
||||
else
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/melee/space
|
||||
/mob/living/simple_mob/hostile/syndicate/melee/space
|
||||
name = "syndicate commando"
|
||||
icon_state = "syndicatemeleespace"
|
||||
icon_living = "syndicatemeleespace"
|
||||
@@ -137,10 +137,10 @@
|
||||
|
||||
corpse = /obj/effect/landmark/mobcorpse/syndicatecommando
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/melee/space/Process_Spacemove(var/check_drift = 0)
|
||||
/mob/living/simple_mob/hostile/syndicate/melee/space/Process_Spacemove(var/check_drift = 0)
|
||||
return
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/ranged
|
||||
/mob/living/simple_mob/hostile/syndicate/ranged
|
||||
icon_state = "syndicateranged"
|
||||
icon_living = "syndicateranged"
|
||||
|
||||
@@ -152,7 +152,7 @@
|
||||
|
||||
loot_list = list(/obj/item/weapon/gun/projectile/automatic/c20r = 100)
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/ranged/laser
|
||||
/mob/living/simple_mob/hostile/syndicate/ranged/laser
|
||||
icon_state = "syndicateranged_laser"
|
||||
icon_living = "syndicateranged_laser"
|
||||
rapid = 0
|
||||
@@ -161,7 +161,7 @@
|
||||
|
||||
loot_list = list(/obj/item/weapon/gun/energy/laser = 100)
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/ranged/ionrifle
|
||||
/mob/living/simple_mob/hostile/syndicate/ranged/ionrifle
|
||||
icon_state = "syndicateranged_ionrifle"
|
||||
icon_living = "syndicateranged_ionrifle"
|
||||
rapid = 0
|
||||
@@ -170,7 +170,7 @@
|
||||
|
||||
loot_list = list(/obj/item/weapon/gun/energy/ionrifle = 100)
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/ranged/space
|
||||
/mob/living/simple_mob/hostile/syndicate/ranged/space
|
||||
name = "space mercenary" //VOREStation Edit
|
||||
icon_state = "syndicaterangedpsace"
|
||||
icon_living = "syndicaterangedpsace"
|
||||
@@ -190,7 +190,7 @@
|
||||
|
||||
corpse = /obj/effect/landmark/mobcorpse/syndicatecommando
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/ranged/space/Process_Spacemove(var/check_drift = 0)
|
||||
/mob/living/simple_mob/hostile/syndicate/ranged/space/Process_Spacemove(var/check_drift = 0)
|
||||
return
|
||||
|
||||
///////////////////////////////////////////////
|
||||
@@ -198,38 +198,38 @@
|
||||
// Don't leave corpses, to help balance loot.
|
||||
///////////////////////////////////////////////
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/poi
|
||||
/mob/living/simple_mob/hostile/syndicate/poi
|
||||
loot_list = list()
|
||||
corpse = null
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/melee/poi
|
||||
/mob/living/simple_mob/hostile/syndicate/melee/poi
|
||||
loot_list = list()
|
||||
corpse = null
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/melee/space/poi
|
||||
/mob/living/simple_mob/hostile/syndicate/melee/space/poi
|
||||
loot_list = list()
|
||||
corpse = null
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/ranged/poi
|
||||
/mob/living/simple_mob/hostile/syndicate/ranged/poi
|
||||
loot_list = list()
|
||||
corpse = null
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/ranged/laser/poi
|
||||
/mob/living/simple_mob/hostile/syndicate/ranged/laser/poi
|
||||
loot_list = list()
|
||||
corpse = null
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/ranged/ionrifle/poi
|
||||
/mob/living/simple_mob/hostile/syndicate/ranged/ionrifle/poi
|
||||
loot_list = list()
|
||||
corpse = null
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/ranged/space/poi
|
||||
/mob/living/simple_mob/hostile/syndicate/ranged/space/poi
|
||||
loot_list = list()
|
||||
corpse = null
|
||||
|
||||
|
||||
//Viscerators
|
||||
|
||||
/mob/living/simple_animal/hostile/viscerator
|
||||
/mob/living/simple_mob/hostile/viscerator
|
||||
name = "viscerator"
|
||||
desc = "A small, twin-bladed machine capable of inflicting very deadly lacerations."
|
||||
icon = 'icons/mob/critter.dmi'
|
||||
@@ -261,6 +261,6 @@
|
||||
max_n2 = 0
|
||||
minbodytemp = 0
|
||||
|
||||
/mob/living/simple_animal/hostile/viscerator/death()
|
||||
/mob/living/simple_mob/hostile/viscerator/death()
|
||||
..(null,"is smashed into pieces!")
|
||||
qdel(src)
|
||||
|
||||
@@ -3,14 +3,14 @@
|
||||
//Talky things
|
||||
#define try_say_list(L) if(L.len) say(pick(L))
|
||||
|
||||
/mob/living/simple_animal
|
||||
/mob/living/simple_mob
|
||||
name = "animal"
|
||||
desc = ""
|
||||
icon = 'icons/mob/animal.dmi'
|
||||
health = 20
|
||||
maxHealth = 20
|
||||
|
||||
mob_bump_flag = SIMPLE_ANIMAL
|
||||
mob_bump_flag = simple_mob
|
||||
mob_swap_flags = MONKEY|SLIME|HUMAN
|
||||
mob_push_flags = MONKEY|SLIME|HUMAN
|
||||
|
||||
@@ -169,7 +169,7 @@
|
||||
var/mob/living/target_mob // Who I'm trying to attack
|
||||
var/mob/living/follow_mob // Who I'm recruited by
|
||||
var/mob/living/list/friends = list() // People who are immune to my wrath, for now
|
||||
var/mob/living/simple_animal/list/faction_friends = list() // Other simple mobs I am friends with
|
||||
var/mob/living/simple_mob/list/faction_friends = list() // Other simple mobs I am friends with
|
||||
var/turf/list/walk_list = list()// List of turfs to walk through to get somewhere
|
||||
var/astarpathing = 0 // Am I currently pathing to somewhere?
|
||||
var/stance_changed = 0 // When our stance last changed (world.time)
|
||||
@@ -181,7 +181,7 @@
|
||||
////// ////// //////
|
||||
var/life_disabled = 0 //VOREStation Edit -- For performance reasons
|
||||
|
||||
/mob/living/simple_animal/New()
|
||||
/mob/living/simple_mob/New()
|
||||
..()
|
||||
verbs -= /mob/verb/observe
|
||||
home_turf = get_turf(src)
|
||||
@@ -195,8 +195,8 @@
|
||||
default_language = languages[1]
|
||||
|
||||
if(cooperative)
|
||||
var/mob/living/simple_animal/first_friend
|
||||
for(var/mob/living/simple_animal/M in living_mob_list)
|
||||
var/mob/living/simple_mob/first_friend
|
||||
for(var/mob/living/simple_mob/M in living_mob_list)
|
||||
if(M.faction == src.faction)
|
||||
first_friend = M
|
||||
break
|
||||
@@ -206,7 +206,7 @@
|
||||
else
|
||||
faction_friends |= src
|
||||
|
||||
/mob/living/simple_animal/Destroy()
|
||||
/mob/living/simple_mob/Destroy()
|
||||
home_turf = null
|
||||
path_overlay = null
|
||||
default_language = null
|
||||
@@ -225,7 +225,7 @@
|
||||
return ..()
|
||||
|
||||
//Client attached
|
||||
/mob/living/simple_animal/Login()
|
||||
/mob/living/simple_mob/Login()
|
||||
. = ..()
|
||||
ai_inactive = 1
|
||||
handle_stance(STANCE_IDLE)
|
||||
@@ -233,19 +233,19 @@
|
||||
to_chat(src,"<span class='notice'>Mob AI disabled while you are controlling the mob.</span><br><b>You are \the [src]. [player_msg]</b>")
|
||||
|
||||
//Client detatched
|
||||
/mob/living/simple_animal/Logout()
|
||||
/mob/living/simple_mob/Logout()
|
||||
spawn(15 SECONDS) //15 seconds to get back into the mob before it goes wild
|
||||
if(src && !src.client)
|
||||
ai_inactive = initial(ai_inactive) //So if they never have an AI, they stay that way.
|
||||
..()
|
||||
|
||||
//For debug purposes!
|
||||
/mob/living/simple_animal/proc/ai_log_output(var/msg = "missing message", var/ver = 1)
|
||||
/mob/living/simple_mob/proc/ai_log_output(var/msg = "missing message", var/ver = 1)
|
||||
if(ver <= debug_ai)
|
||||
log_debug("SA-AI: ([src]:[x],[y],[z])(@[world.time]): [msg] ")
|
||||
|
||||
//Should we be dead?
|
||||
/mob/living/simple_animal/updatehealth()
|
||||
/mob/living/simple_mob/updatehealth()
|
||||
health = getMaxHealth() - getToxLoss() - getFireLoss() - getBruteLoss()
|
||||
|
||||
//Alive, becoming dead
|
||||
@@ -293,7 +293,7 @@
|
||||
if(0 to 25)
|
||||
nutrition_icon.icon_state = "nutrition4"
|
||||
|
||||
/mob/living/simple_animal/update_icon()
|
||||
/mob/living/simple_mob/update_icon()
|
||||
. = ..()
|
||||
var/mutable_appearance/ma = new(src)
|
||||
ma.layer = layer
|
||||
@@ -332,7 +332,7 @@
|
||||
appearance = ma
|
||||
|
||||
// If your simple mob's update_icon() call calls overlays.Cut(), this needs to be called after this, or manually apply modifier_overly to overlays.
|
||||
/mob/living/simple_animal/update_modifier_visuals()
|
||||
/mob/living/simple_mob/update_modifier_visuals()
|
||||
var/image/effects = null
|
||||
if(modifier_overlay)
|
||||
overlays -= modifier_overlay
|
||||
@@ -351,7 +351,7 @@
|
||||
overlays += modifier_overlay
|
||||
|
||||
|
||||
/mob/living/simple_animal/Life()
|
||||
/mob/living/simple_mob/Life()
|
||||
|
||||
//VOREStation Edit
|
||||
if(life_disabled)
|
||||
@@ -402,11 +402,11 @@
|
||||
|
||||
// Resists out of things.
|
||||
// Sometimes there are times you want SAs to be buckled to something, so override this for when that is needed.
|
||||
/mob/living/simple_animal/proc/handle_resist()
|
||||
/mob/living/simple_mob/proc/handle_resist()
|
||||
resist()
|
||||
|
||||
// Peforms the random walk wandering
|
||||
/mob/living/simple_animal/proc/handle_wander_movement()
|
||||
/mob/living/simple_mob/proc/handle_wander_movement()
|
||||
if(isturf(src.loc) && !resting && !buckled && canmove) //Physically capable of moving?
|
||||
lifes_since_move++ //Increment turns since move (turns are life() cycles)
|
||||
if(lifes_since_move >= turns_per_move)
|
||||
@@ -421,7 +421,7 @@
|
||||
lifes_since_move = 0
|
||||
|
||||
// Checks to see if mob doesn't like this kind of turf
|
||||
/mob/living/simple_animal/proc/avoid_turf(var/turf/turf)
|
||||
/mob/living/simple_mob/proc/avoid_turf(var/turf/turf)
|
||||
if(!turf)
|
||||
return TRUE //Avoid the nothing, yes
|
||||
|
||||
@@ -431,7 +431,7 @@
|
||||
return FALSE //Override it on stuff to adjust
|
||||
|
||||
// Handles random chatter, called from Life() when stance = STANCE_IDLE
|
||||
/mob/living/simple_animal/proc/handle_idle_speaking()
|
||||
/mob/living/simple_mob/proc/handle_idle_speaking()
|
||||
if(rand(0,200) < speak_chance)
|
||||
if(speak && speak.len)
|
||||
if((emote_hear && emote_hear.len) || (emote_see && emote_see.len))
|
||||
@@ -466,7 +466,7 @@
|
||||
|
||||
// Handle interacting with and taking damage from atmos
|
||||
// TODO - Refactor this to use handle_environment() like a good /mob/living
|
||||
/mob/living/simple_animal/proc/handle_atmos()
|
||||
/mob/living/simple_mob/proc/handle_atmos()
|
||||
var/atmos_unsuitable = 0
|
||||
|
||||
var/atom/A = src.loc
|
||||
@@ -531,13 +531,13 @@
|
||||
oxygen.icon_state = "oxy0"
|
||||
|
||||
// For setting the stance WITHOUT processing it
|
||||
/mob/living/simple_animal/proc/set_stance(var/new_stance)
|
||||
/mob/living/simple_mob/proc/set_stance(var/new_stance)
|
||||
stance = new_stance
|
||||
stance_changed = world.time
|
||||
ai_log("set_stance() changing to [new_stance]",2)
|
||||
|
||||
// For proccessing the current stance, or setting and processing a new one
|
||||
/mob/living/simple_animal/proc/handle_stance(var/new_stance)
|
||||
/mob/living/simple_mob/proc/handle_stance(var/new_stance)
|
||||
if(ai_inactive)
|
||||
stance = STANCE_IDLE
|
||||
return
|
||||
@@ -580,18 +580,18 @@
|
||||
annoyed = 50
|
||||
AttackTarget()
|
||||
|
||||
/mob/living/simple_animal/proc/handle_supernatural()
|
||||
/mob/living/simple_mob/proc/handle_supernatural()
|
||||
if(purge)
|
||||
purge -= 1
|
||||
|
||||
/mob/living/simple_animal/gib()
|
||||
/mob/living/simple_mob/gib()
|
||||
..(icon_gib,1,icon) // we need to specify where the gib animation is stored
|
||||
|
||||
/mob/living/simple_animal/emote(var/act, var/type, var/desc)
|
||||
/mob/living/simple_mob/emote(var/act, var/type, var/desc)
|
||||
if(act)
|
||||
..(act, type, desc)
|
||||
|
||||
/mob/living/simple_animal/bullet_act(var/obj/item/projectile/Proj)
|
||||
/mob/living/simple_mob/bullet_act(var/obj/item/projectile/Proj)
|
||||
ai_log("bullet_act() I was shot by: [Proj.firer]",2)
|
||||
|
||||
/* VOREStation Edit - Ace doesn't like bonus SA damage.
|
||||
@@ -606,7 +606,7 @@
|
||||
react_to_attack(Proj.firer)
|
||||
|
||||
// When someone clicks us with an empty hand
|
||||
/mob/living/simple_animal/attack_hand(mob/living/carbon/human/M as mob)
|
||||
/mob/living/simple_mob/attack_hand(mob/living/carbon/human/M as mob)
|
||||
..()
|
||||
|
||||
switch(M.a_intent)
|
||||
@@ -653,7 +653,7 @@
|
||||
return
|
||||
|
||||
// When somoene clicks us with an item in hand
|
||||
/mob/living/simple_animal/attackby(var/obj/item/O, var/mob/user)
|
||||
/mob/living/simple_mob/attackby(var/obj/item/O, var/mob/user)
|
||||
if(istype(O, /obj/item/stack/medical))
|
||||
if(stat != DEAD)
|
||||
var/obj/item/stack/medical/MED = O
|
||||
@@ -679,7 +679,7 @@
|
||||
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/hit_with_weapon(obj/item/O, mob/living/user, var/effective_force, var/hit_zone)
|
||||
/mob/living/simple_mob/hit_with_weapon(obj/item/O, mob/living/user, var/effective_force, var/hit_zone)
|
||||
|
||||
//Animals can't be stunned(?)
|
||||
if(O.damtype == HALLOSS)
|
||||
@@ -697,18 +697,18 @@
|
||||
. = ..()
|
||||
|
||||
// When someone throws something at us
|
||||
/mob/living/simple_animal/hitby(atom/movable/AM)
|
||||
/mob/living/simple_mob/hitby(atom/movable/AM)
|
||||
..()
|
||||
if(AM.thrower)
|
||||
react_to_attack(AM.thrower)
|
||||
|
||||
//SA vs SA basically
|
||||
/mob/living/simple_animal/attack_generic(var/mob/attacker)
|
||||
/mob/living/simple_mob/attack_generic(var/mob/attacker)
|
||||
if(attacker)
|
||||
react_to_attack(attacker)
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/movement_delay()
|
||||
/mob/living/simple_mob/movement_delay()
|
||||
var/tally = 0 //Incase I need to add stuff other than "speed" later
|
||||
|
||||
tally = speed
|
||||
@@ -732,13 +732,13 @@
|
||||
|
||||
return tally+config.animal_delay
|
||||
|
||||
/mob/living/simple_animal/Stat()
|
||||
/mob/living/simple_mob/Stat()
|
||||
..()
|
||||
|
||||
if(statpanel("Status") && show_stat_health)
|
||||
stat(null, "Health: [round((health / getMaxHealth()) * 100)]%")
|
||||
|
||||
/mob/living/simple_animal/lay_down()
|
||||
/mob/living/simple_mob/lay_down()
|
||||
..()
|
||||
if(resting && icon_rest)
|
||||
icon_state = icon_rest
|
||||
@@ -746,7 +746,7 @@
|
||||
icon_state = icon_living
|
||||
update_icon()
|
||||
|
||||
/mob/living/simple_animal/death(gibbed, deathmessage = "dies!")
|
||||
/mob/living/simple_mob/death(gibbed, deathmessage = "dies!")
|
||||
density = 0 //We don't block even if we did before
|
||||
walk(src, 0) //We stop any background-processing walks
|
||||
resting = 0 //We can rest in peace later.
|
||||
@@ -764,7 +764,7 @@
|
||||
|
||||
return ..(gibbed,deathmessage)
|
||||
|
||||
/mob/living/simple_animal/ex_act(severity)
|
||||
/mob/living/simple_mob/ex_act(severity)
|
||||
if(!blinded)
|
||||
flash_eyes()
|
||||
var/armor = run_armor_check(def_zone = null, attack_flag = "bomb")
|
||||
@@ -783,7 +783,7 @@
|
||||
gib()
|
||||
|
||||
// Check target_mob if worthy of attack (i.e. check if they are dead or empty mecha)
|
||||
/mob/living/simple_animal/proc/SA_attackable(target_mob)
|
||||
/mob/living/simple_mob/proc/SA_attackable(target_mob)
|
||||
ai_log("SA_attackable([target_mob])",3)
|
||||
if (isliving(target_mob))
|
||||
var/mob/living/L = target_mob
|
||||
@@ -796,7 +796,7 @@
|
||||
ai_log("SA_attackable([target_mob]): no",3)
|
||||
return 0
|
||||
|
||||
/mob/living/simple_animal/say(var/message,var/datum/language/language)
|
||||
/mob/living/simple_mob/say(var/message,var/datum/language/language)
|
||||
var/verb = "says"
|
||||
if(speak_emote.len)
|
||||
verb = pick(speak_emote)
|
||||
@@ -805,10 +805,10 @@
|
||||
|
||||
..(message, null, verb)
|
||||
|
||||
/mob/living/simple_animal/get_speech_ending(verb, var/ending)
|
||||
/mob/living/simple_mob/get_speech_ending(verb, var/ending)
|
||||
return verb
|
||||
|
||||
/mob/living/simple_animal/put_in_hands(var/obj/item/W) // No hands.
|
||||
/mob/living/simple_mob/put_in_hands(var/obj/item/W) // No hands.
|
||||
if(has_hands)
|
||||
put_in_active_hand(W)
|
||||
return 1
|
||||
@@ -816,7 +816,7 @@
|
||||
return 1
|
||||
|
||||
// Harvest an animal's delicious byproducts
|
||||
/mob/living/simple_animal/proc/harvest(var/mob/user)
|
||||
/mob/living/simple_mob/proc/harvest(var/mob/user)
|
||||
var/actual_meat_amount = max(1,(meat_amount/2))
|
||||
if(meat_type && actual_meat_amount>0 && (stat == DEAD))
|
||||
for(var/i=0;i<actual_meat_amount;i++)
|
||||
@@ -830,17 +830,17 @@
|
||||
user.visible_message("<span class='danger'>[user] butchers \the [src] messily!</span>")
|
||||
gib()
|
||||
|
||||
/mob/living/simple_animal/handle_fire()
|
||||
/mob/living/simple_mob/handle_fire()
|
||||
return
|
||||
/mob/living/simple_animal/update_fire()
|
||||
/mob/living/simple_mob/update_fire()
|
||||
return
|
||||
/mob/living/simple_animal/IgniteMob()
|
||||
/mob/living/simple_mob/IgniteMob()
|
||||
return
|
||||
/mob/living/simple_animal/ExtinguishMob()
|
||||
/mob/living/simple_mob/ExtinguishMob()
|
||||
return
|
||||
|
||||
//We got hit! Consider hitting them back!
|
||||
/mob/living/simple_animal/proc/react_to_attack(var/mob/living/M)
|
||||
/mob/living/simple_mob/proc/react_to_attack(var/mob/living/M)
|
||||
if(ai_inactive || stat || M == target_mob) return //Not if we're dead or already hitting them
|
||||
if(M in friends || M.faction == faction) return //I'll overlook it THIS time...
|
||||
ai_log("react_to_attack([M])",1)
|
||||
@@ -850,7 +850,7 @@
|
||||
|
||||
return 0
|
||||
|
||||
/mob/living/simple_animal/proc/set_target(var/mob/M, forced = 0)
|
||||
/mob/living/simple_mob/proc/set_target(var/mob/M, forced = 0)
|
||||
ai_log("SetTarget([M])",2)
|
||||
if(!M || (world.time - last_target_time < 5 SECONDS) && target_mob)
|
||||
ai_log("SetTarget() can't set it again so soon",3)
|
||||
@@ -876,7 +876,7 @@
|
||||
return 0
|
||||
|
||||
// Set a follow target, with optional time for how long to follow them.
|
||||
/mob/living/simple_animal/proc/set_follow(var/mob/M, var/follow_for = 0)
|
||||
/mob/living/simple_mob/proc/set_follow(var/mob/M, var/follow_for = 0)
|
||||
ai_log("SetFollow([M]) for=[follow_for]",2)
|
||||
if(!M || (world.time - last_target_time < 4 SECONDS) && follow_mob)
|
||||
ai_log("SetFollow() can't set it again so soon",3)
|
||||
@@ -888,7 +888,7 @@
|
||||
return 1
|
||||
|
||||
//Scan surroundings for a valid target
|
||||
/mob/living/simple_animal/proc/FindTarget()
|
||||
/mob/living/simple_mob/proc/FindTarget()
|
||||
var/atom/T = null
|
||||
for(var/atom/A in ListTargets(view_range))
|
||||
|
||||
@@ -937,21 +937,21 @@
|
||||
return T
|
||||
|
||||
//Used for special targeting or reactions
|
||||
/mob/living/simple_animal/proc/Found(var/atom/A)
|
||||
/mob/living/simple_mob/proc/Found(var/atom/A)
|
||||
return
|
||||
|
||||
// Used for somewhat special targeting, but not to the extent of using Found()
|
||||
/mob/living/simple_animal/proc/special_target_check(var/atom/A)
|
||||
/mob/living/simple_mob/proc/special_target_check(var/atom/A)
|
||||
return TRUE
|
||||
|
||||
//Requesting help from like-minded individuals
|
||||
/mob/living/simple_animal/proc/RequestHelp()
|
||||
/mob/living/simple_mob/proc/RequestHelp()
|
||||
if(!cooperative || ((world.time - last_helpask_time) < 10 SECONDS))
|
||||
return
|
||||
|
||||
ai_log("RequestHelp() to [faction_friends.len] friends",2)
|
||||
last_helpask_time = world.time
|
||||
for(var/mob/living/simple_animal/F in faction_friends)
|
||||
for(var/mob/living/simple_mob/F in faction_friends)
|
||||
if(F == src) continue
|
||||
if(get_dist(src,F) <= F.assist_distance)
|
||||
spawn(0)
|
||||
@@ -960,7 +960,7 @@
|
||||
F.HelpRequested(src)
|
||||
|
||||
//Someone wants help?
|
||||
/mob/living/simple_animal/proc/HelpRequested(var/mob/living/simple_animal/F)
|
||||
/mob/living/simple_mob/proc/HelpRequested(var/mob/living/simple_mob/F)
|
||||
if(target_mob || stat)
|
||||
ai_log("HelpRequested() by [F] but we're busy/dead",2)
|
||||
return
|
||||
@@ -979,11 +979,11 @@
|
||||
// Can be used to conditionally do a ranged or melee attack.
|
||||
// Note that the SA must be able to do an attack at the specified range or else it may get trapped in a loop of switching
|
||||
// between STANCE_ATTACK and STANCE_ATTACKING, due to being told by MoveToTarget() that they're in range but being told by AttackTarget() that they're not.
|
||||
/mob/living/simple_animal/proc/ClosestDistance()
|
||||
/mob/living/simple_mob/proc/ClosestDistance()
|
||||
return ranged ? shoot_range - 1 : 1 // Shoot range -1 just because we don't want to constantly get kited
|
||||
|
||||
//Move to a target (or near if we're ranged)
|
||||
/mob/living/simple_animal/proc/MoveToTarget()
|
||||
/mob/living/simple_mob/proc/MoveToTarget()
|
||||
if(incapacitated(INCAPACITATION_DISABLED))
|
||||
ai_log("MoveToTarget() Bailing because we're disabled",2)
|
||||
return
|
||||
@@ -1058,7 +1058,7 @@
|
||||
LoseTarget() //Just forget it.
|
||||
|
||||
//Follow a target (and don't attempt to murder it horribly)
|
||||
/mob/living/simple_animal/proc/FollowTarget()
|
||||
/mob/living/simple_mob/proc/FollowTarget()
|
||||
ai_log("FollowTarget() [follow_mob]",1)
|
||||
stop_automated_movement = 1
|
||||
//If we were chasing someone and we can't anymore, give up.
|
||||
@@ -1103,7 +1103,7 @@
|
||||
LoseFollow()
|
||||
|
||||
//Just try one time to go look at something. Don't really focus much on it.
|
||||
/mob/living/simple_animal/proc/WanderTowards(var/turf/T)
|
||||
/mob/living/simple_mob/proc/WanderTowards(var/turf/T)
|
||||
if(!T) return
|
||||
ai_log("WanderTowards() [T.x],[T.y]",1)
|
||||
|
||||
@@ -1120,7 +1120,7 @@
|
||||
WalkPath(target_thing = T, target_dist = 1)
|
||||
|
||||
//A* now, try to a path to a target
|
||||
/mob/living/simple_animal/proc/GetPath(var/turf/target,var/get_to = 1,var/max_distance = world.view*6)
|
||||
/mob/living/simple_mob/proc/GetPath(var/turf/target,var/get_to = 1,var/max_distance = world.view*6)
|
||||
ai_log("GetPath([target],[get_to],[max_distance])",2)
|
||||
ForgetPath()
|
||||
var/list/new_path = AStar(get_turf(loc), target, astar_adjacent_proc, /turf/proc/Distance, min_target_dist = get_to, max_node_depth = max_distance, id = myid, exclude = obstacles)
|
||||
@@ -1136,7 +1136,7 @@
|
||||
return walk_list.len
|
||||
|
||||
//Walk along our A* path, target_thing allows us to stop early if we're nearby
|
||||
/mob/living/simple_animal/proc/WalkPath(var/atom/target_thing, var/target_dist = 1, var/proc/steps_callback = null, var/every_steps = 4)
|
||||
/mob/living/simple_mob/proc/WalkPath(var/atom/target_thing, var/target_dist = 1, var/proc/steps_callback = null, var/every_steps = 4)
|
||||
ai_log("WalkPath() (steps:[walk_list.len])",2)
|
||||
if(!walk_list || !walk_list.len)
|
||||
return
|
||||
@@ -1183,7 +1183,7 @@
|
||||
sleep(move_to_delay)
|
||||
|
||||
//Take one step along a path
|
||||
/mob/living/simple_animal/proc/MoveOnce()
|
||||
/mob/living/simple_mob/proc/MoveOnce()
|
||||
if(!walk_list.len)
|
||||
return
|
||||
|
||||
@@ -1201,7 +1201,7 @@
|
||||
return 1
|
||||
|
||||
//Forget the path entirely
|
||||
/mob/living/simple_animal/proc/ForgetPath()
|
||||
/mob/living/simple_mob/proc/ForgetPath()
|
||||
ai_log("ForgetPath()",2)
|
||||
if(path_display)
|
||||
for(var/turf/T in walk_list)
|
||||
@@ -1210,14 +1210,14 @@
|
||||
walk_list.Cut()
|
||||
|
||||
//Giving up on moving
|
||||
/mob/living/simple_animal/proc/GiveUpMoving()
|
||||
/mob/living/simple_mob/proc/GiveUpMoving()
|
||||
ai_log("GiveUpMoving()",1)
|
||||
ForgetPath()
|
||||
walk(src, 0)
|
||||
stop_automated_movement = 0
|
||||
|
||||
//Return home, all-in-one proc (though does target scan and drop out if they see one)
|
||||
/mob/living/simple_animal/proc/GoHome()
|
||||
/mob/living/simple_mob/proc/GoHome()
|
||||
if(!home_turf) return
|
||||
if(astarpathing) ForgetPath()
|
||||
ai_log("GoHome()",1)
|
||||
@@ -1231,7 +1231,7 @@
|
||||
GiveUpMoving() //Go back to wandering
|
||||
|
||||
//Get into attack mode on a target
|
||||
/mob/living/simple_animal/proc/AttackTarget()
|
||||
/mob/living/simple_mob/proc/AttackTarget()
|
||||
stop_automated_movement = 1
|
||||
if(incapacitated(INCAPACITATION_DISABLED))
|
||||
ai_log("AttackTarget() Bailing because we're disabled",2)
|
||||
@@ -1271,7 +1271,7 @@
|
||||
return 0
|
||||
|
||||
//Attack the target in melee
|
||||
/mob/living/simple_animal/proc/PunchTarget()
|
||||
/mob/living/simple_mob/proc/PunchTarget()
|
||||
if(!Adjacent(target_mob))
|
||||
return
|
||||
if(!canClick())
|
||||
@@ -1296,7 +1296,7 @@
|
||||
return M
|
||||
|
||||
// This is the actual act of 'punching'. Override for special behaviour.
|
||||
/mob/living/simple_animal/proc/DoPunch(var/atom/A)
|
||||
/mob/living/simple_mob/proc/DoPunch(var/atom/A)
|
||||
if(!Adjacent(A) && !istype(A, /obj/structure/window) && !istype(A, /obj/machinery/door/window)) // They could've moved in the meantime. But a Window probably wouldn't have. This allows player simple-mobs to attack windows.
|
||||
return FALSE
|
||||
|
||||
@@ -1318,7 +1318,7 @@
|
||||
return TRUE
|
||||
|
||||
//The actual top-level ranged attack proc
|
||||
/mob/living/simple_animal/proc/ShootTarget()
|
||||
/mob/living/simple_mob/proc/ShootTarget()
|
||||
if(!canClick())
|
||||
return FALSE
|
||||
|
||||
@@ -1354,7 +1354,7 @@
|
||||
return TRUE
|
||||
|
||||
//Check firing lines for faction_friends (if we're not cooperative, we don't care)
|
||||
/mob/living/simple_animal/proc/CheckFiringLine(var/turf/tturf)
|
||||
/mob/living/simple_mob/proc/CheckFiringLine(var/turf/tturf)
|
||||
if(!tturf) return
|
||||
|
||||
var/turf/list/crosses = list()
|
||||
@@ -1375,11 +1375,11 @@
|
||||
return 1
|
||||
|
||||
//Special attacks, like grenades or blinding spit or whatever
|
||||
/mob/living/simple_animal/proc/SpecialAtkTarget()
|
||||
/mob/living/simple_mob/proc/SpecialAtkTarget()
|
||||
return 0
|
||||
|
||||
//Shoot a bullet at someone
|
||||
/mob/living/simple_animal/proc/Shoot(var/target, var/start, var/user, var/bullet = 0)
|
||||
/mob/living/simple_mob/proc/Shoot(var/target, var/start, var/user, var/bullet = 0)
|
||||
if(target == start)
|
||||
return
|
||||
|
||||
@@ -1396,19 +1396,19 @@
|
||||
return
|
||||
|
||||
//We can't see the target
|
||||
/mob/living/simple_animal/proc/LoseTarget()
|
||||
/mob/living/simple_mob/proc/LoseTarget()
|
||||
ai_log("LoseTarget() [target_mob]",2)
|
||||
target_mob = null
|
||||
handle_stance(STANCE_IDLE)
|
||||
GiveUpMoving()
|
||||
|
||||
//Target is no longer valid (?)
|
||||
/mob/living/simple_animal/proc/LostTarget()
|
||||
/mob/living/simple_mob/proc/LostTarget()
|
||||
handle_stance(STANCE_IDLE)
|
||||
GiveUpMoving()
|
||||
|
||||
//Forget a follow mode
|
||||
/mob/living/simple_animal/proc/LoseFollow()
|
||||
/mob/living/simple_mob/proc/LoseFollow()
|
||||
ai_log("LoseFollow() [target_mob]",2)
|
||||
stop_automated_movement = 0
|
||||
follow_mob = null
|
||||
@@ -1416,44 +1416,44 @@
|
||||
GiveUpMoving()
|
||||
|
||||
// Makes the simple mob stop everything. Useful for when it get stunned.
|
||||
/mob/living/simple_animal/proc/Disable()
|
||||
/mob/living/simple_mob/proc/Disable()
|
||||
ai_log("Disable() [target_mob]",2)
|
||||
spawn(0)
|
||||
LoseTarget()
|
||||
LoseFollow()
|
||||
|
||||
/mob/living/simple_animal/Stun(amount)
|
||||
/mob/living/simple_mob/Stun(amount)
|
||||
if(amount > 0)
|
||||
Disable()
|
||||
..(amount)
|
||||
|
||||
/mob/living/simple_animal/AdjustStunned(amount)
|
||||
/mob/living/simple_mob/AdjustStunned(amount)
|
||||
if(amount > 0)
|
||||
Disable()
|
||||
..(amount)
|
||||
|
||||
/mob/living/simple_animal/Weaken(amount)
|
||||
/mob/living/simple_mob/Weaken(amount)
|
||||
if(amount > 0)
|
||||
Disable()
|
||||
..(amount)
|
||||
|
||||
/mob/living/simple_animal/AdjustWeakened(amount)
|
||||
/mob/living/simple_mob/AdjustWeakened(amount)
|
||||
if(amount > 0)
|
||||
Disable()
|
||||
..(amount)
|
||||
|
||||
/mob/living/simple_animal/Paralyse(amount)
|
||||
/mob/living/simple_mob/Paralyse(amount)
|
||||
if(amount > 0)
|
||||
Disable()
|
||||
..(amount)
|
||||
|
||||
/mob/living/simple_animal/AdjustParalysis(amount)
|
||||
/mob/living/simple_mob/AdjustParalysis(amount)
|
||||
if(amount > 0)
|
||||
Disable()
|
||||
..(amount)
|
||||
|
||||
//Find me some targets
|
||||
/mob/living/simple_animal/proc/ListTargets(var/dist = view_range)
|
||||
/mob/living/simple_mob/proc/ListTargets(var/dist = view_range)
|
||||
var/list/L = hearers(src, dist)
|
||||
|
||||
for(var/obj/mecha/M in mechas_list)
|
||||
@@ -1463,7 +1463,7 @@
|
||||
return L
|
||||
|
||||
//Break through windows/other things
|
||||
/mob/living/simple_animal/proc/DestroySurroundings(var/direction)
|
||||
/mob/living/simple_mob/proc/DestroySurroundings(var/direction)
|
||||
if(!direction)
|
||||
direction = pick(cardinal) //FLAIL WILDLY
|
||||
|
||||
@@ -1499,7 +1499,7 @@
|
||||
return
|
||||
|
||||
//Check for shuttle bumrush
|
||||
/mob/living/simple_animal/proc/check_horde()
|
||||
/mob/living/simple_mob/proc/check_horde()
|
||||
return 0
|
||||
if(emergency_shuttle.shuttle.location)
|
||||
if(!enroute && !target_mob) //The shuttle docked, all monsters rush for the escape hallway
|
||||
@@ -1516,7 +1516,7 @@
|
||||
stop_automated_movement = 0
|
||||
|
||||
//Shuttle bumrush
|
||||
/mob/living/simple_animal/proc/horde()
|
||||
/mob/living/simple_mob/proc/horde()
|
||||
var/turf/T = get_step_to(src, shuttletarget)
|
||||
for(var/atom/A in T)
|
||||
if(istype(A,/obj/machinery/door/airlock))
|
||||
@@ -1538,7 +1538,7 @@
|
||||
horde()
|
||||
|
||||
//Touches a wire, etc
|
||||
/mob/living/simple_animal/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0, var/def_zone = null)
|
||||
/mob/living/simple_mob/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0, var/def_zone = null)
|
||||
shock_damage *= max(siemens_coeff - shock_resistance, 0)
|
||||
if (shock_damage < 1)
|
||||
return 0
|
||||
@@ -1551,7 +1551,7 @@
|
||||
s.start()
|
||||
|
||||
//Shot with taser/stunvolver
|
||||
/mob/living/simple_animal/stun_effect_act(var/stun_amount, var/agony_amount, var/def_zone, var/used_weapon=null)
|
||||
/mob/living/simple_mob/stun_effect_act(var/stun_amount, var/agony_amount, var/def_zone, var/used_weapon=null)
|
||||
if(taser_kill)
|
||||
var/stunDam = 0
|
||||
var/agonyDam = 0
|
||||
@@ -1565,7 +1565,7 @@
|
||||
agonyDam += agony_amount * 0.5
|
||||
apply_damage(damage = agonyDam, damagetype = BURN, def_zone = null, blocked = armor, blocked = resistance, used_weapon = used_weapon, sharp = FALSE, edge = FALSE)
|
||||
|
||||
/mob/living/simple_animal/emp_act(severity)
|
||||
/mob/living/simple_mob/emp_act(severity)
|
||||
if(!isSynthetic())
|
||||
return
|
||||
switch(severity)
|
||||
@@ -1578,7 +1578,7 @@
|
||||
if(4)
|
||||
adjustFireLoss(rand(1, 6))
|
||||
|
||||
/mob/living/simple_animal/getarmor(def_zone, attack_flag)
|
||||
/mob/living/simple_mob/getarmor(def_zone, attack_flag)
|
||||
var/armorval = armor[attack_flag]
|
||||
if(!armorval)
|
||||
return 0
|
||||
@@ -1586,16 +1586,16 @@
|
||||
return armorval
|
||||
/*
|
||||
// Force it to target something
|
||||
/mob/living/simple_animal/proc/taunt(var/mob/living/new_target, var/forced = FALSE)
|
||||
/mob/living/simple_mob/proc/taunt(var/mob/living/new_target, var/forced = FALSE)
|
||||
if(intelligence_level == SA_HUMANOID && !forced)
|
||||
return
|
||||
set_target(new_target)
|
||||
*/
|
||||
/mob/living/simple_animal/is_sentient()
|
||||
/mob/living/simple_mob/is_sentient()
|
||||
return intelligence_level != SA_PLANT && intelligence_level != SA_ROBOTIC
|
||||
|
||||
// Hand procs for player-controlled SA's
|
||||
/mob/living/simple_animal/swap_hand()
|
||||
/mob/living/simple_mob/swap_hand()
|
||||
src.hand = !( src.hand )
|
||||
if(hud_used.l_hand_hud_object && hud_used.r_hand_hud_object)
|
||||
if(hand) //This being 1 means the left hand is in use
|
||||
@@ -1606,17 +1606,17 @@
|
||||
hud_used.r_hand_hud_object.icon_state = "r_hand_active"
|
||||
return
|
||||
/*
|
||||
/mob/living/simple_animal/put_in_active_hand(var/obj/item/I)
|
||||
/mob/living/simple_mob/put_in_active_hand(var/obj/item/I)
|
||||
if(!has_hands || !istype(I))
|
||||
return
|
||||
*/
|
||||
//Puts the item into our active hand if possible. returns 1 on success.
|
||||
/mob/living/simple_animal/put_in_active_hand(var/obj/item/W)
|
||||
/mob/living/simple_mob/put_in_active_hand(var/obj/item/W)
|
||||
if(!has_hands)
|
||||
return FALSE
|
||||
return (hand ? put_in_l_hand(W) : put_in_r_hand(W))
|
||||
|
||||
/mob/living/simple_animal/put_in_l_hand(var/obj/item/W)
|
||||
/mob/living/simple_mob/put_in_l_hand(var/obj/item/W)
|
||||
if(!..() || l_hand)
|
||||
return 0
|
||||
W.forceMove(src)
|
||||
@@ -1626,7 +1626,7 @@
|
||||
update_inv_l_hand()
|
||||
return TRUE
|
||||
|
||||
/mob/living/simple_animal/put_in_r_hand(var/obj/item/W)
|
||||
/mob/living/simple_mob/put_in_r_hand(var/obj/item/W)
|
||||
if(!..() || r_hand)
|
||||
return 0
|
||||
W.forceMove(src)
|
||||
@@ -1636,7 +1636,7 @@
|
||||
update_inv_r_hand()
|
||||
return TRUE
|
||||
|
||||
/mob/living/simple_animal/update_inv_r_hand()
|
||||
/mob/living/simple_mob/update_inv_r_hand()
|
||||
if(QDESTROYING(src))
|
||||
return
|
||||
|
||||
@@ -1673,7 +1673,7 @@
|
||||
|
||||
update_icon()
|
||||
|
||||
/mob/living/simple_animal/update_inv_l_hand()
|
||||
/mob/living/simple_mob/update_inv_l_hand()
|
||||
if(QDESTROYING(src))
|
||||
return
|
||||
|
||||
@@ -1711,14 +1711,14 @@
|
||||
update_icon()
|
||||
|
||||
//Can insert extra huds into the hud holder here.
|
||||
/mob/living/simple_animal/proc/extra_huds(var/datum/hud/hud,var/icon/ui_style,var/list/hud_elements)
|
||||
/mob/living/simple_mob/proc/extra_huds(var/datum/hud/hud,var/icon/ui_style,var/list/hud_elements)
|
||||
return
|
||||
|
||||
//If they can or cannot use tools/machines/etc
|
||||
/mob/living/simple_animal/IsAdvancedToolUser()
|
||||
/mob/living/simple_mob/IsAdvancedToolUser()
|
||||
return has_hands
|
||||
|
||||
/mob/living/simple_animal/proc/IsHumanoidToolUser(var/atom/tool)
|
||||
/mob/living/simple_mob/proc/IsHumanoidToolUser(var/atom/tool)
|
||||
if(!humanoid_hands)
|
||||
var/display_name = null
|
||||
if(tool)
|
||||
@@ -1728,7 +1728,7 @@
|
||||
to_chat(src, "<span class='danger'>Your [hand_form] are not fit for use of \the [display_name].</span>")
|
||||
return humanoid_hands
|
||||
|
||||
/mob/living/simple_animal/drop_from_inventory(var/obj/item/W, var/atom/target = null)
|
||||
/mob/living/simple_mob/drop_from_inventory(var/obj/item/W, var/atom/target = null)
|
||||
. = ..(W, target)
|
||||
if(!target)
|
||||
target = src.loc
|
||||
@@ -1736,7 +1736,7 @@
|
||||
W.forceMove(src.loc)
|
||||
|
||||
//Commands, reactions, etc
|
||||
/mob/living/simple_animal/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "", var/italics = 0, var/mob/speaker = null, var/sound/speech_sound, var/sound_vol)
|
||||
/mob/living/simple_mob/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "", var/italics = 0, var/mob/speaker = null, var/sound/speech_sound, var/sound_vol)
|
||||
..()
|
||||
if(!ai_inactive && reacts && speaker && (message in reactions) && (!hostile || isliving(speaker)) && say_understands(speaker,language))
|
||||
var/mob/living/L = speaker
|
||||
@@ -1746,16 +1746,16 @@
|
||||
say(reactions[message])
|
||||
|
||||
//Just some subpaths for easy searching
|
||||
/mob/living/simple_animal/hostile
|
||||
/mob/living/simple_mob/hostile
|
||||
faction = "not yours"
|
||||
hostile = 1
|
||||
retaliate = 1
|
||||
stop_when_pulled = 0
|
||||
destroy_surroundings = 1
|
||||
|
||||
/mob/living/simple_animal/retaliate
|
||||
/mob/living/simple_mob/retaliate
|
||||
retaliate = 1
|
||||
destroy_surroundings = 1
|
||||
|
||||
/mob/living/simple_animal/get_nametag_desc(mob/user)
|
||||
/mob/living/simple_mob/get_nametag_desc(mob/user)
|
||||
return "<i>[tt_desc]</i>"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#define SA_ICON_DEAD 0x02
|
||||
#define SA_ICON_REST 0x03
|
||||
|
||||
/mob/living/simple_animal
|
||||
/mob/living/simple_mob
|
||||
var/vore_active = 0 // If vore behavior is enabled for this mob
|
||||
|
||||
var/vore_capacity = 1 // The capacity (in people) this person can hold
|
||||
@@ -31,20 +31,21 @@
|
||||
|
||||
var/vore_fullness = 0 // How "full" the belly is (controls icons)
|
||||
var/vore_icons = 0 // Bitfield for which fields we have vore icons for.
|
||||
var/life_disabled = 0 // For performance reasons
|
||||
|
||||
// Release belly contents before being gc'd!
|
||||
/mob/living/simple_animal/Destroy()
|
||||
/mob/living/simple_mob/Destroy()
|
||||
release_vore_contents()
|
||||
prey_excludes.Cut()
|
||||
. = ..()
|
||||
|
||||
//For all those ID-having mobs
|
||||
/mob/living/simple_animal/GetIdCard()
|
||||
/mob/living/simple_mob/GetIdCard()
|
||||
if(myid)
|
||||
return myid
|
||||
|
||||
// Update fullness based on size & quantity of belly contents
|
||||
/mob/living/simple_animal/proc/update_fullness()
|
||||
/mob/living/simple_mob/proc/update_fullness()
|
||||
var/new_fullness = 0
|
||||
for(var/belly in vore_organs)
|
||||
var/obj/belly/B = belly
|
||||
@@ -53,7 +54,7 @@
|
||||
new_fullness = round(new_fullness, 1) // Because intervals of 0.25 are going to make sprite artists cry.
|
||||
vore_fullness = min(vore_capacity, new_fullness)
|
||||
|
||||
/mob/living/simple_animal/proc/update_vore_icon()
|
||||
/mob/living/simple_mob/proc/update_vore_icon()
|
||||
if(!vore_active)
|
||||
return 0
|
||||
update_fullness()
|
||||
@@ -66,34 +67,34 @@
|
||||
else if(((stat == UNCONSCIOUS) || resting || incapacitated(INCAPACITATION_DISABLED) ) && icon_rest && (vore_icons & SA_ICON_REST))
|
||||
return "[icon_rest]-[vore_fullness]"
|
||||
|
||||
/mob/living/simple_animal/proc/will_eat(var/mob/living/M)
|
||||
/mob/living/simple_mob/proc/will_eat(var/mob/living/M)
|
||||
if(client) //You do this yourself, dick!
|
||||
ai_log("vr/wont eat [M] because we're player-controlled", 3)
|
||||
//ai_log("vr/wont eat [M] because we're player-controlled", 3) //VORESTATION AI TEMPORARY REMOVAL
|
||||
return 0
|
||||
if(!istype(M)) //Can't eat 'em if they ain't /mob/living
|
||||
ai_log("vr/wont eat [M] because they are not /mob/living", 3)
|
||||
//ai_log("vr/wont eat [M] because they are not /mob/living", 3) //VORESTATION AI TEMPORARY REMOVAL
|
||||
return 0
|
||||
if(src == M) //Don't eat YOURSELF dork
|
||||
ai_log("vr/won't eat [M] because it's me!", 3)
|
||||
//ai_log("vr/won't eat [M] because it's me!", 3) //VORESTATION AI TEMPORARY REMOVAL
|
||||
return 0
|
||||
if(vore_ignores_undigestable && !M.digestable) //Don't eat people with nogurgle prefs
|
||||
ai_log("vr/wont eat [M] because I am picky", 3)
|
||||
//ai_log("vr/wont eat [M] because I am picky", 3) //VORESTATION AI TEMPORARY REMOVAL
|
||||
return 0
|
||||
if(!M.allowmobvore) // Don't eat people who don't want to be ate by mobs
|
||||
ai_log("vr/wont eat [M] because they don't allow mob vore", 3)
|
||||
//ai_log("vr/wont eat [M] because they don't allow mob vore", 3) //VORESTATION AI TEMPORARY REMOVAL
|
||||
return 0
|
||||
if(M in prey_excludes) // They're excluded
|
||||
ai_log("vr/wont eat [M] because they are excluded", 3)
|
||||
//ai_log("vr/wont eat [M] because they are excluded", 3) //VORESTATION AI TEMPORARY REMOVAL
|
||||
return 0
|
||||
if(M.size_multiplier < vore_min_size || M.size_multiplier > vore_max_size)
|
||||
ai_log("vr/wont eat [M] because they too small or too big", 3)
|
||||
//ai_log("vr/wont eat [M] because they too small or too big", 3) //VORESTATION AI TEMPORARY REMOVAL
|
||||
return 0
|
||||
if(vore_capacity != 0 && (vore_fullness >= vore_capacity)) // We're too full to fit them
|
||||
ai_log("vr/wont eat [M] because I am too full", 3)
|
||||
//ai_log("vr/wont eat [M] because I am too full", 3) //VORESTATION AI TEMPORARY REMOVAL
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/mob/living/simple_animal/PunchTarget()
|
||||
/*
|
||||
/mob/living/simple_mob/PunchTarget()
|
||||
ai_log("vr/PunchTarget() [target_mob]", 3)
|
||||
|
||||
// If we're not hungry, call the sideways "parent" to do normal punching
|
||||
@@ -110,8 +111,9 @@
|
||||
return EatTarget()
|
||||
else
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/proc/CanPounceTarget() //returns either FALSE or a %chance of success
|
||||
*/ //VORESTATION AI TEMPORARY REMOVAL
|
||||
/*
|
||||
/mob/living/simple_mob/proc/CanPounceTarget() //returns either FALSE or a %chance of success
|
||||
if(!target_mob.canmove || issilicon(target_mob) || world.time < vore_pounce_cooldown) //eliminate situations where pouncing CANNOT happen
|
||||
return FALSE
|
||||
if(!prob(vore_pounce_chance)) //mob doesn't want to pounce
|
||||
@@ -123,9 +125,9 @@
|
||||
return FALSE
|
||||
else
|
||||
return max(0,(vore_pounce_successrate - (vore_pounce_falloff * TargetHealthPercent)))
|
||||
|
||||
|
||||
/mob/living/simple_animal/proc/PounceTarget(var/successrate = 100)
|
||||
*/ //VORESTATION AI TEMPORARY REMOVAL
|
||||
/*
|
||||
/mob/living/simple_mob/proc/PounceTarget(var/successrate = 100)
|
||||
vore_pounce_cooldown = world.time + 20 SECONDS // don't attempt another pounce for a while
|
||||
if(prob(successrate)) // pounce success!
|
||||
target_mob.Weaken(5)
|
||||
@@ -138,40 +140,40 @@
|
||||
return EatTarget()
|
||||
else
|
||||
return //just leave them
|
||||
|
||||
*/ //VORESTATION AI TEMPORARY REMOVAL
|
||||
// Attempt to eat target
|
||||
// TODO - Review this. Could be some issues here
|
||||
/mob/living/simple_animal/proc/EatTarget()
|
||||
ai_log("vr/EatTarget() [target_mob]",2)
|
||||
stop_automated_movement = 1
|
||||
var/old_target = target_mob
|
||||
handle_stance(STANCE_BUSY)
|
||||
. = animal_nom(target_mob)
|
||||
/mob/living/simple_mob/proc/EatTarget(atom/A)
|
||||
//ai_log("vr/EatTarget() [target_mob]",2) //VORESTATION AI TEMPORARY REMOVAL
|
||||
//stop_automated_movement = 1 //VORESTATION AI TEMPORARY REMOVAL
|
||||
var/old_target = A
|
||||
set_AI_busy(1) //VORESTATION AI TEMPORARY EDIT
|
||||
. = animal_nom(A)
|
||||
playsound(src, swallowsound, 50, 1)
|
||||
update_icon()
|
||||
|
||||
if(.)
|
||||
// If we succesfully ate them, lose the target
|
||||
LoseTarget()
|
||||
set_AI_busy(0) // lose_target(A) //Unsure what to put here. Replaced with set_AI_busy(1) //VORESTATION AI TEMPORARY EDIT
|
||||
return old_target
|
||||
else if(old_target == target_mob)
|
||||
else if(old_target == A)
|
||||
// If we didn't but they are still our target, go back to attack.
|
||||
// but don't run the handler immediately, wait until next tick
|
||||
// Otherwise we'll be in a possibly infinate loop
|
||||
set_stance(STANCE_ATTACK)
|
||||
stop_automated_movement = 0
|
||||
set_AI_busy(0) //VORESTATION AI TEMPORARY EDIT
|
||||
//stop_automated_movement = 0 //VORESTATION AI TEMPORARY EDIT
|
||||
|
||||
/mob/living/simple_animal/death()
|
||||
/mob/living/simple_mob/death()
|
||||
release_vore_contents()
|
||||
. = ..()
|
||||
|
||||
// Make sure you don't call ..() on this one, otherwise you duplicate work.
|
||||
/mob/living/simple_animal/init_vore()
|
||||
/mob/living/simple_mob/init_vore()
|
||||
if(!vore_active || no_vore)
|
||||
return
|
||||
|
||||
if(!IsAdvancedToolUser())
|
||||
verbs |= /mob/living/simple_animal/proc/animal_nom
|
||||
verbs |= /mob/living/simple_mob/proc/animal_nom
|
||||
verbs |= /mob/living/proc/shred_limb
|
||||
|
||||
if(LAZYLEN(vore_organs))
|
||||
@@ -213,30 +215,30 @@
|
||||
"The churning walls slowly pulverize you into meaty nutrients.",
|
||||
"The stomach glorps and gurgles as it tries to work you into slop.")
|
||||
|
||||
/mob/living/simple_animal/Bumped(var/atom/movable/AM, yes)
|
||||
/mob/living/simple_mob/Bumped(var/atom/movable/AM, yes)
|
||||
if(ismob(AM))
|
||||
var/mob/tmob = AM
|
||||
if(will_eat(tmob) && !istype(tmob, type) && prob(vore_bump_chance) && !ckey) //check if they decide to eat. Includes sanity check to prevent cannibalism.
|
||||
if(tmob.canmove && prob(vore_pounce_chance)) //if they'd pounce for other noms, pounce for these too, otherwise still try and eat them if they hold still
|
||||
tmob.Weaken(5)
|
||||
tmob.visible_message("<span class='danger'>\the [src] [vore_bump_emote] \the [tmob]!</span>!")
|
||||
stop_automated_movement = 1
|
||||
//stop_automated_movement = 1 //VORESTATION AI TEMPORARY REMOVAL
|
||||
animal_nom(tmob)
|
||||
update_icon()
|
||||
stop_automated_movement = 0
|
||||
//stop_automated_movement = 0 //VORESTATION AI TEMPORARY REMOVAL
|
||||
..()
|
||||
|
||||
/* //Was replaced with suitable_turf_type, but that can be done later. //VORESTATION AI TEMPORARY REMOVAL
|
||||
// Checks to see if mob doesn't like this kind of turf
|
||||
/mob/living/simple_animal/avoid_turf(var/turf/turf)
|
||||
/mob/living/simple_mob/avoid_turf(var/turf/turf)
|
||||
//So we only check if the parent didn't find anything terrible
|
||||
if((. = ..(turf)))
|
||||
return .
|
||||
|
||||
if(istype(turf,/turf/unsimulated/floor/sky))
|
||||
return TRUE //Mobs aren't that stupid, probably
|
||||
|
||||
*/
|
||||
//Grab = Nomf
|
||||
/mob/living/simple_animal/UnarmedAttack(var/atom/A, var/proximity)
|
||||
/mob/living/simple_mob/UnarmedAttack(var/atom/A, var/proximity)
|
||||
. = ..()
|
||||
|
||||
if(a_intent == I_GRAB && isliving(A) && !has_hands)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/instantiate_hud(var/datum/hud/hud)
|
||||
/mob/living/simple_mob/instantiate_hud(var/datum/hud/hud)
|
||||
if(!client)
|
||||
return //Why bother.
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/retaliate/bee
|
||||
/mob/living/simple_mob/retaliate/bee
|
||||
name = "space bumble bee"
|
||||
desc = "Buzz buzz."
|
||||
icon = 'icons/mob/vore.dmi'
|
||||
@@ -36,10 +36,10 @@
|
||||
|
||||
faction = "bee"
|
||||
|
||||
/mob/living/simple_animal/retaliate/bee/Process_Spacemove(var/check_drift = 0)
|
||||
/mob/living/simple_mob/retaliate/bee/Process_Spacemove(var/check_drift = 0)
|
||||
return 1 //No drifting in space for space bee!
|
||||
|
||||
// Activate Noms!
|
||||
/mob/living/simple_animal/retaliate/bee
|
||||
/mob/living/simple_mob/retaliate/bee
|
||||
vore_active = 1
|
||||
vore_icons = SA_ICON_LIVING
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/catgirl
|
||||
/mob/living/simple_mob/catgirl
|
||||
name = "catgirl"
|
||||
desc = "Her hobbies are catnaps, knocking things over, and headpats."
|
||||
tt_desc = "Homo felinus"
|
||||
@@ -44,7 +44,7 @@
|
||||
"catgirlbrown"
|
||||
)
|
||||
|
||||
/mob/living/simple_animal/catgirl/New()
|
||||
/mob/living/simple_mob/catgirl/New()
|
||||
..()
|
||||
if(random_skin)
|
||||
icon_living = pick(skins)
|
||||
@@ -53,7 +53,7 @@
|
||||
update_icon()
|
||||
|
||||
// Activate Noms!
|
||||
/mob/living/simple_animal/catgirl
|
||||
/mob/living/simple_mob/catgirl
|
||||
vore_active = 1
|
||||
vore_bump_chance = 5
|
||||
vore_pounce_chance = 50
|
||||
@@ -63,5 +63,5 @@
|
||||
vore_digest_chance = 25 // But squirming might make them gurgle...
|
||||
vore_icons = SA_ICON_LIVING | SA_ICON_REST
|
||||
|
||||
/mob/living/simple_animal/catgirl/retaliate
|
||||
/mob/living/simple_mob/catgirl/retaliate
|
||||
retaliate = 1
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/cookiegirl
|
||||
/mob/living/simple_mob/cookiegirl
|
||||
name = "cookiegirl"
|
||||
desc = "A woman made with a combination of, well... Whatever you put in a cookie. What were the chefs thinking?"
|
||||
icon = 'icons/mob/vore.dmi'
|
||||
@@ -31,7 +31,7 @@
|
||||
attacktext = list("smacked")
|
||||
|
||||
// Activate Noms!
|
||||
/mob/living/simple_animal/cookiegirl
|
||||
/mob/living/simple_mob/cookiegirl
|
||||
vore_active = 1
|
||||
vore_bump_chance = 2
|
||||
vore_pounce_chance = 25
|
||||
@@ -41,5 +41,5 @@
|
||||
vore_digest_chance = 10 // Gonna become as sweet as sugar, soon.
|
||||
vore_icons = SA_ICON_LIVING | SA_ICON_REST
|
||||
|
||||
/mob/living/simple_animal/cookiegirl/retaliate
|
||||
/mob/living/simple_mob/cookiegirl/retaliate
|
||||
retaliate = 1
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/hostile/corrupthound
|
||||
/mob/living/simple_mob/hostile/corrupthound
|
||||
name = "corrupt hound"
|
||||
desc = "Good boy machine broke. This is definitely no good news for the organic lifeforms in vicinity."
|
||||
icon = 'icons/mob/vore64x32.dmi'
|
||||
@@ -61,7 +61,7 @@
|
||||
|
||||
loot_list = list(/obj/item/borg/upgrade/syndicate = 6, /obj/item/borg/upgrade/vtec = 6, /obj/item/weapon/material/knife/ritual = 6, /obj/item/weapon/disk/nifsoft/compliance = 6)
|
||||
|
||||
/mob/living/simple_animal/hostile/corrupthound/prettyboi
|
||||
/mob/living/simple_mob/hostile/corrupthound/prettyboi
|
||||
name = "corrupt corrupt hound"
|
||||
desc = "Bad boy machine broke as well. Seems an attempt was made to achieve a less threatening look, and this one is definitely having some conflicting feelings about it."
|
||||
icon_state = "prettyboi"
|
||||
@@ -80,36 +80,36 @@
|
||||
say_got_target = list("HERE COMES BIG MEAN HUG MACHINE!", "I'LL BE GENTLE!", "FUEL ME FRIEND!", "I*M SO SORRY!", "YUMMY TREAT DETECTED!", "LOVE ME!", "Not again. NOT AGAIN!")
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/corrupthound/isSynthetic()
|
||||
/mob/living/simple_mob/hostile/corrupthound/isSynthetic()
|
||||
return TRUE
|
||||
|
||||
/mob/living/simple_animal/hostile/corrupthound/speech_bubble_appearance()
|
||||
/mob/living/simple_mob/hostile/corrupthound/speech_bubble_appearance()
|
||||
return "synthetic_evil"
|
||||
|
||||
/mob/living/simple_animal/hostile/corrupthound/PunchTarget()
|
||||
if(istype(target_mob,/mob/living/simple_animal/mouse))
|
||||
/mob/living/simple_mob/hostile/corrupthound/PunchTarget()
|
||||
if(istype(target_mob,/mob/living/simple_mob/mouse))
|
||||
return EatTarget()
|
||||
else ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/corrupthound/proc/add_eyes()
|
||||
/mob/living/simple_mob/hostile/corrupthound/proc/add_eyes()
|
||||
if(!eye_layer)
|
||||
eye_layer = image(icon, "badboi-eyes")
|
||||
eye_layer.plane = PLANE_LIGHTING_ABOVE
|
||||
add_overlay(eye_layer)
|
||||
|
||||
/mob/living/simple_animal/hostile/corrupthound/proc/remove_eyes()
|
||||
/mob/living/simple_mob/hostile/corrupthound/proc/remove_eyes()
|
||||
cut_overlay(eye_layer)
|
||||
|
||||
/mob/living/simple_animal/hostile/corrupthound/New()
|
||||
/mob/living/simple_mob/hostile/corrupthound/New()
|
||||
add_eyes()
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/hostile/corrupthound/death(gibbed, deathmessage = "shudders and collapses!")
|
||||
/mob/living/simple_mob/hostile/corrupthound/death(gibbed, deathmessage = "shudders and collapses!")
|
||||
.=..()
|
||||
resting = 0
|
||||
icon_state = icon_dead
|
||||
|
||||
/mob/living/simple_animal/hostile/corrupthound/update_icon()
|
||||
/mob/living/simple_mob/hostile/corrupthound/update_icon()
|
||||
. = ..()
|
||||
remove_eyes()
|
||||
if(stat == CONSCIOUS && !resting)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/hostile/deathclaw
|
||||
/mob/living/simple_mob/hostile/deathclaw
|
||||
name = "deathclaw"
|
||||
desc = "Big! Big! The size of three men! Claws as long as my forearm! Ripped apart! Ripped apart!"
|
||||
icon = 'icons/mob/vore64x64.dmi'
|
||||
@@ -23,7 +23,7 @@
|
||||
pixel_y = 0
|
||||
|
||||
// Activate Noms!
|
||||
/mob/living/simple_animal/hostile/deathclaw
|
||||
/mob/living/simple_mob/hostile/deathclaw
|
||||
vore_active = 1
|
||||
vore_capacity = 2
|
||||
vore_max_size = RESIZE_HUGE
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/hostile/dino
|
||||
/mob/living/simple_mob/hostile/dino
|
||||
name = "voracious lizard"
|
||||
desc = "These gluttonous little bastards used to be regular lizards that were mutated by long-term exposure to phoron!"
|
||||
icon = 'icons/mob/vore.dmi'
|
||||
@@ -33,10 +33,10 @@
|
||||
max_n2 = 0
|
||||
|
||||
// Activate Noms!
|
||||
/mob/living/simple_animal/hostile/dino
|
||||
/mob/living/simple_mob/hostile/dino
|
||||
vore_active = 1
|
||||
swallowTime = 1 SECOND // Hungry little bastards.
|
||||
vore_icons = SA_ICON_LIVING
|
||||
|
||||
/mob/living/simple_animal/hostile/dino/virgo3b
|
||||
/mob/living/simple_mob/hostile/dino/virgo3b
|
||||
faction = "virgo3b"
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/hostile/dragon
|
||||
/mob/living/simple_mob/hostile/dragon
|
||||
name = "red dragon"
|
||||
desc = "Here to pillage stations and kidnap princesses, and there probably aren't any princesses."
|
||||
icon = 'icons/mob/vore64x64.dmi'
|
||||
@@ -30,22 +30,22 @@
|
||||
pixel_x = -16
|
||||
pixel_y = 0
|
||||
|
||||
/mob/living/simple_animal/hostile/dragon/Process_Spacemove(var/check_drift = 0)
|
||||
/mob/living/simple_mob/hostile/dragon/Process_Spacemove(var/check_drift = 0)
|
||||
return 1 //No drifting in space for space dragons!
|
||||
|
||||
/mob/living/simple_animal/hostile/dragon/FindTarget()
|
||||
/mob/living/simple_mob/hostile/dragon/FindTarget()
|
||||
. = ..()
|
||||
if(.)
|
||||
custom_emote(1,"snaps at [.]")
|
||||
|
||||
// Activate Noms!
|
||||
/mob/living/simple_animal/hostile/dragon
|
||||
/mob/living/simple_mob/hostile/dragon
|
||||
vore_active = 1
|
||||
vore_capacity = 2
|
||||
vore_pounce_chance = 0 // Beat them into crit before eating.
|
||||
vore_icons = SA_ICON_LIVING
|
||||
|
||||
/mob/living/simple_animal/hostile/dragon/virgo3b
|
||||
/mob/living/simple_mob/hostile/dragon/virgo3b
|
||||
maxHealth = 200
|
||||
health = 200
|
||||
faction = "virgo3b"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/fennec
|
||||
/mob/living/simple_mob/fennec
|
||||
name = "fennec"
|
||||
desc = "It's a dusty big-eared sandfox! Adorable!"
|
||||
tt_desc = "Vulpes zerda"
|
||||
@@ -29,7 +29,7 @@
|
||||
emote_see = list("earflicks","sniffs at the ground")
|
||||
|
||||
// Activate Noms!
|
||||
/mob/living/simple_animal/fennec
|
||||
/mob/living/simple_mob/fennec
|
||||
vore_active = 1
|
||||
vore_bump_chance = 10
|
||||
vore_bump_emote = "playfully lunges at"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/retaliate/fennix
|
||||
/mob/living/simple_mob/retaliate/fennix
|
||||
name = "Fennix"
|
||||
desc = "A feral fennix, Warm to the touch"
|
||||
tt_desc = "Incaendium Faeles Vulpes"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/hostile/frog
|
||||
/mob/living/simple_mob/hostile/frog
|
||||
name = "giant frog"
|
||||
desc = "You've heard of having a frog in your throat, now get ready for the reverse."
|
||||
tt_desc = "Anura gigantus"
|
||||
@@ -14,19 +14,19 @@
|
||||
melee_damage_upper = 25
|
||||
|
||||
// Pepe is love, not hate.
|
||||
/mob/living/simple_animal/hostile/frog/New()
|
||||
/mob/living/simple_mob/hostile/frog/New()
|
||||
if(rand(1,1000000) == 1)
|
||||
name = "rare Pepe"
|
||||
desc = "You found a rare Pepe. Screenshot for good luck."
|
||||
..()
|
||||
|
||||
// Activate Noms!
|
||||
/mob/living/simple_animal/hostile/frog
|
||||
/mob/living/simple_mob/hostile/frog
|
||||
vore_active = 1
|
||||
vore_pounce_chance = 50
|
||||
vore_icons = SA_ICON_LIVING
|
||||
|
||||
/mob/living/simple_animal/hostile/frog/space
|
||||
/mob/living/simple_mob/hostile/frog/space
|
||||
name = "space frog"
|
||||
|
||||
//Space frog can hold its breath or whatever
|
||||
|
||||
@@ -10,7 +10,7 @@ kills them.
|
||||
TODO: Make them light up and heat the air when exposed to oxygen.
|
||||
*/
|
||||
|
||||
/mob/living/simple_animal/retaliate/gaslamp
|
||||
/mob/living/simple_mob/retaliate/gaslamp
|
||||
name = "gaslamp"
|
||||
desc = "Some sort of floaty alien with a warm glow. This creature is endemic to Virgo-3B."
|
||||
tt_desc = "Semaeostomeae virginus"
|
||||
@@ -51,7 +51,7 @@ TODO: Make them light up and heat the air when exposed to oxygen.
|
||||
max_n2 = 0
|
||||
|
||||
// Activate Noms!
|
||||
/mob/living/simple_animal/retaliate/gaslamp
|
||||
/mob/living/simple_mob/retaliate/gaslamp
|
||||
vore_active = 1
|
||||
vore_capacity = 2
|
||||
vore_bump_chance = 90 //they're frickin' jellyfish anenome filterfeeders, get tentacled
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/retaliate/hippo
|
||||
/mob/living/simple_mob/retaliate/hippo
|
||||
name = "hippo"
|
||||
desc = "Mostly know for the spectacular hit of the live action movie Hungry Hungry Hippos."
|
||||
tt_desc = "Hippopotamus amphibius"
|
||||
@@ -50,12 +50,12 @@
|
||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
|
||||
|
||||
// Activate Noms!
|
||||
/mob/living/simple_animal/retaliate/hippo //I don't know why it's in a seperate line but everyone does it so i do it
|
||||
/mob/living/simple_mob/retaliate/hippo //I don't know why it's in a seperate line but everyone does it so i do it
|
||||
vore_active = 1
|
||||
vore_capacity = 1
|
||||
vore_bump_chance = 15
|
||||
vore_bump_emote = "lazily wraps its tentacles around"
|
||||
vore_standing_too = 1
|
||||
vore_standing_too = 1
|
||||
vore_ignores_undigestable = 0
|
||||
vore_default_mode = DM_HOLD
|
||||
vore_digest_chance = 10
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/horse
|
||||
/mob/living/simple_mob/horse
|
||||
name = "horse"
|
||||
desc = "Don't look it in the mouth."
|
||||
tt_desc = "Equus ferus caballus"
|
||||
@@ -32,6 +32,6 @@
|
||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
|
||||
|
||||
// Activate Noms!
|
||||
/mob/living/simple_animal/horse
|
||||
/mob/living/simple_mob/horse
|
||||
vore_active = 1
|
||||
vore_icons = SA_ICON_LIVING
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/hostile/jelly
|
||||
/mob/living/simple_mob/hostile/jelly
|
||||
name = "jelly blob"
|
||||
desc = "Some sort of undulating blob of slime!"
|
||||
icon = 'icons/mob/vore.dmi'
|
||||
@@ -18,7 +18,7 @@
|
||||
emote_see = list("undulates quietly")
|
||||
|
||||
// Activate Noms!
|
||||
/mob/living/simple_animal/hostile/jelly
|
||||
/mob/living/simple_mob/hostile/jelly
|
||||
vore_active = 1
|
||||
vore_pounce_chance = 0
|
||||
vore_icons = SA_ICON_LIVING
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
// Probably easier to troubleshoot when we ain't breaking the server by spawning a buttload of heavily extra feature coded snowflake mobs to the wilderness as mass cannonfodder.
|
||||
// Also ToDo: An actual "simple" mob for that purpose if necessary :v
|
||||
|
||||
/mob/living/simple_animal/otie //Spawn this one only if you're looking for a bad time. Not friendly.
|
||||
/mob/living/simple_mob/otie //Spawn this one only if you're looking for a bad time. Not friendly.
|
||||
name = "otie"
|
||||
desc = "The classic bioengineered longdog."
|
||||
tt_desc = "Otus robustus"
|
||||
@@ -55,13 +55,13 @@
|
||||
|
||||
// Activate Noms!
|
||||
|
||||
/mob/living/simple_animal/otie
|
||||
/mob/living/simple_mob/otie
|
||||
vore_active = 1
|
||||
vore_capacity = 1
|
||||
vore_pounce_chance = 20
|
||||
vore_icons = SA_ICON_LIVING | SA_ICON_REST
|
||||
|
||||
/mob/living/simple_animal/otie/feral //gets the pet2tame feature. starts out hostile tho so get gamblin'
|
||||
/mob/living/simple_mob/otie/feral //gets the pet2tame feature. starts out hostile tho so get gamblin'
|
||||
name = "mutated feral otie"
|
||||
desc = "The classic bioengineered longdog. No pets. Only bite. This one has mutated from too much time out on the surface of Virgo-3B."
|
||||
tt_desc = "Otus phoronis"
|
||||
@@ -85,7 +85,7 @@
|
||||
glowyeyes = TRUE
|
||||
eyetype = "photie"
|
||||
|
||||
/mob/living/simple_animal/otie/red
|
||||
/mob/living/simple_mob/otie/red
|
||||
name = "feral red otie"
|
||||
desc = "Seems this ominous looking longdog has been infused with wicked infernal forces."
|
||||
tt_desc = "Otus infernalis"
|
||||
@@ -109,19 +109,19 @@
|
||||
glowyeyes = TRUE
|
||||
eyetype = "hotie"
|
||||
|
||||
/mob/living/simple_animal/otie/red/friendly //gets the pet2tame feature and doesn't kill you right away
|
||||
/mob/living/simple_mob/otie/red/friendly //gets the pet2tame feature and doesn't kill you right away
|
||||
name = "red otie"
|
||||
desc = "Seems this ominous looking longdog has been infused with wicked infernal forces. This one seems rather peaceful though."
|
||||
faction = "neutral"
|
||||
tamed = 1
|
||||
|
||||
/mob/living/simple_animal/otie/friendly //gets the pet2tame feature and doesn't kill you right away
|
||||
/mob/living/simple_mob/otie/friendly //gets the pet2tame feature and doesn't kill you right away
|
||||
name = "otie"
|
||||
desc = "The classic bioengineered longdog. This one might even tolerate you!"
|
||||
faction = "neutral"
|
||||
tamed = 1
|
||||
|
||||
/mob/living/simple_animal/otie/cotie //same as above but has a little collar :v
|
||||
/mob/living/simple_mob/otie/cotie //same as above but has a little collar :v
|
||||
name = "tamed otie"
|
||||
desc = "The classic bioengineered longdog. This one has a nice little collar on its neck. However a proper domesticated otie is an oxymoron and the collar is likely just a decoration."
|
||||
icon_state = "cotie"
|
||||
@@ -130,7 +130,7 @@
|
||||
faction = "neutral"
|
||||
tamed = 1
|
||||
|
||||
/mob/living/simple_animal/otie/cotie/phoron //friendly phoron pup with collar
|
||||
/mob/living/simple_mob/otie/cotie/phoron //friendly phoron pup with collar
|
||||
name = "mutated otie"
|
||||
desc = "Looks like someone did manage to domesticate one of those wild phoron mutants. What a badass."
|
||||
tt_desc = "Otus phoronis"
|
||||
@@ -149,7 +149,7 @@
|
||||
glowyeyes = TRUE
|
||||
eyetype = "photie"
|
||||
|
||||
/mob/living/simple_animal/otie/security //tame by default unless you're a marked crimester. can be befriended to follow with pets tho.
|
||||
/mob/living/simple_mob/otie/security //tame by default unless you're a marked crimester. can be befriended to follow with pets tho.
|
||||
name = "guard otie"
|
||||
desc = "The VARMAcorp bioengineering division flagship product on trained optimal snowflake guard dogs."
|
||||
icon_state = "sotie"
|
||||
@@ -168,7 +168,7 @@
|
||||
var/check_records = 0 // If true, arrests people without a record.
|
||||
var/check_arrest = 1 // If true, arrests people who are set to arrest.
|
||||
|
||||
/mob/living/simple_animal/otie/security/phoron
|
||||
/mob/living/simple_mob/otie/security/phoron
|
||||
name = "mutated guard otie"
|
||||
desc = "An extra rare phoron resistant version of the VARMAcorp trained snowflake guard dogs."
|
||||
tt_desc = "Otus phoronis"
|
||||
@@ -189,15 +189,15 @@
|
||||
glowyeyes = TRUE
|
||||
eyetype = "sotie"
|
||||
|
||||
/mob/living/simple_animal/otie/PunchTarget()
|
||||
if(istype(target_mob,/mob/living/simple_animal/mouse))
|
||||
/mob/living/simple_mob/otie/PunchTarget()
|
||||
if(istype(target_mob,/mob/living/simple_mob/mouse))
|
||||
return EatTarget()
|
||||
else ..()
|
||||
|
||||
/mob/living/simple_animal/otie/Found(var/atom/found_atom)
|
||||
/mob/living/simple_mob/otie/Found(var/atom/found_atom)
|
||||
if(!SA_attackable(found_atom))
|
||||
return null
|
||||
if(istype(found_atom,/mob/living/simple_animal/mouse))
|
||||
if(istype(found_atom,/mob/living/simple_mob/mouse))
|
||||
return found_atom
|
||||
else if(ismob(found_atom))
|
||||
var/mob/found_mob = found_atom
|
||||
@@ -216,20 +216,20 @@
|
||||
else
|
||||
return null
|
||||
|
||||
/mob/living/simple_animal/otie/security/Found(var/atom/found_atom)
|
||||
/mob/living/simple_mob/otie/security/Found(var/atom/found_atom)
|
||||
if(check_threat(found_atom) >= 4)
|
||||
if(resting)
|
||||
lay_down()
|
||||
return found_atom
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/otie/attackby(var/obj/item/O, var/mob/user) // Trade donuts for bellybrig victims.
|
||||
/mob/living/simple_mob/otie/attackby(var/obj/item/O, var/mob/user) // Trade donuts for bellybrig victims.
|
||||
if(istype(O, /obj/item/weapon/reagent_containers/food))
|
||||
qdel(O)
|
||||
playsound(src.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
|
||||
if(ai_inactive)//No autobarf on player control.
|
||||
return
|
||||
if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/donut) && istype(src, /mob/living/simple_animal/otie/security))
|
||||
if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/donut) && istype(src, /mob/living/simple_mob/otie/security))
|
||||
to_chat(user,"<span class='notice'>The guard pup accepts your offer for their catch.</span>")
|
||||
release_vore_contents()
|
||||
else if(prob(2)) //Small chance to get prey out from non-sec oties.
|
||||
@@ -238,21 +238,21 @@
|
||||
return
|
||||
. = ..()
|
||||
|
||||
/mob/living/simple_animal/otie/security/feed_grabbed_to_self(var/mob/living/user, var/mob/living/prey) // Make the gut start out safe for bellybrigging.
|
||||
/mob/living/simple_mob/otie/security/feed_grabbed_to_self(var/mob/living/user, var/mob/living/prey) // Make the gut start out safe for bellybrigging.
|
||||
if(ishuman(prey))
|
||||
vore_selected.digest_mode = DM_HOLD
|
||||
if(check_threat(prey) >= 4)
|
||||
global_announcer.autosay("[src] has detained suspect <b>[target_name(prey)]</b> in <b>[get_area(src)]</b>.", "SmartCollar oversight", "Security")
|
||||
if(istype(prey,/mob/living/simple_animal/mouse))
|
||||
if(istype(prey,/mob/living/simple_mob/mouse))
|
||||
vore_selected.digest_mode = DM_DIGEST
|
||||
. = ..()
|
||||
|
||||
/mob/living/simple_animal/otie/security/proc/check_threat(var/mob/living/M)
|
||||
/mob/living/simple_mob/otie/security/proc/check_threat(var/mob/living/M)
|
||||
if(!M || !ishuman(M) || M.stat == DEAD || src == M)
|
||||
return 0
|
||||
return M.assess_perp(0, 0, 0, check_records, check_arrest)
|
||||
|
||||
/mob/living/simple_animal/otie/security/set_target(var/mob/M)
|
||||
/mob/living/simple_mob/otie/security/set_target(var/mob/M)
|
||||
ai_log("SetTarget([M])",2)
|
||||
if(!M || (world.time - last_target_time < 5 SECONDS) && target_mob)
|
||||
ai_log("SetTarget() can't set it again so soon",3)
|
||||
@@ -280,7 +280,7 @@
|
||||
return 0
|
||||
|
||||
|
||||
/mob/living/simple_animal/otie/security/proc/target_name(mob/living/T)
|
||||
/mob/living/simple_mob/otie/security/proc/target_name(mob/living/T)
|
||||
if(ishuman(T))
|
||||
var/mob/living/carbon/human/H = T
|
||||
return H.get_id_name("unidentified person")
|
||||
@@ -288,7 +288,7 @@
|
||||
|
||||
//Basic friend AI
|
||||
|
||||
/mob/living/simple_animal/otie/Life()
|
||||
/mob/living/simple_mob/otie/Life()
|
||||
. = ..()
|
||||
if(!. || ai_inactive) return
|
||||
|
||||
@@ -328,7 +328,7 @@
|
||||
|
||||
//Pet 4 friendly
|
||||
|
||||
/mob/living/simple_animal/otie/attack_hand(mob/living/carbon/human/M as mob)
|
||||
/mob/living/simple_mob/otie/attack_hand(mob/living/carbon/human/M as mob)
|
||||
|
||||
switch(M.a_intent)
|
||||
if(I_HELP)
|
||||
@@ -359,27 +359,27 @@
|
||||
else
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/otie/proc/add_eyes()
|
||||
/mob/living/simple_mob/otie/proc/add_eyes()
|
||||
if(!eye_layer)
|
||||
eye_layer = image(icon, "[eyetype]-eyes")
|
||||
eye_layer.plane = PLANE_LIGHTING_ABOVE
|
||||
add_overlay(eye_layer)
|
||||
|
||||
/mob/living/simple_animal/otie/proc/remove_eyes()
|
||||
/mob/living/simple_mob/otie/proc/remove_eyes()
|
||||
cut_overlay(eye_layer)
|
||||
|
||||
/mob/living/simple_animal/otie/New()
|
||||
/mob/living/simple_mob/otie/New()
|
||||
if(glowyeyes)
|
||||
add_eyes()
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/otie/update_icon()
|
||||
/mob/living/simple_mob/otie/update_icon()
|
||||
. = ..()
|
||||
remove_eyes()
|
||||
if(glowyeyes && stat == CONSCIOUS && !resting)
|
||||
add_eyes()
|
||||
|
||||
/mob/living/simple_animal/otie/death(gibbed, deathmessage = "dies!")
|
||||
/mob/living/simple_mob/otie/death(gibbed, deathmessage = "dies!")
|
||||
.=..()
|
||||
resting = 0
|
||||
icon_state = icon_dead
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/hostile/panther
|
||||
/mob/living/simple_mob/hostile/panther
|
||||
name = "panther"
|
||||
desc = "Runtime's larger, less cuddly cousin."
|
||||
tt_desc = "Panthera pardus"
|
||||
@@ -28,7 +28,7 @@
|
||||
pixel_y = 0
|
||||
|
||||
// Activate Noms!
|
||||
/mob/living/simple_animal/hostile/panther
|
||||
/mob/living/simple_mob/hostile/panther
|
||||
vore_active = 1
|
||||
vore_capacity = 2
|
||||
vore_pounce_chance = 10
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/hostile/rat
|
||||
/mob/living/simple_mob/hostile/rat
|
||||
name = "giant rat"
|
||||
desc = "In what passes for a hierarchy among verminous rodents, this one is king."
|
||||
tt_desc = "Mus muscular"
|
||||
@@ -43,14 +43,14 @@
|
||||
|
||||
var/life_since_foodscan = 0
|
||||
|
||||
/mob/living/simple_animal/hostile/rat/passive
|
||||
/mob/living/simple_mob/hostile/rat/passive
|
||||
name = "curious giant rat"
|
||||
desc = "In what passes for a hierarchy among verminous rodents, this one is king. It seems to be more interested on scavenging."
|
||||
follow_dist = 1
|
||||
var/mob/living/carbon/human/food
|
||||
var/hunger = 0
|
||||
|
||||
/mob/living/simple_animal/hostile/rat/passive/Life()
|
||||
/mob/living/simple_mob/hostile/rat/passive/Life()
|
||||
. = ..()
|
||||
if(!. || ai_inactive)
|
||||
return
|
||||
@@ -121,7 +121,7 @@
|
||||
hunger = 0
|
||||
food = null
|
||||
|
||||
/mob/living/simple_animal/hostile/rat/passive/attackby(var/obj/item/O, var/mob/user) // Feed the rat your food to satisfy it.
|
||||
/mob/living/simple_mob/hostile/rat/passive/attackby(var/obj/item/O, var/mob/user) // Feed the rat your food to satisfy it.
|
||||
if(istype(O, /obj/item/weapon/reagent_containers/food/snacks))
|
||||
qdel(O)
|
||||
playsound(src.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
|
||||
@@ -130,7 +130,7 @@
|
||||
return
|
||||
. = ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/rat/passive/Found(var/atom/found_atom)
|
||||
/mob/living/simple_mob/hostile/rat/passive/Found(var/atom/found_atom)
|
||||
if(!SA_attackable(found_atom))
|
||||
return null
|
||||
else if(ishuman(found_atom) && will_eat(found_atom))
|
||||
@@ -145,7 +145,7 @@
|
||||
break
|
||||
return null
|
||||
|
||||
/mob/living/simple_animal/hostile/rat/passive/FindTarget()
|
||||
/mob/living/simple_mob/hostile/rat/passive/FindTarget()
|
||||
var/atom/T = null
|
||||
for(var/atom/A in ListTargets(view_range))
|
||||
if(A == src)
|
||||
@@ -156,6 +156,6 @@
|
||||
break
|
||||
return T
|
||||
|
||||
/mob/living/simple_animal/hostile/rat/death()
|
||||
/mob/living/simple_mob/hostile/rat/death()
|
||||
playsound(src, 'sound/effects/mouse_squeak_loud.ogg', 50, 1)
|
||||
..()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/redpanda
|
||||
/mob/living/simple_mob/redpanda
|
||||
name = "red panda"
|
||||
desc = "It's a wah! Beware of doom pounce!"
|
||||
tt_desc = "Ailurus fulgens"
|
||||
@@ -29,7 +29,7 @@
|
||||
emote_see = list("trundles around","rears up onto their hind legs and pounces a bug")
|
||||
|
||||
// Activate Noms!
|
||||
/mob/living/simple_animal/redpanda
|
||||
/mob/living/simple_mob/redpanda
|
||||
vore_active = 1
|
||||
vore_bump_chance = 10
|
||||
vore_bump_emote = "playfully lunges at"
|
||||
@@ -37,7 +37,7 @@
|
||||
vore_default_mode = DM_HOLD // above will only matter if someone toggles it anyway
|
||||
vore_icons = SA_ICON_LIVING
|
||||
|
||||
/mob/living/simple_animal/redpanda/fae
|
||||
/mob/living/simple_mob/redpanda/fae
|
||||
name = "dark wah"
|
||||
desc = "Ominous, but still cute!"
|
||||
tt_desc = "Ailurus brattus"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
icon = 'icons/mob/screen_spells.dmi'
|
||||
var/ability_name = "FIX ME"
|
||||
var/cost = 50
|
||||
var/mob/living/simple_animal/shadekin/my_kin
|
||||
var/mob/living/simple_mob/shadekin/my_kin
|
||||
var/shift_mode = NOT_WHILE_SHIFTED
|
||||
var/ab_sound
|
||||
|
||||
@@ -130,7 +130,7 @@
|
||||
on_created_text = "<span class='notice'>You drag part of The Dark into realspace, enveloping yourself.</span>"
|
||||
on_expired_text = "<span class='warning'>You lose your grasp on The Dark and realspace reasserts itself.</span>"
|
||||
stacks = MODIFIER_STACK_EXTEND
|
||||
var/mob/living/simple_animal/shadekin/my_kin
|
||||
var/mob/living/simple_mob/shadekin/my_kin
|
||||
|
||||
/datum/modifier/shadekin/create_shade/tick()
|
||||
if(my_kin.ability_flags & AB_PHASE_SHIFTED)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// Phase shifting procs (and related procs)
|
||||
/mob/living/simple_animal/shadekin/proc/phase_shift()
|
||||
/mob/living/simple_mob/shadekin/proc/phase_shift()
|
||||
var/turf/T = get_turf(src)
|
||||
if(!T.CanPass(null,T) || loc != T)
|
||||
to_chat(src,"<span class='warning'>You can't use that here!</span>")
|
||||
@@ -91,19 +91,19 @@
|
||||
density = FALSE
|
||||
force_max_speed = TRUE
|
||||
|
||||
/mob/living/simple_animal/shadekin/UnarmedAttack()
|
||||
/mob/living/simple_mob/shadekin/UnarmedAttack()
|
||||
if(ability_flags & AB_PHASE_SHIFTED)
|
||||
return FALSE //Nope.
|
||||
|
||||
. = ..()
|
||||
|
||||
/mob/living/simple_animal/shadekin/can_fall()
|
||||
/mob/living/simple_mob/shadekin/can_fall()
|
||||
if(ability_flags & AB_PHASE_SHIFTED)
|
||||
return FALSE //Nope!
|
||||
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/shadekin/zMove(direction)
|
||||
/mob/living/simple_mob/shadekin/zMove(direction)
|
||||
if(ability_flags & AB_PHASE_SHIFTED)
|
||||
var/turf/destination = (direction == UP) ? GetAbove(src) : GetBelow(src)
|
||||
if(destination)
|
||||
@@ -113,7 +113,7 @@
|
||||
return ..()
|
||||
|
||||
// Healing others
|
||||
/mob/living/simple_animal/shadekin/proc/mend_other()
|
||||
/mob/living/simple_mob/shadekin/proc/mend_other()
|
||||
//I hate to crunch a view() but I only want ones I can see
|
||||
var/list/viewed = oview(1)
|
||||
var/list/targets = list()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/shadekin //Spawning the prototype spawns a random one, see initialize()
|
||||
/mob/living/simple_mob/shadekin //Spawning the prototype spawns a random one, see initialize()
|
||||
name = "shadekin"
|
||||
desc = "Some sort of fluffer. Big ears, long tail."
|
||||
icon = 'icons/mob/vore_shadekin.dmi'
|
||||
@@ -85,16 +85,16 @@
|
||||
|
||||
var/list/shadekin_abilities
|
||||
|
||||
/mob/living/simple_animal/shadekin/initialize()
|
||||
/mob/living/simple_mob/shadekin/initialize()
|
||||
//You spawned the prototype, and want a totally random one.
|
||||
if(type == /mob/living/simple_animal/shadekin)
|
||||
if(type == /mob/living/simple_mob/shadekin)
|
||||
|
||||
//I'm told by VerySoft these are the liklihood values
|
||||
var/list/sk_types = list(
|
||||
/mob/living/simple_animal/shadekin/red = 20, //Actively seek people out to nom, so fairly common to see (relatively speaking),
|
||||
/mob/living/simple_animal/shadekin/blue = 15, //Explorers that like to interact with people, so still fairly common,
|
||||
/mob/living/simple_animal/shadekin/purple = 15, //Also explorers that may or may not homf people,
|
||||
/mob/living/simple_animal/shadekin/yellow = 1 //Very rare, usually never leaves their home
|
||||
/mob/living/simple_mob/shadekin/red = 20, //Actively seek people out to nom, so fairly common to see (relatively speaking),
|
||||
/mob/living/simple_mob/shadekin/blue = 15, //Explorers that like to interact with people, so still fairly common,
|
||||
/mob/living/simple_mob/shadekin/purple = 15, //Also explorers that may or may not homf people,
|
||||
/mob/living/simple_mob/shadekin/yellow = 1 //Very rare, usually never leaves their home
|
||||
)
|
||||
var/new_type = pickweight(sk_types)
|
||||
|
||||
@@ -138,11 +138,11 @@
|
||||
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/shadekin/Destroy()
|
||||
/mob/living/simple_mob/shadekin/Destroy()
|
||||
QDEL_NULL_LIST(shadekin_abilities)
|
||||
. = ..()
|
||||
|
||||
/mob/living/simple_animal/shadekin/init_vore()
|
||||
/mob/living/simple_mob/shadekin/init_vore()
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
|
||||
@@ -197,7 +197,7 @@
|
||||
"The chaos of being digested fades as you're snuffed out by a harsh clench! You're steadily broken down into a thick paste, processed and absorbed by the predator!"
|
||||
)
|
||||
|
||||
/mob/living/simple_animal/shadekin/Life()
|
||||
/mob/living/simple_mob/shadekin/Life()
|
||||
. = ..()
|
||||
if(ability_flags & AB_PHASE_SHIFTED)
|
||||
density = FALSE
|
||||
@@ -207,7 +207,7 @@
|
||||
nutrition = max(0, nutrition-5)
|
||||
energy = min(100,energy+1)
|
||||
|
||||
/mob/living/simple_animal/shadekin/update_icon()
|
||||
/mob/living/simple_mob/shadekin/update_icon()
|
||||
. = ..()
|
||||
|
||||
cut_overlay(tailimage)
|
||||
@@ -217,18 +217,18 @@
|
||||
add_overlay(tailimage)
|
||||
add_overlay(eye_icon_state)
|
||||
|
||||
/mob/living/simple_animal/shadekin/Stat()
|
||||
/mob/living/simple_mob/shadekin/Stat()
|
||||
. = ..()
|
||||
if(statpanel("Shadekin"))
|
||||
abilities_stat()
|
||||
|
||||
/mob/living/simple_animal/shadekin/proc/abilities_stat()
|
||||
/mob/living/simple_mob/shadekin/proc/abilities_stat()
|
||||
for(var/A in shadekin_abilities)
|
||||
var/obj/effect/shadekin_ability/ability = A
|
||||
stat("[ability.ability_name]",ability.atom_button_text())
|
||||
|
||||
//They phase back to the dark when killed
|
||||
/mob/living/simple_animal/shadekin/death(gibbed, deathmessage = "phases to somewhere far away!")
|
||||
/mob/living/simple_mob/shadekin/death(gibbed, deathmessage = "phases to somewhere far away!")
|
||||
overlays = list()
|
||||
icon_state = ""
|
||||
flick("tp_out",src)
|
||||
@@ -238,7 +238,7 @@
|
||||
. = ..(FALSE, deathmessage)
|
||||
|
||||
//Blue-eyes want to nom people to heal them
|
||||
/mob/living/simple_animal/shadekin/Found(var/atom/A)
|
||||
/mob/living/simple_mob/shadekin/Found(var/atom/A)
|
||||
if(specific_targets && isliving(A)) //Healing!
|
||||
var/mob/living/L = A
|
||||
var/health_percent = (L.health/L.maxHealth)*100
|
||||
@@ -247,11 +247,11 @@
|
||||
. = ..()
|
||||
|
||||
//They reach nutritional equilibrium (important for blue-eyes healbelly)
|
||||
/mob/living/simple_animal/shadekin/Life()
|
||||
/mob/living/simple_mob/shadekin/Life()
|
||||
if((. = ..()))
|
||||
handle_shade()
|
||||
|
||||
/mob/living/simple_animal/shadekin/proc/handle_shade()
|
||||
/mob/living/simple_mob/shadekin/proc/handle_shade()
|
||||
//Shifted kin don't gain/lose energy (and save time if we're at the cap)
|
||||
var/darkness = 1
|
||||
|
||||
@@ -330,7 +330,7 @@
|
||||
energyhud.icon_state = "energy4"
|
||||
|
||||
//Friendly ones wander towards people, maybe shy-ly if they are set to shy
|
||||
/mob/living/simple_animal/shadekin/handle_wander_movement()
|
||||
/mob/living/simple_mob/shadekin/handle_wander_movement()
|
||||
if(isturf(src.loc) && !resting && !buckled && canmove)
|
||||
lifes_since_move++
|
||||
if(lifes_since_move >= turns_per_move)
|
||||
@@ -384,10 +384,10 @@
|
||||
Move(T)
|
||||
lifes_since_move = 0
|
||||
|
||||
/mob/living/simple_animal/shadekin/speech_bubble_appearance()
|
||||
/mob/living/simple_mob/shadekin/speech_bubble_appearance()
|
||||
return "ghost"
|
||||
|
||||
/mob/living/simple_animal/shadekin/DoPunch(var/atom/A)
|
||||
/mob/living/simple_mob/shadekin/DoPunch(var/atom/A)
|
||||
. = ..(A)
|
||||
if(isliving(A)) //We punched something!
|
||||
var/mob/living/L = A
|
||||
@@ -410,7 +410,7 @@
|
||||
energy += gains
|
||||
|
||||
//Special hud elements for darkness and energy gains
|
||||
/mob/living/simple_animal/shadekin/extra_huds(var/datum/hud/hud,var/icon/ui_style,var/list/hud_elements)
|
||||
/mob/living/simple_mob/shadekin/extra_huds(var/datum/hud/hud,var/icon/ui_style,var/list/hud_elements)
|
||||
//Darkness hud
|
||||
darkhud = new /obj/screen()
|
||||
darkhud.icon = ui_style
|
||||
@@ -430,7 +430,7 @@
|
||||
hud_elements |= energyhud
|
||||
|
||||
// When someone clicks us with an empty hand
|
||||
/mob/living/simple_animal/shadekin/attack_hand(mob/living/carbon/human/M as mob)
|
||||
/mob/living/simple_mob/shadekin/attack_hand(mob/living/carbon/human/M as mob)
|
||||
. = ..()
|
||||
if(M.a_intent == I_HELP)
|
||||
shy_approach = FALSE //ACCLIMATED
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////
|
||||
/mob/living/simple_animal/shadekin/red
|
||||
/mob/living/simple_mob/shadekin/red
|
||||
name = "red-eyed shadekin"
|
||||
eye_state = RED_EYES
|
||||
hostile = TRUE
|
||||
@@ -28,15 +28,15 @@
|
||||
a brawl, but you barely generate any of your own energy. You can stand in a dark spot to gather scraps \
|
||||
of energy in a pinch, but otherwise need to take it, by force if necessary."
|
||||
|
||||
/mob/living/simple_animal/shadekin/red/white
|
||||
/mob/living/simple_mob/shadekin/red/white
|
||||
icon_state = "white"
|
||||
/mob/living/simple_animal/shadekin/red/dark
|
||||
/mob/living/simple_mob/shadekin/red/dark
|
||||
icon_state = "dark"
|
||||
/mob/living/simple_animal/shadekin/red/brown
|
||||
/mob/living/simple_mob/shadekin/red/brown
|
||||
icon_state = "brown"
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
/mob/living/simple_animal/shadekin/blue
|
||||
/mob/living/simple_mob/shadekin/blue
|
||||
name = "blue-eyed shadekin"
|
||||
eye_state = BLUE_EYES
|
||||
health = 100
|
||||
@@ -75,15 +75,15 @@
|
||||
without doing so, albeit slowly. Dark and light are irrelevant to you, they are just different places to explore and \
|
||||
discover new things and new people."
|
||||
|
||||
/mob/living/simple_animal/shadekin/blue/white
|
||||
/mob/living/simple_mob/shadekin/blue/white
|
||||
icon_state = "white"
|
||||
/mob/living/simple_animal/shadekin/blue/dark
|
||||
/mob/living/simple_mob/shadekin/blue/dark
|
||||
icon_state = "dark"
|
||||
/mob/living/simple_animal/shadekin/blue/brown
|
||||
/mob/living/simple_mob/shadekin/blue/brown
|
||||
icon_state = "brown"
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
/mob/living/simple_animal/shadekin/purple
|
||||
/mob/living/simple_mob/shadekin/purple
|
||||
name = "purple-eyed shadekin"
|
||||
eye_state = PURPLE_EYES
|
||||
health = 150
|
||||
@@ -117,15 +117,15 @@
|
||||
areas is taxing on your energy. You can harvest energy from others in a fight, but since you don't need to, you may \
|
||||
just choose to simply not fight."
|
||||
|
||||
/mob/living/simple_animal/shadekin/purple/white
|
||||
/mob/living/simple_mob/shadekin/purple/white
|
||||
icon_state = "white"
|
||||
/mob/living/simple_animal/shadekin/purple/dark
|
||||
/mob/living/simple_mob/shadekin/purple/dark
|
||||
icon_state = "dark"
|
||||
/mob/living/simple_animal/shadekin/purple/brown
|
||||
/mob/living/simple_mob/shadekin/purple/brown
|
||||
icon_state = "brown"
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
/mob/living/simple_animal/shadekin/yellow
|
||||
/mob/living/simple_mob/shadekin/yellow
|
||||
name = "yellow-eyed shadekin"
|
||||
eye_state = YELLOW_EYES
|
||||
health = 100
|
||||
@@ -157,15 +157,15 @@
|
||||
area is very taxing on you, but you gain energy extremely fast in any very dark area. You're weaker than other \
|
||||
shadekin, but your fast energy generation in the dark allows you to phase shift more often."
|
||||
|
||||
/mob/living/simple_animal/shadekin/yellow/white
|
||||
/mob/living/simple_mob/shadekin/yellow/white
|
||||
icon_state = "white"
|
||||
/mob/living/simple_animal/shadekin/yellow/dark
|
||||
/mob/living/simple_mob/shadekin/yellow/dark
|
||||
icon_state = "dark"
|
||||
/mob/living/simple_animal/shadekin/yellow/brown
|
||||
/mob/living/simple_mob/shadekin/yellow/brown
|
||||
icon_state = "brown"
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
/mob/living/simple_animal/shadekin/green
|
||||
/mob/living/simple_mob/shadekin/green
|
||||
name = "green-eyed shadekin"
|
||||
eye_state = GREEN_EYES
|
||||
health = 125
|
||||
@@ -197,15 +197,15 @@
|
||||
have more experience than your yellow-eyed cousins. You gain energy decently fast in any very dark area. You're weaker than other \
|
||||
shadekin, but your slight energy generation constnatly, and especially in the dark allows for a good mix of uses."
|
||||
|
||||
/mob/living/simple_animal/shadekin/green/white
|
||||
/mob/living/simple_mob/shadekin/green/white
|
||||
icon_state = "white"
|
||||
/mob/living/simple_animal/shadekin/green/dark
|
||||
/mob/living/simple_mob/shadekin/green/dark
|
||||
icon_state = "dark"
|
||||
/mob/living/simple_animal/shadekin/green/brown
|
||||
/mob/living/simple_mob/shadekin/green/brown
|
||||
icon_state = "brown"
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
/mob/living/simple_animal/shadekin/orange
|
||||
/mob/living/simple_mob/shadekin/orange
|
||||
name = "orange-eyed shadekin"
|
||||
eye_state = ORANGE_EYES
|
||||
health = 175
|
||||
@@ -234,16 +234,16 @@
|
||||
You're stronger than most shadekin, faster, and more capable in a brawl, but you don't generate much of your own energy. \
|
||||
You can stand in a dark spot to gather some energy, but otherwise need to take it, by force if necessary."
|
||||
|
||||
/mob/living/simple_animal/shadekin/orange/white
|
||||
/mob/living/simple_mob/shadekin/orange/white
|
||||
icon_state = "white"
|
||||
/mob/living/simple_animal/shadekin/orange/dark
|
||||
/mob/living/simple_mob/shadekin/orange/dark
|
||||
icon_state = "dark"
|
||||
/mob/living/simple_animal/shadekin/orange/brown
|
||||
/mob/living/simple_mob/shadekin/orange/brown
|
||||
icon_state = "brown"
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
//Fluffy specific fluffer
|
||||
/mob/living/simple_animal/shadekin/blue/rivyr
|
||||
/mob/living/simple_mob/shadekin/blue/rivyr
|
||||
name = "Rivyr"
|
||||
desc = "She appears to be a fluffer of some sort. Deep blue eyes and curious attitude."
|
||||
icon_state = "rivyr"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/hostile/giant_snake
|
||||
/mob/living/simple_mob/hostile/giant_snake
|
||||
name = "giant snake"
|
||||
desc = "Snakes. Why did it have to be snakes?"
|
||||
icon = 'icons/mob/vore64x64.dmi'
|
||||
@@ -21,7 +21,7 @@
|
||||
pixel_y = -16
|
||||
|
||||
// Activate Noms!
|
||||
/mob/living/simple_animal/hostile/giant_snake
|
||||
/mob/living/simple_mob/hostile/giant_snake
|
||||
vore_active = 1
|
||||
vore_pounce_chance = 25
|
||||
vore_icons = SA_ICON_LIVING
|
||||
|
||||
@@ -10,7 +10,7 @@ List of things solar grubs should be able to do:
|
||||
|
||||
#define SINK_POWER 1
|
||||
|
||||
/mob/living/simple_animal/retaliate/solargrub
|
||||
/mob/living/simple_mob/retaliate/solargrub
|
||||
name = "juvenile solargrub"
|
||||
desc = "A young sparkling solargrub"
|
||||
icon = 'icons/mob/vore.dmi' //all of these are placeholders
|
||||
@@ -54,13 +54,13 @@ List of things solar grubs should be able to do:
|
||||
var/obj/structure/cable/attached // the attached cable
|
||||
var/emp_chance = 20 // Beware synths
|
||||
|
||||
/mob/living/simple_animal/retaliate/solargrub/PunchTarget()
|
||||
/mob/living/simple_mob/retaliate/solargrub/PunchTarget()
|
||||
if(target_mob&& prob(emp_chance))
|
||||
target_mob.emp_act(4) //The weakest strength of EMP
|
||||
visible_message("<span class='danger'>The grub releases a powerful shock!</span>")
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/retaliate/solargrub/Life()
|
||||
/mob/living/simple_mob/retaliate/solargrub/Life()
|
||||
. = ..()
|
||||
if(!. || ai_inactive) return
|
||||
|
||||
@@ -90,7 +90,7 @@ List of things solar grubs should be able to do:
|
||||
anchored = 0
|
||||
PN = null
|
||||
|
||||
/mob/living/simple_animal/retaliate/solargrub //active noms
|
||||
/mob/living/simple_mob/retaliate/solargrub //active noms
|
||||
vore_bump_chance = 50
|
||||
vore_bump_emote = "applies minimal effort to try and slurp up"
|
||||
vore_active = 1
|
||||
@@ -98,7 +98,7 @@ List of things solar grubs should be able to do:
|
||||
vore_pounce_chance = 0 //grubs only eat incapacitated targets
|
||||
vore_default_mode = DM_DIGEST
|
||||
|
||||
/mob/living/simple_animal/retaliate/solargrub/PunchTarget()
|
||||
/mob/living/simple_mob/retaliate/solargrub/PunchTarget()
|
||||
. = ..()
|
||||
if(isliving(.))
|
||||
var/mob/living/L = .
|
||||
@@ -107,12 +107,12 @@ List of things solar grubs should be able to do:
|
||||
L << "<span class='warning'>You feel a shock rushing through your veins.</span>"
|
||||
L.reagents.add_reagent(poison_type, poison_per_bite)
|
||||
|
||||
/mob/living/simple_animal/retaliate/solargrub/death()
|
||||
/mob/living/simple_mob/retaliate/solargrub/death()
|
||||
src.anchored = 0
|
||||
set_light(0)
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/retaliate/solargrub/handle_light()
|
||||
/mob/living/simple_mob/retaliate/solargrub/handle_light()
|
||||
. = ..()
|
||||
if(. == 0 && !is_dead())
|
||||
set_light(2.5, 1, COLOR_YELLOW)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
var/global/list/grub_machine_overlays = list()
|
||||
|
||||
/mob/living/simple_animal/solargrub_larva
|
||||
/mob/living/simple_mob/solargrub_larva
|
||||
name = "solargrub larva"
|
||||
desc = "A tiny wormy thing that can grow to massive sizes under the right conditions."
|
||||
icon = 'icons/mob/vore.dmi'
|
||||
@@ -10,7 +10,7 @@ var/global/list/grub_machine_overlays = list()
|
||||
|
||||
health = 5
|
||||
maxHealth = 5
|
||||
|
||||
|
||||
meat_amount = 2
|
||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/grubmeat
|
||||
|
||||
@@ -43,7 +43,7 @@ var/global/list/grub_machine_overlays = list()
|
||||
var/power_drained = 0
|
||||
var/forced_out = 0
|
||||
|
||||
/mob/living/simple_animal/solargrub_larva/New()
|
||||
/mob/living/simple_mob/solargrub_larva/New()
|
||||
..()
|
||||
powermachine = new(src)
|
||||
sparks = new(src)
|
||||
@@ -51,19 +51,19 @@ var/global/list/grub_machine_overlays = list()
|
||||
sparks.attach(src)
|
||||
verbs += /mob/living/proc/ventcrawl
|
||||
|
||||
/mob/living/simple_animal/solargrub_larva/death()
|
||||
/mob/living/simple_mob/solargrub_larva/death()
|
||||
powermachine.draining = 0
|
||||
set_light(0)
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/solargrub_larva/Destroy()
|
||||
/mob/living/simple_mob/solargrub_larva/Destroy()
|
||||
QDEL_NULL(powermachine)
|
||||
QDEL_NULL(sparks)
|
||||
QDEL_NULL(machine_effect)
|
||||
target_vent = null
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/solargrub_larva/Life()
|
||||
/mob/living/simple_mob/solargrub_larva/Life()
|
||||
. = ..()
|
||||
|
||||
if(machine_effect && !istype(loc, /obj/machinery))
|
||||
@@ -129,7 +129,7 @@ var/global/list/grub_machine_overlays = list()
|
||||
WanderTowards(get_turf(picked))
|
||||
return
|
||||
|
||||
/mob/living/simple_animal/solargrub_larva/proc/enter_machine(var/obj/machinery/M)
|
||||
/mob/living/simple_mob/solargrub_larva/proc/enter_machine(var/obj/machinery/M)
|
||||
if(!istype(M))
|
||||
return
|
||||
forceMove(M)
|
||||
@@ -141,13 +141,13 @@ var/global/list/grub_machine_overlays = list()
|
||||
for(var/mob/L in player_list) //because nearly every machine updates its icon by removing all overlays first
|
||||
L << machine_effect
|
||||
|
||||
/mob/living/simple_animal/solargrub_larva/proc/generate_machine_effect(var/obj/machinery/M)
|
||||
/mob/living/simple_mob/solargrub_larva/proc/generate_machine_effect(var/obj/machinery/M)
|
||||
var/icon/I = new /icon(M.icon, M.icon_state)
|
||||
I.Blend(new /icon('icons/effects/blood.dmi', rgb(255,255,255)),ICON_ADD)
|
||||
I.Blend(new /icon('icons/effects/alert.dmi', "_red"),ICON_MULTIPLY)
|
||||
grub_machine_overlays[M.type] = I
|
||||
|
||||
/mob/living/simple_animal/solargrub_larva/proc/eject_from_machine(var/obj/machinery/M)
|
||||
/mob/living/simple_mob/solargrub_larva/proc/eject_from_machine(var/obj/machinery/M)
|
||||
if(!M)
|
||||
if(istype(loc, /obj/machinery))
|
||||
M = loc
|
||||
@@ -160,7 +160,7 @@ var/global/list/grub_machine_overlays = list()
|
||||
forced_out += rand(5,15)
|
||||
powermachine.draining = 1
|
||||
|
||||
/mob/living/simple_animal/solargrub_larva/proc/do_ventcrawl(var/obj/machinery/atmospherics/unary/vent_pump/vent)
|
||||
/mob/living/simple_mob/solargrub_larva/proc/do_ventcrawl(var/obj/machinery/atmospherics/unary/vent_pump/vent)
|
||||
if(!vent)
|
||||
return
|
||||
var/obj/machinery/atmospherics/unary/vent_pump/end_vent = get_safe_ventcrawl_target(vent)
|
||||
@@ -184,15 +184,15 @@ var/global/list/grub_machine_overlays = list()
|
||||
playsound(end_vent, 'sound/machines/ventcrawl.ogg', 50, 1, -3)
|
||||
forceMove(get_turf(end_vent))
|
||||
|
||||
/mob/living/simple_animal/solargrub_larva/proc/expand_grub()
|
||||
/mob/living/simple_mob/solargrub_larva/proc/expand_grub()
|
||||
eject_from_machine()
|
||||
visible_message("<span class='warning'>\The [src] suddenly balloons in size!</span>")
|
||||
new /mob/living/simple_animal/retaliate/solargrub(get_turf(src))
|
||||
// var/mob/living/simple_animal/retaliate/solargrub/grub = new(get_turf(src))
|
||||
new /mob/living/simple_mob/retaliate/solargrub(get_turf(src))
|
||||
// var/mob/living/simple_mob/retaliate/solargrub/grub = new(get_turf(src))
|
||||
// grub.power_drained = power_drained //TODO
|
||||
qdel(src)
|
||||
|
||||
/mob/living/simple_animal/solargrub_larva/handle_light()
|
||||
/mob/living/simple_mob/solargrub_larva/handle_light()
|
||||
. = ..()
|
||||
if(. == 0 && !is_dead())
|
||||
set_light(1.5, 1, COLOR_YELLOW)
|
||||
@@ -205,7 +205,7 @@ var/global/list/grub_machine_overlays = list()
|
||||
var/total_idle_power_usage = 3 KILOWATTS
|
||||
var/list/idle_power_usages = list(1 KILOWATTS, 1 KILOWATTS, 1 KILOWATTS)
|
||||
var/draining = 1
|
||||
var/mob/living/simple_animal/solargrub_larva/grub
|
||||
var/mob/living/simple_mob/solargrub_larva/grub
|
||||
|
||||
/obj/machinery/abstract_grub_machine/New()
|
||||
..()
|
||||
@@ -248,7 +248,7 @@ var/global/list/grub_machine_overlays = list()
|
||||
/obj/item/device/multitool/afterattack(obj/O, mob/user, proximity)
|
||||
if(proximity)
|
||||
if(istype(O, /obj/machinery))
|
||||
var/mob/living/simple_animal/solargrub_larva/grub = locate() in O
|
||||
var/mob/living/simple_mob/solargrub_larva/grub = locate() in O
|
||||
if(grub)
|
||||
grub.eject_from_machine(O)
|
||||
to_chat(user, "<span class='warning'>You disturb a grub nesting in \the [O]!</span>")
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/hostile/wolf
|
||||
/mob/living/simple_mob/hostile/wolf
|
||||
name = "grey wolf"
|
||||
desc = "My, what big jaws it has!"
|
||||
tt_desc = "Canis lupus"
|
||||
@@ -22,6 +22,6 @@
|
||||
minbodytemp = 200
|
||||
|
||||
// Activate Noms!
|
||||
/mob/living/simple_animal/hostile/wolf
|
||||
/mob/living/simple_mob/hostile/wolf
|
||||
vore_active = 1
|
||||
vore_icons = SA_ICON_LIVING
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/simple_animal/retaliate/wolfgirl
|
||||
/mob/living/simple_mob/retaliate/wolfgirl
|
||||
name = "wolfgirl"
|
||||
desc = "AwooOOOOoooo!"
|
||||
tt_desc = "Homo lupus"
|
||||
@@ -48,7 +48,7 @@
|
||||
|
||||
var/loopstop = 0 //To prevent circular awoooos.
|
||||
|
||||
/mob/living/simple_animal/retaliate/wolfgirl/hear_say()
|
||||
/mob/living/simple_mob/retaliate/wolfgirl/hear_say()
|
||||
if(world.time - loopstop < 5 SECONDS)
|
||||
return
|
||||
else
|
||||
@@ -56,7 +56,7 @@
|
||||
..()
|
||||
|
||||
// Activate Noms!
|
||||
/mob/living/simple_animal/retaliate/wolfgirl
|
||||
/mob/living/simple_mob/retaliate/wolfgirl
|
||||
vore_active = 1
|
||||
vore_pounce_chance = 40
|
||||
vore_icons = SA_ICON_LIVING
|
||||
|
||||
@@ -3,12 +3,12 @@
|
||||
//
|
||||
|
||||
/*
|
||||
## For anything that previously inhertited from: /mob/living/simple_animal/hostile/vore ##
|
||||
## For anything that previously inhertited from: /mob/living/simple_mob/hostile/vore ##
|
||||
|
||||
vore_active = 1
|
||||
icon = 'icons/mob/vore.dmi'
|
||||
|
||||
## For anything that previously inhertied from: /mob/living/simple_animal/hostile/vore/large ##
|
||||
## For anything that previously inhertied from: /mob/living/simple_mob/hostile/vore/large ##
|
||||
|
||||
vore_active = 1
|
||||
icon = 'icons/mob/vore64x64.dmi'
|
||||
@@ -23,7 +23,7 @@
|
||||
// Okay! Here we go!
|
||||
//
|
||||
|
||||
/mob/living/simple_animal/hostile/alien
|
||||
/mob/living/simple_mob/hostile/alien
|
||||
vore_active = 1
|
||||
icon = 'icons/mob/vore.dmi'
|
||||
icon_state = "xenohunter"
|
||||
@@ -32,7 +32,7 @@
|
||||
icon_gib = "gibbed-a"
|
||||
vore_icons = SA_ICON_LIVING
|
||||
|
||||
/mob/living/simple_animal/hostile/alien/drone
|
||||
/mob/living/simple_mob/hostile/alien/drone
|
||||
vore_active = 1
|
||||
icon = 'icons/mob/vore.dmi'
|
||||
icon_state = "xenodrone"
|
||||
@@ -41,7 +41,7 @@
|
||||
icon_gib = "gibbed-a"
|
||||
vore_icons = SA_ICON_LIVING
|
||||
|
||||
/mob/living/simple_animal/hostile/alien/sentinel
|
||||
/mob/living/simple_mob/hostile/alien/sentinel
|
||||
vore_active = 1
|
||||
icon = 'icons/mob/vore.dmi'
|
||||
icon_state = "xenosentinel"
|
||||
@@ -50,7 +50,7 @@
|
||||
icon_gib = "gibbed-a"
|
||||
vore_icons = SA_ICON_LIVING
|
||||
|
||||
/mob/living/simple_animal/hostile/alien/queen
|
||||
/mob/living/simple_mob/hostile/alien/queen
|
||||
vore_active = 1
|
||||
icon = 'icons/mob/vore.dmi'
|
||||
icon_state = "xenoqueen"
|
||||
@@ -59,7 +59,7 @@
|
||||
icon_gib = "gibbed-a"
|
||||
vore_icons = SA_ICON_LIVING
|
||||
|
||||
/mob/living/simple_animal/hostile/alien/queen/empress
|
||||
/mob/living/simple_mob/hostile/alien/queen/empress
|
||||
vore_active = 1
|
||||
icon = 'icons/mob/vore64x64.dmi'
|
||||
icon_state = "queen_s"
|
||||
@@ -75,14 +75,14 @@
|
||||
vore_capacity = 3
|
||||
vore_pounce_chance = 75
|
||||
|
||||
/mob/living/simple_animal/hostile/alien/sentinel/praetorian
|
||||
/mob/living/simple_mob/hostile/alien/sentinel/praetorian
|
||||
icon = 'icons/mob/vore64x64.dmi'
|
||||
vore_icons = SA_ICON_LIVING | SA_ICON_REST
|
||||
|
||||
/mob/living/simple_animal/hostile/alien/queen/empress/mother
|
||||
/mob/living/simple_mob/hostile/alien/queen/empress/mother
|
||||
vore_icons = 0 // NO VORE SPRITES
|
||||
|
||||
/mob/living/simple_animal/hostile/bear
|
||||
/mob/living/simple_mob/hostile/bear
|
||||
vore_active = 1
|
||||
icon = 'icons/mob/vore.dmi'
|
||||
icon_state = "spacebear"
|
||||
@@ -91,10 +91,10 @@
|
||||
icon_gib = "bear-gib"
|
||||
vore_icons = SA_ICON_LIVING
|
||||
|
||||
/mob/living/simple_animal/hostile/bear/hudson
|
||||
/mob/living/simple_mob/hostile/bear/hudson
|
||||
name = "Hudson"
|
||||
|
||||
/mob/living/simple_animal/hostile/bear/brown
|
||||
/mob/living/simple_mob/hostile/bear/brown
|
||||
vore_active = 1
|
||||
icon = 'icons/mob/vore.dmi'
|
||||
name = "brown bear"
|
||||
@@ -104,12 +104,12 @@
|
||||
icon_gib = "bear-gib"
|
||||
vore_icons = SA_ICON_LIVING
|
||||
|
||||
/mob/living/simple_animal/hostile/carp
|
||||
/mob/living/simple_mob/hostile/carp
|
||||
icon = 'icons/mob/vore.dmi'
|
||||
vore_active = 1
|
||||
vore_icons = SA_ICON_LIVING
|
||||
|
||||
/mob/living/simple_animal/hostile/creature/vore
|
||||
/mob/living/simple_mob/hostile/creature/vore
|
||||
vore_active = 1
|
||||
// NO VORE SPRITES
|
||||
vore_capacity = 0
|
||||
@@ -120,7 +120,7 @@
|
||||
health = 80 // Increase health to compensate
|
||||
maxHealth = 80
|
||||
|
||||
/mob/living/simple_animal/hostile/mimic
|
||||
/mob/living/simple_mob/hostile/mimic
|
||||
vore_active = 1
|
||||
// NO VORE SPRITES
|
||||
vore_capacity = 0
|
||||
@@ -129,42 +129,42 @@
|
||||
maxHealth = 60
|
||||
health = 60
|
||||
|
||||
/mob/living/simple_animal/cat
|
||||
/mob/living/simple_mob/cat
|
||||
vore_active = 1
|
||||
// NO VORE SPRITES
|
||||
specific_targets = 0 // Targeting UNLOCKED
|
||||
vore_max_size = RESIZE_TINY
|
||||
|
||||
/mob/living/simple_animal/cat/PunchTarget()
|
||||
if(istype(target_mob,/mob/living/simple_animal/mouse))
|
||||
/mob/living/simple_mob/cat/PunchTarget()
|
||||
if(istype(target_mob,/mob/living/simple_mob/mouse))
|
||||
visible_message("<span class='warning'>\The [src] pounces on \the [target_mob]!]</span>")
|
||||
target_mob.Stun(5)
|
||||
return EatTarget()
|
||||
else ..()
|
||||
|
||||
/mob/living/simple_animal/cat/Found(var/atom/found_atom)
|
||||
/mob/living/simple_mob/cat/Found(var/atom/found_atom)
|
||||
if(!SA_attackable(found_atom))
|
||||
return null
|
||||
if(istype(found_atom,/mob/living/simple_animal/mouse))
|
||||
if(istype(found_atom,/mob/living/simple_mob/mouse))
|
||||
return found_atom
|
||||
if(found_atom in friends)
|
||||
return null
|
||||
if(will_eat(found_atom))
|
||||
return found_atom
|
||||
|
||||
/mob/living/simple_animal/cat/fluff/Found(var/atom/found_atom)
|
||||
/mob/living/simple_mob/cat/fluff/Found(var/atom/found_atom)
|
||||
if (friend == found_atom)
|
||||
return null
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/cat/fluff
|
||||
/mob/living/simple_mob/cat/fluff
|
||||
vore_ignores_undigestable = 0
|
||||
vore_pounce_chance = 100
|
||||
vore_digest_chance = 0 // just use the toggle
|
||||
vore_default_mode = DM_HOLD //can use the toggle if you wanna be catfood
|
||||
vore_standing_too = TRUE //gonna get pounced
|
||||
|
||||
/mob/living/simple_animal/cat/fluff/EatTarget()
|
||||
/mob/living/simple_mob/cat/fluff/EatTarget()
|
||||
var/mob/living/TM = target_mob
|
||||
prey_excludes += TM //so they won't immediately re-eat someone who struggles out (or gets newspapered out) as soon as they're ate
|
||||
spawn(3600) // but if they hang around and get comfortable, they might get ate again
|
||||
@@ -172,39 +172,39 @@
|
||||
prey_excludes -= TM
|
||||
..() // will_eat check is carried out before EatTarget is called, so prey on the prey_excludes list isn't a problem.
|
||||
|
||||
/mob/living/simple_animal/fox
|
||||
/mob/living/simple_mob/fox
|
||||
vore_active = 1
|
||||
// NO VORE SPRITES
|
||||
vore_max_size = RESIZE_TINY
|
||||
|
||||
/mob/living/simple_animal/fox/PunchTarget()
|
||||
if(istype(target_mob,/mob/living/simple_animal/mouse))
|
||||
/mob/living/simple_mob/fox/PunchTarget()
|
||||
if(istype(target_mob,/mob/living/simple_mob/mouse))
|
||||
return EatTarget()
|
||||
else ..()
|
||||
|
||||
/mob/living/simple_animal/fox/Found(var/atom/found_atom)
|
||||
/mob/living/simple_mob/fox/Found(var/atom/found_atom)
|
||||
if(!SA_attackable(found_atom))
|
||||
return null
|
||||
if(istype(found_atom,/mob/living/simple_animal/mouse))
|
||||
if(istype(found_atom,/mob/living/simple_mob/mouse))
|
||||
return found_atom
|
||||
if(found_atom in friends)
|
||||
return null
|
||||
if(will_eat(found_atom))
|
||||
return found_atom
|
||||
|
||||
/mob/living/simple_animal/fox/fluff/Found(var/atom/found_atom)
|
||||
/mob/living/simple_mob/fox/fluff/Found(var/atom/found_atom)
|
||||
if (friend == found_atom)
|
||||
return null
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/fox/fluff
|
||||
/mob/living/simple_mob/fox/fluff
|
||||
vore_ignores_undigestable = 0
|
||||
vore_pounce_chance = 100
|
||||
vore_digest_chance = 0 // just use the toggle
|
||||
vore_default_mode = DM_HOLD //can use the toggle if you wanna be foxfood
|
||||
vore_standing_too = TRUE // gonna get pounced
|
||||
|
||||
/mob/living/simple_animal/fox/fluff/EatTarget()
|
||||
/mob/living/simple_mob/fox/fluff/EatTarget()
|
||||
var/mob/living/TM = target_mob
|
||||
prey_excludes += TM //so they won't immediately re-eat someone who struggles out (or gets newspapered out) as soon as they're ate
|
||||
spawn(3600) // but if they hang around and get comfortable, they might get ate again
|
||||
@@ -212,39 +212,39 @@
|
||||
prey_excludes -= TM
|
||||
..() // will_eat check is carried out before EatTarget is called, so prey on the prey_excludes list isn't a problem.
|
||||
|
||||
/mob/living/simple_animal/hostile/goose
|
||||
/mob/living/simple_mob/hostile/goose
|
||||
vore_active = 1
|
||||
// NO VORE SPRITES
|
||||
vore_max_size = RESIZE_SMALL
|
||||
|
||||
/mob/living/simple_animal/penguin
|
||||
/mob/living/simple_mob/penguin
|
||||
vore_active = 1
|
||||
// NO VORE SPRITES
|
||||
vore_max_size = RESIZE_SMALL
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/carp/pike
|
||||
/mob/living/simple_mob/hostile/carp/pike
|
||||
vore_active = 1
|
||||
// NO VORE SPRITES
|
||||
|
||||
/mob/living/simple_animal/hostile/carp/holodeck
|
||||
/mob/living/simple_mob/hostile/carp/holodeck
|
||||
vore_icons = 0 // NO VORE SPRITES
|
||||
vore_digest_chance = 0
|
||||
vore_absorb_chance = 0
|
||||
|
||||
// Override stuff for holodeck carp to make them not digest when set to safe!
|
||||
/mob/living/simple_animal/hostile/carp/holodeck/init_vore()
|
||||
/mob/living/simple_mob/hostile/carp/holodeck/init_vore()
|
||||
. = ..()
|
||||
var/safe = (faction == "neutral")
|
||||
for(var/belly in vore_organs)
|
||||
var/obj/belly/B = belly
|
||||
B.digest_mode = safe ? DM_HOLD : vore_default_mode
|
||||
|
||||
/mob/living/simple_animal/hostile/carp/holodeck/set_safety(var/safe)
|
||||
/mob/living/simple_mob/hostile/carp/holodeck/set_safety(var/safe)
|
||||
. = ..()
|
||||
for(var/belly in vore_organs)
|
||||
var/obj/belly/B = belly
|
||||
B.digest_mode = safe ? DM_HOLD : vore_default_mode
|
||||
|
||||
/mob/living/simple_animal/mouse
|
||||
/mob/living/simple_mob/mouse
|
||||
faction = "mouse" //Giving mice a faction so certain mobs can get along with them.
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
var/fed = 0 // Counter for how many egg laying 'charges' the spider has.
|
||||
var/egg_inject_chance = 25 // One in four chance to get eggs.
|
||||
var/egg_type = /obj/effect/spider/eggcluster/small
|
||||
egg_type = /obj/effect/spider/eggcluster/small //VORESTATION AI TEMPORARY EDIT
|
||||
var/web_type = /obj/effect/spider/stickyweb/dark
|
||||
|
||||
|
||||
|
||||
@@ -298,7 +298,7 @@
|
||||
return 0 //Sanity, this should never happen.
|
||||
|
||||
/*
|
||||
if(ispath(MP, /mob/living/simple_animal/space_worm))
|
||||
if(ispath(MP, /mob/living/simple_mob/space_worm))
|
||||
return 0 //Unfinished. Very buggy, they seem to just spawn additional space worms everywhere and eating your own tail results in new worms spawning.
|
||||
*/
|
||||
|
||||
|
||||
@@ -13,5 +13,5 @@
|
||||
/obj/item/projectile/animate/Bump(var/atom/change)
|
||||
if((istype(change, /obj/item) || istype(change, /obj/structure)) && !is_type_in_list(change, protected_objects))
|
||||
var/obj/O = change
|
||||
new /mob/living/simple_animal/hostile/mimic/copy(O.loc, O, firer)
|
||||
new /mob/living/simple_mob/hostile/mimic/copy(O.loc, O, firer)
|
||||
..()
|
||||
|
||||
@@ -309,7 +309,7 @@
|
||||
|
||||
|
||||
|
||||
|
||||
/* //VORESTATION AI TEMPORARY REMOVAL
|
||||
/datum/chemical_reaction/slimevore
|
||||
name = "Slime Vore" // Hostile vore mobs only
|
||||
id = "m_tele"
|
||||
@@ -317,11 +317,11 @@
|
||||
required_reagents = list("phoron" = 20, "nutriment" = 20, "sugar" = 20, "mutationtoxin" = 20) //Can't do slime jelly as it'll conflict with another, but mutation toxin will do.
|
||||
result_amount = 1
|
||||
on_reaction(var/datum/reagents/holder)
|
||||
var/mob_path = /mob/living/simple_animal
|
||||
var/mob_path = /mob/living/simple_mob
|
||||
var/blocked = list(
|
||||
/mob/living/simple_animal/hostile/mimic,
|
||||
/mob/living/simple_animal/hostile/alien/queen,
|
||||
/mob/living/simple_animal/shadekin
|
||||
/mob/living/simple_mob/hostile/mimic,
|
||||
/mob/living/simple_mob/hostile/alien/queen,
|
||||
/mob/living/simple_mob/shadekin
|
||||
)//exclusion list for things you don't want the reaction to create.
|
||||
var/list/voremobs = typesof(mob_path) - mob_path - blocked // list of possible hostile mobs
|
||||
|
||||
@@ -334,9 +334,10 @@
|
||||
var/spawn_count = rand(1,3)
|
||||
for(var/i = 1, i <= spawn_count, i++)
|
||||
var/chosen = pick(voremobs)
|
||||
var/mob/living/simple_animal/hostile/C = new chosen
|
||||
var/mob/living/simple_mob/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))
|
||||
*/
|
||||
@@ -113,7 +113,7 @@
|
||||
New()
|
||||
..()
|
||||
spot_add(2,2,/obj/random/cargopod) //EXTRA loot!
|
||||
spot_add(2,2,/mob/living/simple_animal/hostile/alien) //GRRR
|
||||
//spot_add(2,2,/mob/living/simple_mob/hostile/alien) //GRRR //VORESTATION AI TEMPORARY REMOVAL
|
||||
|
||||
//Longer cargo container for higher difficulties
|
||||
/datum/rogue/asteroid/predef/cargo_large
|
||||
@@ -146,5 +146,5 @@
|
||||
spot_add(3,3,/obj/random/cargopod) //Mid loot
|
||||
spot_add(4,3,/obj/random/cargopod) //Right loot
|
||||
|
||||
if(prob(30))
|
||||
spot_add(3,3,/mob/living/simple_animal/hostile/alien) //And maybe a friend.
|
||||
//if(prob(30))
|
||||
//spot_add(3,3,/mob/living/simple_mob/hostile/alien) //And maybe a friend. //VORESTATION AI TEMPORARY REMOVAL
|
||||
|
||||
@@ -54,22 +54,22 @@ var/datum/controller/rogue/rm_controller = new()
|
||||
)
|
||||
|
||||
///// Monster Lists /////
|
||||
var/mobs = list(
|
||||
"tier1" = list(/mob/living/simple_animal/hostile/carp, /mob/living/simple_animal/hostile/goose),
|
||||
var/mobs = list(/*
|
||||
"tier1" = list(/mob/living/simple_mob/hostile/carp, /mob/living/simple_mob/hostile/goose),
|
||||
|
||||
"tier2" = list(/mob/living/simple_animal/hostile/carp, /mob/living/simple_animal/hostile/goose),
|
||||
"tier2" = list(/mob/living/simple_mob/hostile/carp, /mob/living/simple_mob/hostile/goose),
|
||||
|
||||
"tier3" = list(/mob/living/simple_animal/hostile/carp, /mob/living/simple_animal/hostile/goose,
|
||||
/mob/living/simple_animal/hostile/bear, /mob/living/simple_animal/hostile/carp/strong),
|
||||
"tier3" = list(/mob/living/simple_mob/hostile/carp, /mob/living/simple_mob/hostile/goose,
|
||||
/mob/living/simple_mob/hostile/bear, /mob/living/simple_mob/hostile/carp/strong),
|
||||
|
||||
"tier4" = list(/mob/living/simple_animal/hostile/carp, /mob/living/simple_animal/hostile/goose, /mob/living/simple_animal/hostile/bear,
|
||||
/mob/living/simple_animal/hostile/carp/strong, /mob/living/simple_animal/hostile/carp/pike/weak),
|
||||
"tier4" = list(/mob/living/simple_mob/hostile/carp, /mob/living/simple_mob/hostile/goose, /mob/living/simple_mob/hostile/bear,
|
||||
/mob/living/simple_mob/hostile/carp/strong, /mob/living/simple_mob/hostile/carp/pike/weak),
|
||||
|
||||
"tier5" = list(/mob/living/simple_animal/hostile/carp, /mob/living/simple_animal/hostile/bear, /mob/living/simple_animal/hostile/carp/pike/weak,
|
||||
/mob/living/simple_animal/hostile/carp/strong, /mob/living/simple_animal/hostile/carp/pike),
|
||||
"tier5" = list(/mob/living/simple_mob/hostile/carp, /mob/living/simple_mob/hostile/bear, /mob/living/simple_mob/hostile/carp/pike/weak,
|
||||
/mob/living/simple_mob/hostile/carp/strong, /mob/living/simple_mob/hostile/carp/pike),
|
||||
|
||||
"tier6" = list(/mob/living/simple_animal/hostile/bear, /mob/living/simple_animal/hostile/carp/strong,
|
||||
/mob/living/simple_animal/hostile/carp/pike, /mob/living/simple_animal/hostile/carp/pike/weak)
|
||||
"tier6" = list(/mob/living/simple_mob/hostile/bear, /mob/living/simple_mob/hostile/carp/strong,
|
||||
/mob/living/simple_mob/hostile/carp/pike, /mob/living/simple_mob/hostile/carp/pike/weak)*/ //VORESTATION AI TEMPORARY REMOVAL
|
||||
)
|
||||
|
||||
/datum/controller/rogue/New()
|
||||
|
||||
@@ -3,10 +3,10 @@
|
||||
//////////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/surgery_step/slime
|
||||
is_valid_target(mob/living/simple_animal/slime/target)
|
||||
return istype(target, /mob/living/simple_animal/slime/)
|
||||
is_valid_target(mob/living/simple_mob/slime/target)
|
||||
return istype(target, /mob/living/simple_mob/slime/)
|
||||
|
||||
/datum/surgery_step/slime/can_use(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/slime/can_use(mob/living/user, mob/living/simple_mob/slime/target, target_zone, obj/item/tool)
|
||||
return target.stat == 2
|
||||
|
||||
|
||||
@@ -21,19 +21,19 @@
|
||||
min_duration = 30
|
||||
max_duration = 50
|
||||
|
||||
/datum/surgery_step/slime/cut_flesh/can_use(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/slime/cut_flesh/can_use(mob/living/user, mob/living/simple_mob/slime/target, target_zone, obj/item/tool)
|
||||
return ..() && istype(target) && target.core_removal_stage == 0
|
||||
|
||||
/datum/surgery_step/slime/cut_flesh/begin_step(mob/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/slime/cut_flesh/begin_step(mob/user, mob/living/simple_mob/slime/target, target_zone, obj/item/tool)
|
||||
user.visible_message("[user] starts cutting through [target]'s flesh with \the [tool].", \
|
||||
"You start cutting through [target]'s flesh with \the [tool].")
|
||||
|
||||
/datum/surgery_step/slime/cut_flesh/end_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/slime/cut_flesh/end_step(mob/living/user, mob/living/simple_mob/slime/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<font color='blue'>[user] cuts through [target]'s flesh with \the [tool].</font>", \
|
||||
"<font color='blue'>You cut through [target]'s flesh with \the [tool], revealing its silky innards.</font>")
|
||||
target.core_removal_stage = 1
|
||||
|
||||
/datum/surgery_step/slime/cut_flesh/fail_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/slime/cut_flesh/fail_step(mob/living/user, mob/living/simple_mob/slime/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<font color='red'>[user]'s hand slips, tearing [target]'s flesh with \the [tool]!</font>", \
|
||||
"<font color='red'>Your hand slips, tearing [target]'s flesh with \the [tool]!</font>")
|
||||
|
||||
@@ -49,19 +49,19 @@
|
||||
min_duration = 30
|
||||
max_duration = 50
|
||||
|
||||
/datum/surgery_step/slime/cut_innards/can_use(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/slime/cut_innards/can_use(mob/living/user, mob/living/simple_mob/slime/target, target_zone, obj/item/tool)
|
||||
return ..() && istype(target) && target.core_removal_stage == 1
|
||||
|
||||
/datum/surgery_step/slime/cut_innards/begin_step(mob/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/slime/cut_innards/begin_step(mob/user, mob/living/simple_mob/slime/target, target_zone, obj/item/tool)
|
||||
user.visible_message("[user] starts cutting [target]'s silky innards apart with \the [tool].", \
|
||||
"You start cutting [target]'s silky innards apart with \the [tool].")
|
||||
|
||||
/datum/surgery_step/slime/cut_innards/end_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/slime/cut_innards/end_step(mob/living/user, mob/living/simple_mob/slime/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<font color='blue'>[user] cuts [target]'s innards apart with \the [tool], exposing the cores.</font>", \
|
||||
"<font color='blue'>You cut [target]'s innards apart with \the [tool], exposing the cores.</font>")
|
||||
target.core_removal_stage = 2
|
||||
|
||||
/datum/surgery_step/slime/cut_innards/fail_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/slime/cut_innards/fail_step(mob/living/user, mob/living/simple_mob/slime/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<font color='red'>[user]'s hand slips, tearing [target]'s innards with \the [tool]!</font>", \
|
||||
"<font color='red'>Your hand slips, tearing [target]'s innards with \the [tool]!</font>")
|
||||
|
||||
@@ -76,14 +76,14 @@
|
||||
min_duration = 50
|
||||
max_duration = 70
|
||||
|
||||
/datum/surgery_step/slime/saw_core/can_use(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/slime/saw_core/can_use(mob/living/user, mob/living/simple_mob/slime/target, target_zone, obj/item/tool)
|
||||
return ..() && (istype(target) && target.core_removal_stage == 2 && target.cores > 0) //This is being passed a human as target, unsure why.
|
||||
|
||||
/datum/surgery_step/slime/saw_core/begin_step(mob/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/slime/saw_core/begin_step(mob/user, mob/living/simple_mob/slime/target, target_zone, obj/item/tool)
|
||||
user.visible_message("[user] starts cutting out one of [target]'s cores with \the [tool].", \
|
||||
"You start cutting out one of [target]'s cores with \the [tool].")
|
||||
|
||||
/datum/surgery_step/slime/saw_core/end_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/slime/saw_core/end_step(mob/living/user, mob/living/simple_mob/slime/target, target_zone, obj/item/tool)
|
||||
target.cores--
|
||||
user.visible_message("<font color='blue'>[user] cuts out one of [target]'s cores with \the [tool].</font>",, \
|
||||
"<font color='blue'>You cut out one of [target]'s cores with \the [tool]. [target.cores] cores left.</font>")
|
||||
@@ -94,7 +94,7 @@
|
||||
target.icon_state = "slime extracted"
|
||||
|
||||
|
||||
/datum/surgery_step/slime/saw_core/fail_step(mob/living/user, mob/living/simple_animal/slime/target, target_zone, obj/item/tool)
|
||||
/datum/surgery_step/slime/saw_core/fail_step(mob/living/user, mob/living/simple_mob/slime/target, target_zone, obj/item/tool)
|
||||
var/datum/gender/T = gender_datums[user.get_visible_gender()]
|
||||
user.visible_message("<font color='red'>[user]'s hand slips, causing [T.him] to miss the core!</font>", \
|
||||
"<font color='red'>Your hand slips, causing you to miss the core!</font>")
|
||||
@@ -151,12 +151,12 @@
|
||||
sparks()
|
||||
if(telepad)
|
||||
var/L = get_turf(telepad)
|
||||
var/blocked = list(/mob/living/simple_animal/hostile)
|
||||
var/list/hostiles = typesof(/mob/living/simple_animal/hostile) - blocked
|
||||
var/blocked = list(/mob/living/simple_mob/hostile)
|
||||
var/list/hostiles = typesof(/mob/living/simple_mob/hostile) - blocked
|
||||
playsound(L, 'sound/effects/phasein.ogg', 100, 1, extrarange = 3, falloff = 5)
|
||||
for(var/i in 1 to rand(1,4))
|
||||
var/chosen = pick(hostiles)
|
||||
var/mob/living/simple_animal/hostile/H = new chosen
|
||||
var/mob/living/simple_mob/hostile/H = new chosen
|
||||
H.forceMove(L)
|
||||
return
|
||||
if(99)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user