mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-12 11:13:16 +00:00
Ported the last of the critters to simple_animal.
Removed all critter code/replaced it with their simple animal paths where applicable. Replaced the critters on the maps with simple_animal versions. If I missed any vars/icons/etc when I ported them over, let me know. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5210 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
@@ -19,5 +19,48 @@
|
||||
|
||||
run_action()
|
||||
if(spores.len >= max_spores) return 0
|
||||
new/obj/effect/critter/blob(src.loc, src)
|
||||
new/mob/living/simple_animal/hostile/blobspore(src.loc, src)
|
||||
return 1
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/blobspore
|
||||
name = "blob"
|
||||
desc = "Some blob thing."
|
||||
icon = 'icons/mob/critter.dmi'
|
||||
icon_state = "blobsquiggle"
|
||||
icon_living = "blobsquiggle"
|
||||
pass_flags = PASSBLOB
|
||||
health = 20
|
||||
maxHealth = 20
|
||||
melee_damage_lower = 4
|
||||
melee_damage_upper = 8
|
||||
attacktext = "hits"
|
||||
attack_sound = 'sound/weapons/genhit1.ogg'
|
||||
var/obj/effect/blob/factory/factory = null
|
||||
faction = "blob"
|
||||
min_oxy = 0
|
||||
max_oxy = 0
|
||||
min_tox = 0
|
||||
max_tox = 0
|
||||
min_co2 = 0
|
||||
max_co2 = 0
|
||||
min_n2 = 0
|
||||
max_n2 = 0
|
||||
minbodytemp = 0
|
||||
maxbodytemp = 360
|
||||
|
||||
|
||||
New(loc, var/obj/effect/blob/factory/linked_node)
|
||||
..()
|
||||
if(istype(linked_node))
|
||||
factory = linked_node
|
||||
factory.spores += src
|
||||
..(loc)
|
||||
return
|
||||
Die()
|
||||
..()
|
||||
if(factory)
|
||||
factory.spores -= src
|
||||
..()
|
||||
del(src)
|
||||
|
||||
|
||||
@@ -144,8 +144,6 @@ datum/hSB
|
||||
continue
|
||||
if(istype(O, /obj/item/weapon/melee/energy/sword))
|
||||
continue
|
||||
if(istype(O, /obj/effect/critter))
|
||||
continue
|
||||
if(istype(O, /obj/structure))
|
||||
continue
|
||||
selectable += O
|
||||
|
||||
@@ -66,14 +66,6 @@
|
||||
open()
|
||||
return
|
||||
|
||||
if(istype(AM, /obj/effect/critter))
|
||||
var/obj/effect/critter/critter = AM
|
||||
if(critter.opensdoors) return
|
||||
if(src.check_access_list(critter.access_list))
|
||||
if(density)
|
||||
open()
|
||||
return
|
||||
|
||||
if(istype(AM, /obj/mecha))
|
||||
var/obj/mecha/mecha = AM
|
||||
if(density)
|
||||
|
||||
@@ -449,9 +449,6 @@ Status: []<BR>"},
|
||||
var/list/secondarytargets = list() // targets that are least important
|
||||
|
||||
if(src.check_anomalies) // if its set to check for xenos/carps, check for non-mob "crittersssss"(And simple_animals)
|
||||
for (var/obj/effect/critter/L in view(7,src))
|
||||
if(L.alive)
|
||||
targets += L
|
||||
for(var/mob/living/simple_animal/C in view(7,src))
|
||||
if(!C.stat)
|
||||
targets += C
|
||||
@@ -506,15 +503,6 @@ Status: []<BR>"},
|
||||
spawn() popUp() // pop the turret up if it's not already up.
|
||||
dir=get_dir(src,M) // even if you can't shoot, follow the target
|
||||
spawn() shootAt(M) // shoot the target, finally
|
||||
else
|
||||
|
||||
if (istype(t, /obj/effect/critter)) // shoot other things, same process as above
|
||||
var/obj/effect/critter/L = t
|
||||
if (L.alive==1)
|
||||
spawn() popUp()
|
||||
dir=get_dir(src,L)
|
||||
spawn() shootAt(L)
|
||||
|
||||
|
||||
else
|
||||
if(secondarytargets.len>0) // if there are no primary targets, go for secondary targets
|
||||
|
||||
@@ -469,23 +469,6 @@
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>attacked [src.name]</font>")
|
||||
return
|
||||
|
||||
|
||||
/obj/mecha/proc/attack_critter(obj/effect/critter/C)
|
||||
src.log_message("Attack by creature. Attacker - [C].",1)
|
||||
var/damage = max(0, rand(C.melee_damage_lower - 5, C.melee_damage_upper - 5 ))
|
||||
|
||||
if(!prob(src.deflect_chance) && damage > 0)
|
||||
src.take_damage(damage)
|
||||
src.check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST))
|
||||
playsound(src.loc, "sparks", 50, 1)
|
||||
visible_message("\red <b>[C]</b> hits [src.name]'s armor!")
|
||||
else
|
||||
src.log_append_to_last("Armor saved.")
|
||||
src.occupant_message("\blue <b>[C]'s</b> attack is stopped by the armor.")
|
||||
visible_message("\blue <b>[C]</b> rebounds off [src.name]'s armor!")
|
||||
return
|
||||
|
||||
|
||||
/obj/mecha/hitby(atom/movable/A as mob|obj) //wrapper
|
||||
src.log_message("Hit by [A].",1)
|
||||
call((proc_res["dynhitby"]||src), "dynhitby")(A)
|
||||
|
||||
@@ -283,9 +283,6 @@
|
||||
for(var/obj/mecha/M in src)//Mecha are not gibbed but are damaged.
|
||||
spawn(0)
|
||||
M.take_damage(100, "brute")
|
||||
for(var/obj/effect/critter/M in src)
|
||||
spawn(0)
|
||||
M.Die()
|
||||
|
||||
/turf/proc/Bless()
|
||||
if(flags & NOJAUNT)
|
||||
|
||||
@@ -1,129 +0,0 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32
|
||||
|
||||
/obj/effect/critter
|
||||
name = "Critter"
|
||||
desc = "Generic critter."
|
||||
icon = 'icons/mob/critter.dmi'
|
||||
icon_state = "basic"
|
||||
layer = 5.0
|
||||
density = 1
|
||||
anchored = 0
|
||||
var/alive = 1
|
||||
var/health = 10
|
||||
var/max_health = 10
|
||||
var/list/access_list = list()//accesses go here
|
||||
//AI things
|
||||
var/task = "thinking"
|
||||
//Attacks at will
|
||||
var/aggressive = 1
|
||||
//Will target an attacker
|
||||
var/defensive = 0
|
||||
//Will randomly move about
|
||||
var/wanderer = 1
|
||||
//Will open doors it bumps ignoring access
|
||||
var/opensdoors = 0
|
||||
//Will randomly travel through vents
|
||||
var/ventcrawl = 0
|
||||
|
||||
//Internal tracking ignore
|
||||
var/frustration = 0
|
||||
var/max_frustration = 8
|
||||
var/attack = 0
|
||||
var/attacking = 0
|
||||
var/steps = 0
|
||||
var/last_found = null
|
||||
var/target = null
|
||||
var/oldtarget_name = null
|
||||
var/target_lastloc = null
|
||||
|
||||
var/thinkspeed = 15
|
||||
var/chasespeed = 4
|
||||
var/wanderspeed = 10
|
||||
//The last guy who attacked it
|
||||
var/attacker = null
|
||||
//Will not attack this thing
|
||||
var/friend = null
|
||||
//How far to look for things dont set this overly high
|
||||
var/seekrange = 7
|
||||
|
||||
//If true will attack these things
|
||||
var/atkcarbon = 1
|
||||
var/atksilicon = 0
|
||||
var/atkcritter = 0
|
||||
//Attacks critters of the same type
|
||||
var/atksame = 0
|
||||
var/atkmech = 0
|
||||
|
||||
//Attacks syndies/traitors (distinguishes via mind)
|
||||
var/atksynd = 1
|
||||
//Attacks things NOT in its obj/req_access list
|
||||
var/atkreq = 0
|
||||
|
||||
//Damage multipliers
|
||||
var/brutevuln = 1
|
||||
var/firevuln = 1
|
||||
//DR
|
||||
var/armor = 0
|
||||
|
||||
//How much damage it does it melee
|
||||
var/melee_damage_lower = 1
|
||||
var/melee_damage_upper = 2
|
||||
//Basic attack message when they move to attack and attack
|
||||
var/angertext = "charges at"
|
||||
var/attacktext = "attacks"
|
||||
var/deathtext = "dies!"
|
||||
|
||||
var/chasestate = null // the icon state to use when attacking or chasing a target
|
||||
var/attackflick = null // the icon state to flick when it attacks
|
||||
var/attack_sound = null // the sound it makes when it attacks!
|
||||
|
||||
var/attack_speed = 25 // delay of attack
|
||||
|
||||
|
||||
proc/AfterAttack(var/mob/living/target)
|
||||
return
|
||||
|
||||
|
||||
|
||||
/* TODO:Go over these and see how/if to add them
|
||||
|
||||
proc/set_attack()
|
||||
state = 1
|
||||
if(path_idle.len) path_idle = new/list()
|
||||
trg_idle = null
|
||||
|
||||
proc/set_idle()
|
||||
state = 2
|
||||
if (path_target.len) path_target = new/list()
|
||||
target = null
|
||||
frustration = 0
|
||||
|
||||
proc/set_null()
|
||||
state = 0
|
||||
if (path_target.len) path_target = new/list()
|
||||
if (path_idle.len) path_idle = new/list()
|
||||
target = null
|
||||
trg_idle = null
|
||||
frustration = 0
|
||||
|
||||
proc/path_idle(var/atom/trg)
|
||||
path_idle = AStar(src.loc, get_turf(trg), /turf/proc/CardinalTurfsWithAccess, /turf/proc/Distance, 0, 250, anicard, null)
|
||||
path_idle = reverselist(path_idle)
|
||||
|
||||
proc/path_attack(var/atom/trg)
|
||||
path_target = AStar(src.loc, trg.loc, /turf/proc/CardinalTurfsWithAccess, /turf/proc/Distance, 0, 250, anicard, null)
|
||||
path_target = reverselist(path_target)
|
||||
|
||||
|
||||
//Look these over
|
||||
var/list/path = new/list()
|
||||
var/patience = 35 //The maximum time it'll chase a target.
|
||||
var/list/mob/living/carbon/flee_from = new/list()
|
||||
var/list/path_target = new/list() //The path to the combat target.
|
||||
|
||||
var/turf/trg_idle //It's idle target, the one it's following but not attacking.
|
||||
var/list/path_idle = new/list() //The path to the idle target.
|
||||
|
||||
|
||||
|
||||
*/
|
||||
@@ -1,241 +0,0 @@
|
||||
|
||||
/obj/effect/critter
|
||||
|
||||
New(loc)
|
||||
spawn(0) process()//I really dont like this much but it seems to work well
|
||||
..(loc)
|
||||
|
||||
|
||||
process()
|
||||
set background = 1
|
||||
if (!src.alive) return
|
||||
switch(task)
|
||||
if("thinking")
|
||||
src.attack = 0
|
||||
src.target = null
|
||||
sleep(thinkspeed)
|
||||
walk_to(src,0)
|
||||
if (src.aggressive) seek_target()
|
||||
if (src.wanderer && !src.target) src.task = "wandering"
|
||||
if("chasing")
|
||||
if (src.frustration >= max_frustration)
|
||||
src.target = null
|
||||
src.last_found = world.time
|
||||
src.frustration = 0
|
||||
src.task = "thinking"
|
||||
walk_to(src,0)
|
||||
if (target)
|
||||
if (get_dist(src, src.target) <= 1)
|
||||
var/mob/living/carbon/M = src.target
|
||||
ChaseAttack()
|
||||
src.task = "attacking"
|
||||
if(chasestate)
|
||||
icon_state = chasestate
|
||||
src.anchored = 1
|
||||
src.target_lastloc = M.loc
|
||||
else
|
||||
var/turf/olddist = get_dist(src, src.target)
|
||||
walk_to(src, src.target,1,chasespeed)
|
||||
if ((get_dist(src, src.target)) >= (olddist))
|
||||
src.frustration++
|
||||
else
|
||||
src.frustration = 0
|
||||
sleep(5)
|
||||
else src.task = "thinking"
|
||||
if("attacking")
|
||||
// see if he got away
|
||||
if ((get_dist(src, src.target) > 1) || ((src.target:loc != src.target_lastloc)))
|
||||
src.anchored = 0
|
||||
src.task = "chasing"
|
||||
if(chasestate)
|
||||
icon_state = chasestate
|
||||
else
|
||||
if (get_dist(src, src.target) <= 1)
|
||||
var/mob/living/carbon/M = src.target
|
||||
if(!src.attacking) RunAttack()
|
||||
if(!src.aggressive)
|
||||
src.task = "thinking"
|
||||
src.target = null
|
||||
src.anchored = 0
|
||||
src.last_found = world.time
|
||||
src.frustration = 0
|
||||
src.attacking = 0
|
||||
else
|
||||
if(M!=null)
|
||||
if(ismob(src.target))
|
||||
if(M.health < 0)
|
||||
src.task = "thinking"
|
||||
src.target = null
|
||||
src.anchored = 0
|
||||
src.last_found = world.time
|
||||
src.frustration = 0
|
||||
src.attacking = 0
|
||||
else
|
||||
src.anchored = 0
|
||||
src.attacking = 0
|
||||
src.task = "chasing"
|
||||
if(chasestate)
|
||||
icon_state = chasestate
|
||||
if("wandering")
|
||||
if(chasestate)
|
||||
icon_state = initial(icon_state)
|
||||
patrol_step()
|
||||
sleep(wanderspeed)
|
||||
spawn(8)
|
||||
process()
|
||||
return
|
||||
|
||||
|
||||
proc/patrol_step()
|
||||
var/moveto = locate(src.x + rand(-1,1),src.y + rand(-1, 1),src.z)
|
||||
if (istype(moveto, /turf/simulated/floor) || istype(moveto, /turf/simulated/shuttle/floor) || istype(moveto, /turf/unsimulated/floor)) step_towards(src, moveto)
|
||||
if(src.aggressive) seek_target()
|
||||
steps += 1
|
||||
if (steps == rand(5,20)) src.task = "thinking"
|
||||
|
||||
|
||||
Bump(M as mob|obj)//TODO: Add access levels here
|
||||
spawn(0)
|
||||
if((istype(M, /obj/machinery/door)))
|
||||
if(src.opensdoors)
|
||||
M:open()
|
||||
src.frustration = 0
|
||||
else src.frustration ++
|
||||
if((istype(M, /mob/living/)) && (!src.anchored))
|
||||
src.loc = M:loc
|
||||
src.frustration = 0
|
||||
return
|
||||
return
|
||||
|
||||
|
||||
Bumped(M as mob|obj)
|
||||
spawn(0)
|
||||
var/turf/T = get_turf(src)
|
||||
M:loc = T
|
||||
|
||||
|
||||
proc/seek_target()
|
||||
src.anchored = 0
|
||||
var/T = null
|
||||
for(var/mob/living/C in view(src.seekrange,src))//TODO: mess with this
|
||||
if (src.target)
|
||||
src.task = "chasing"
|
||||
break
|
||||
|
||||
// Ignore syndicates and traitors if specified
|
||||
if(!atksynd && C.mind)
|
||||
var/datum/mind/synd_mind = C.mind
|
||||
if( synd_mind.special_role == "Syndicate" || synd_mind.special_role == "traitor" )
|
||||
continue
|
||||
if((C.name == src.oldtarget_name) && (world.time < src.last_found + 100)) continue
|
||||
if(istype(C, /mob/living/carbon/) && !src.atkcarbon) continue
|
||||
if(istype(C, /mob/living/silicon/) && !src.atksilicon) continue
|
||||
if(atkreq)
|
||||
if(src.allowed(C)) continue
|
||||
if(C.health < 0) continue
|
||||
if(istype(C, /mob/living/carbon/) && src.atkcarbon) src.attack = 1
|
||||
if(istype(C, /mob/living/silicon/) && src.atksilicon) src.attack = 1
|
||||
if(atkreq)
|
||||
if(!src.allowed(C)) src.attack = 1
|
||||
if(src.attack)
|
||||
T = C
|
||||
break
|
||||
|
||||
if(!src.attack)
|
||||
for(var/obj/effect/critter/C in view(src.seekrange,src))
|
||||
if(!src.atkcritter) continue
|
||||
if(C.health <= 0) continue
|
||||
if(src.atkcritter)
|
||||
if((istype(C, src.type) && !src.atksame) || (C == src)) continue
|
||||
src.attack = 1
|
||||
if(src.attack)
|
||||
T = C
|
||||
break
|
||||
|
||||
if(!src.attack)
|
||||
for(var/obj/mecha/C in view(src.seekrange,src))
|
||||
if(!C.occupant) continue
|
||||
|
||||
if(atkreq && C.occupant)
|
||||
if(src.allowed(C.occupant)) continue
|
||||
|
||||
if(!atksynd && C.occupant)
|
||||
if(C.occupant.mind)
|
||||
var/datum/mind/synd_mind = C.occupant.mind
|
||||
if( synd_mind.special_role == "Syndicate" || synd_mind.special_role == "traitor" )
|
||||
continue
|
||||
|
||||
if(!src.atkmech) continue
|
||||
if(C.health <= 0) continue
|
||||
if(src.atkmech) src.attack = 1
|
||||
if(src.attack)
|
||||
T = C
|
||||
break
|
||||
|
||||
if(src.attack)
|
||||
src.target = T
|
||||
src.oldtarget_name = T:name
|
||||
src.task = "chasing"
|
||||
return
|
||||
|
||||
|
||||
proc/ChaseAttack()
|
||||
for(var/mob/O in viewers(src, null))
|
||||
O.show_message("\red <B>[src]</B> [src.angertext] at [src.target]!", 1)
|
||||
return
|
||||
|
||||
|
||||
proc/RunAttack()
|
||||
src.attacking = 1
|
||||
if(ismob(src.target))
|
||||
|
||||
for(var/mob/O in viewers(src, null))
|
||||
O.show_message("\red <B>[src]</B> [src.attacktext] [src.target]!", 1)
|
||||
|
||||
var/damage = rand(melee_damage_lower, melee_damage_upper)
|
||||
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/H = target
|
||||
var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg")
|
||||
var/datum/organ/external/affecting = H.get_organ(ran_zone(dam_zone))
|
||||
H.apply_damage(damage, BRUTE, affecting, H.run_armor_check(affecting, "melee"))
|
||||
else if(isliving(target))
|
||||
var/mob/living/L = target
|
||||
L.adjustBruteLoss(damage)
|
||||
|
||||
if(attack_sound)
|
||||
playsound(loc, attack_sound, 50, 1, -1)
|
||||
|
||||
AfterAttack(target)
|
||||
|
||||
|
||||
if(isobj(src.target))
|
||||
if(istype(target, /obj/mecha))
|
||||
//src.target:take_damage(rand(melee_damage_lower,melee_damage_upper))
|
||||
src.target:attack_critter(src)
|
||||
else
|
||||
src.target:TakeDamage(rand(melee_damage_lower,melee_damage_upper))
|
||||
spawn(attack_speed)
|
||||
src.attacking = 0
|
||||
return
|
||||
|
||||
|
||||
|
||||
/*TODO: Figure out how to handle special things like this dont really want to give it to every critter
|
||||
/obj/effect/critter/proc/CritterTeleport(var/telerange, var/dospark, var/dosmoke)
|
||||
if (!src.alive) return
|
||||
var/list/randomturfs = new/list()
|
||||
for(var/turf/T in orange(src, telerange))
|
||||
if(istype(T, /turf/space) || T.density) continue
|
||||
randomturfs.Add(T)
|
||||
src.loc = pick(randomturfs)
|
||||
if (dospark)
|
||||
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
|
||||
s.set_up(5, 1, src)
|
||||
s.start()
|
||||
if (dosmoke)
|
||||
var/datum/effect/system/harmless_smoke_spread/smoke = new /datum/effect/system/harmless_smoke_spread()
|
||||
smoke.set_up(10, 0, src.loc)
|
||||
smoke.start()
|
||||
src.task = "thinking"
|
||||
*/
|
||||
@@ -1,128 +0,0 @@
|
||||
/*
|
||||
Contains the procs that control attacking critters
|
||||
*/
|
||||
/obj/effect/critter
|
||||
|
||||
attackby(obj/item/weapon/W as obj, mob/living/user as mob)
|
||||
..()
|
||||
if(!src.alive)
|
||||
Harvest(W,user)
|
||||
return
|
||||
var/damage = 0
|
||||
switch(W.damtype)
|
||||
if("fire") damage = W.force * firevuln
|
||||
if("brute") damage = W.force * brutevuln
|
||||
TakeDamage(damage)
|
||||
if(src.defensive && alive) Target_Attacker(user)
|
||||
return
|
||||
|
||||
|
||||
attack_hand(var/mob/user as mob)
|
||||
if (!src.alive) ..()
|
||||
if (user.a_intent == "hurt")
|
||||
TakeDamage(rand(1,2) * brutevuln)
|
||||
|
||||
if(istype(user, /mob/living/carbon/human))
|
||||
for(var/mob/O in viewers(src, null))
|
||||
O.show_message("\red <B>[user] has punched [src]!</B>", 1)
|
||||
playsound(src.loc, pick('sound/weapons/punch1.ogg','sound/weapons/punch2.ogg','sound/weapons/punch3.ogg','sound/weapons/punch4.ogg'), 100, 1)
|
||||
|
||||
else if(istype(user, /mob/living/carbon/alien/humanoid))
|
||||
for(var/mob/O in viewers(src, null))
|
||||
O.show_message("\red <B>[user] has slashed at [src]!</B>", 1)
|
||||
playsound(src.loc, 'sound/weapons/slice.ogg', 25, 1, -1)
|
||||
|
||||
else
|
||||
for(var/mob/O in viewers(src, null))
|
||||
O.show_message("\red <B>[user] has bit [src]!</B>", 1)
|
||||
|
||||
if(src.defensive) Target_Attacker(user)
|
||||
else
|
||||
for(var/mob/O in viewers(src, null))
|
||||
O.show_message("\blue [user] touches [src]!", 1)
|
||||
|
||||
|
||||
proc/Target_Attacker(var/target)
|
||||
if(!target) return
|
||||
src.target = target
|
||||
src.oldtarget_name = target:name
|
||||
if(task != "chasing" && task != "attacking")
|
||||
if(angertext && angertext != "")
|
||||
for(var/mob/O in viewers(src, null))
|
||||
O.show_message("\red <b>[src]</b> [src.angertext] at [target:name]!", 1)
|
||||
src.task = "chasing"
|
||||
return
|
||||
|
||||
|
||||
proc/TakeDamage(var/damage = 0)
|
||||
var/tempdamage = (damage-armor)
|
||||
if(tempdamage > 0)
|
||||
src.health -= tempdamage
|
||||
else
|
||||
src.health--
|
||||
if(src.health <= 0)
|
||||
src.Die()
|
||||
|
||||
|
||||
proc/Die()
|
||||
if (!src.alive) return
|
||||
src.icon_state += "-dead"
|
||||
src.alive = 0
|
||||
src.anchored = 0
|
||||
src.density = 0
|
||||
walk_to(src,0)
|
||||
src.visible_message("<b>[src]</b> [deathtext]")
|
||||
|
||||
|
||||
proc/Harvest(var/obj/item/weapon/W, var/mob/living/user)
|
||||
if((!W) || (!user)) return 0
|
||||
if(src.alive) return 0
|
||||
return 1
|
||||
|
||||
|
||||
bullet_act(var/obj/item/projectile/Proj)
|
||||
TakeDamage(Proj.damage)
|
||||
..()
|
||||
|
||||
|
||||
ex_act(severity)
|
||||
switch(severity)
|
||||
if(1.0)
|
||||
src.Die()
|
||||
return
|
||||
if(2.0)
|
||||
TakeDamage(20)
|
||||
return
|
||||
return
|
||||
|
||||
|
||||
emp_act(serverity)
|
||||
switch(serverity)
|
||||
if(1.0)
|
||||
src.Die()
|
||||
return
|
||||
if(2.0)
|
||||
TakeDamage(20)
|
||||
return
|
||||
return
|
||||
|
||||
|
||||
meteorhit()
|
||||
src.Die()
|
||||
return
|
||||
|
||||
|
||||
blob_act()
|
||||
if(prob(25))
|
||||
src.Die()
|
||||
return
|
||||
|
||||
attack_animal(mob/living/simple_animal/M as mob)
|
||||
if(M.melee_damage_upper == 0)
|
||||
M.emote("[M.friendly] [src]")
|
||||
else
|
||||
for(var/mob/O in viewers(src, null))
|
||||
O.show_message("\red <B>[M]</B> [M.attacktext] [src]!", 1)
|
||||
var/damage = rand(M.melee_damage_lower, M.melee_damage_upper)
|
||||
TakeDamage(damage)
|
||||
return
|
||||
@@ -1,127 +0,0 @@
|
||||
/obj/effect/critter/creature
|
||||
name = "creature"
|
||||
desc = "A sanity-destroying otherthing."
|
||||
icon_state = "otherthing"
|
||||
health = 80
|
||||
max_health = 80
|
||||
aggressive = 1
|
||||
defensive = 1
|
||||
wanderer = 1
|
||||
opensdoors = 1
|
||||
atkcarbon = 1
|
||||
atksilicon = 1
|
||||
atkcritter = 1
|
||||
atkmech = 1
|
||||
atksame = 1
|
||||
firevuln = 1
|
||||
brutevuln = 1
|
||||
melee_damage_lower = 25
|
||||
melee_damage_upper = 50
|
||||
angertext = "runs"
|
||||
attacktext = "chomps"
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
|
||||
|
||||
/obj/effect/critter/roach
|
||||
name = "cockroach"
|
||||
desc = "An unpleasant insect that lives in filthy places."
|
||||
icon_state = "roach"
|
||||
health = 5
|
||||
max_health = 5
|
||||
aggressive = 0
|
||||
defensive = 1
|
||||
wanderer = 1
|
||||
atkcarbon = 1
|
||||
atksilicon = 0
|
||||
attacktext = "bites"
|
||||
|
||||
Die()
|
||||
..()
|
||||
del(src)
|
||||
|
||||
/obj/effect/critter/spore
|
||||
name = "plasma spore"
|
||||
desc = "A barely intelligent colony of organisms. Very volatile."
|
||||
icon_state = "spore"
|
||||
density = 1
|
||||
health = 1
|
||||
max_health = 1
|
||||
aggressive = 0
|
||||
defensive = 0
|
||||
wanderer = 1
|
||||
atkcarbon = 0
|
||||
atksilicon = 0
|
||||
firevuln = 2
|
||||
brutevuln = 2
|
||||
|
||||
|
||||
/* process()
|
||||
if(prob(50))
|
||||
TakeDamage(1)
|
||||
..()*/
|
||||
|
||||
|
||||
Die()
|
||||
src.visible_message("<b>[src]</b> ruptures and explodes!")
|
||||
src.alive = 0
|
||||
var/turf/T = get_turf(src.loc)
|
||||
if(T)
|
||||
T.hotspot_expose(700,125)
|
||||
explosion(T, -1, -1, 2, 3)
|
||||
del src
|
||||
|
||||
|
||||
ex_act(severity)
|
||||
src.Die()
|
||||
|
||||
|
||||
/obj/effect/critter/blob
|
||||
name = "blob"
|
||||
desc = "Some blob thing."
|
||||
icon_state = "blob"
|
||||
pass_flags = PASSBLOB
|
||||
health = 20
|
||||
max_health = 20
|
||||
aggressive = 1
|
||||
defensive = 0
|
||||
wanderer = 1
|
||||
atkcarbon = 1
|
||||
atksilicon = 1
|
||||
firevuln = 2
|
||||
brutevuln = 0.5
|
||||
melee_damage_lower = 2
|
||||
melee_damage_upper = 8
|
||||
angertext = "charges"
|
||||
attacktext = "hits"
|
||||
attack_sound = 'sound/weapons/genhit1.ogg'
|
||||
var/obj/effect/blob/factory/factory = null
|
||||
|
||||
New(loc, var/obj/effect/blob/factory/linked_node)
|
||||
if(istype(linked_node))
|
||||
factory = linked_node
|
||||
factory.spores += src
|
||||
..(loc)
|
||||
return
|
||||
|
||||
Die()
|
||||
if(factory)
|
||||
factory.spores -= src
|
||||
..()
|
||||
del(src)
|
||||
|
||||
|
||||
|
||||
/obj/effect/critter/lizard
|
||||
name = "Lizard"
|
||||
desc = "A cute tiny lizard."
|
||||
icon_state = "lizard"
|
||||
health = 5
|
||||
max_health = 5
|
||||
aggressive = 0
|
||||
defensive = 1
|
||||
wanderer = 1
|
||||
opensdoors = 0
|
||||
atkcarbon = 1
|
||||
atksilicon = 1
|
||||
attacktext = "bites"
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
see_invisible = SEE_INVISIBLE_LEVEL_TWO
|
||||
var/ghost_name = "Unknown"
|
||||
var/creating_blob = 0
|
||||
faction = "blob"
|
||||
|
||||
|
||||
New()
|
||||
@@ -251,3 +252,7 @@
|
||||
B << "Check your Blob verbs and hit Create Node to build a node."
|
||||
spawn(10)
|
||||
del(G_found)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -438,10 +438,6 @@ Radar-related things
|
||||
if(M.stat == 2) continue
|
||||
found_targets.Add(M)
|
||||
|
||||
for(var/obj/effect/critter/C in orange(max_dist, distance_ref))
|
||||
if(!C.alive) continue
|
||||
found_targets.Add(C)
|
||||
|
||||
for(var/obj/mecha/M in orange(max_dist, distance_ref))
|
||||
if(!M.occupant) continue
|
||||
found_targets.Add(M)
|
||||
@@ -495,10 +491,6 @@ Radar-related things
|
||||
blip.icon_state = "unknownblip"
|
||||
blip.name = "Unknown Organism"
|
||||
|
||||
else if(istype(A, /obj/effect/critter))
|
||||
blip.icon_state = "unknownblip"
|
||||
blip.name = "Unknown Organism"
|
||||
|
||||
else if(istype(A, /obj/mecha))
|
||||
blip.icon_state = "roboblip"
|
||||
blip.name = "Robotic Organism"
|
||||
|
||||
17
code/modules/mob/living/simple_animal/friendly/lizard.dm
Normal file
17
code/modules/mob/living/simple_animal/friendly/lizard.dm
Normal file
@@ -0,0 +1,17 @@
|
||||
/mob/living/simple_animal/lizard
|
||||
name = "Lizard"
|
||||
desc = "A cute tiny lizard."
|
||||
icon = 'icons/mob/critter.dmi'
|
||||
icon_state = "lizard"
|
||||
icon_living = "lizard"
|
||||
icon_dead = "lizard-dead"
|
||||
speak_emote = list("hisses")
|
||||
health = 5
|
||||
maxHealth = 5
|
||||
attacktext = "bites"
|
||||
attacktext = "bites"
|
||||
melee_damage_lower = 1
|
||||
melee_damage_upper = 2
|
||||
response_help = "pets"
|
||||
response_disarm = "shoos"
|
||||
response_harm = "stomps on"
|
||||
@@ -13,5 +13,3 @@
|
||||
response_disarm = "pushes aside the"
|
||||
response_harm = "smacks the"
|
||||
harm_intent_damage = 5
|
||||
|
||||
/mob/living/simple_animal/tomato
|
||||
15
code/modules/mob/living/simple_animal/hostile/creature.dm
Normal file
15
code/modules/mob/living/simple_animal/hostile/creature.dm
Normal file
@@ -0,0 +1,15 @@
|
||||
/mob/living/simple_animal/hostile/creature
|
||||
name = "creature"
|
||||
desc = "A sanity-destroying otherthing."
|
||||
icon = 'icons/mob/critter.dmi'
|
||||
speak_emote = list("gibbers")
|
||||
icon_state = "otherthing"
|
||||
icon_living = "otherthing"
|
||||
icon_dead = "otherthing-dead"
|
||||
health = 80
|
||||
maxHealth = 80
|
||||
melee_damage_lower = 25
|
||||
melee_damage_upper = 50
|
||||
attacktext = "chomps"
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
faction = "creature"
|
||||
@@ -136,8 +136,9 @@
|
||||
/mob/living/simple_animal/hostile/viscerator
|
||||
name = "viscerator"
|
||||
desc = "A small, twin-bladed machine capable of inflicting very deadly lacerations."
|
||||
icon_state = "viscerator"
|
||||
icon_living = "viscerator"
|
||||
icon = 'icons/mob/critter.dmi'
|
||||
icon_state = "viscerator_attack"
|
||||
icon_living = "viscerator_attack"
|
||||
pass_flags = PASSTABLE
|
||||
health = 15
|
||||
maxHealth = 15
|
||||
|
||||
@@ -789,7 +789,7 @@ datum
|
||||
required_other = 4
|
||||
on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
|
||||
var/list/critters = typesof(/obj/effect/critter) - /obj/effect/critter // list of possible critters
|
||||
var/list/critters = typesof(/mob/living/simple_animal/hostile) - /mob/living/simple_animal/hostile // list of possible hostile mobs
|
||||
|
||||
playsound(get_turf_loc(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1)
|
||||
|
||||
@@ -799,7 +799,7 @@ datum
|
||||
|
||||
for(var/i = 1, i <= created_volume, i++)
|
||||
var/chosen = pick(critters)
|
||||
var/obj/effect/critter/C = new chosen
|
||||
var/mob/living/simple_animal/hostile/C = new chosen
|
||||
C.loc = get_turf_loc(holder.my_atom)
|
||||
if(prob(50))
|
||||
for(var/j = 1, j <= rand(1, 3), j++)
|
||||
|
||||
@@ -94,7 +94,7 @@
|
||||
"bP" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/awaymission/research)
|
||||
"bQ" = (/obj/structure/filingcabinet/filingcabinet,/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/research)
|
||||
"bR" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window/eastleft,/obj/machinery/door/window/westright,/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/research)
|
||||
"bS" = (/obj/effect/critter/lizard,/turf/simulated/floor/grass,/area/awaymission/research)
|
||||
"bS" = (/mob/living/simple_animal/lizard,/turf/simulated/floor/grass,/area/awaymission/research)
|
||||
"bT" = (/turf/simulated/floor/grass,/area/awaymission/research)
|
||||
"bU" = (/mob/living/carbon/monkey,/turf/simulated/floor/grass,/area/awaymission/research)
|
||||
"bV" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-burst_r (EAST)"; icon_state = "burst_r"; dir = 4},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/awaymission/syndishuttle)
|
||||
@@ -106,7 +106,7 @@
|
||||
"cb" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/awaymission/research)
|
||||
"cc" = (/mob/living/carbon/alien/humanoid/sentinel{fireloss = 200; stat = 2},/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/research)
|
||||
"cd" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/awaymission/research)
|
||||
"ce" = (/obj/effect/critter/creature{name = "Experiment 35b"},/turf/simulated/floor,/area/awaymission/research)
|
||||
"ce" = (/mob/living/simple_animal/hostile/creature{name = "Experiment 35b"},/turf/simulated/floor,/area/awaymission/research)
|
||||
"cf" = (/obj/machinery/dna_scannernew,/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/research)
|
||||
"cg" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/grass,/area/awaymission/research)
|
||||
"ch" = (/obj/machinery/emitter{anchored = 1; state = 2},/turf/simulated/floor{icon_state = "dark"},/area/awaymission/research)
|
||||
|
||||
@@ -134,16 +134,16 @@
|
||||
"cD" = (/obj/structure/table/woodentable,/obj/item/clothing/gloves/yellow,/obj/item/device/multitool,/turf/simulated/floor/wood,/area/awaymission/wwgov)
|
||||
"cE" = (/obj/structure/stool/bed/chair/wood/normal{dir = 4},/turf/simulated/floor/wood,/area/awaymission/wwgov)
|
||||
"cF" = (/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/awaymission/wwgov)
|
||||
"cG" = (/obj/effect/critter/creature,/turf/simulated/floor{tag = "icon-stage_bleft"; icon_state = "stage_bleft"},/area/awaymission/wwgov)
|
||||
"cG" = (/mob/living/simple_animal/hostile/creature,/turf/simulated/floor{tag = "icon-stage_bleft"; icon_state = "stage_bleft"},/area/awaymission/wwgov)
|
||||
"cH" = (/obj/effect/landmark/corpse/chef{mobname = "Chef"},/turf/simulated/floor{tag = "icon-stage_bleft"; icon_state = "stage_bleft"},/area/awaymission/wwgov)
|
||||
"cI" = (/obj/structure/bookcase{tag = "icon-book-5"; icon_state = "book-5"},/turf/simulated/floor/wood,/area/awaymission/wwmines)
|
||||
"cJ" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/condiment/peppermill,/turf/simulated/floor/wood,/area/awaymission/wwmines)
|
||||
"cK" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/condiment/saltshaker,/turf/simulated/floor/wood,/area/awaymission/wwmines)
|
||||
"cL" = (/obj/structure/table/woodentable,/obj/item/weapon/twohanded/dualsaber,/turf/simulated/floor/wood,/area/awaymission/wwgov)
|
||||
"cM" = (/obj/effect/landmark/corpse/miner/rig,/turf/simulated/floor/wood,/area/awaymission/wwgov)
|
||||
"cN" = (/obj/effect/critter/creature,/turf/simulated/floor/wood,/area/awaymission/wwgov)
|
||||
"cN" = (/mob/living/simple_animal/hostile/creature,/turf/simulated/floor/wood,/area/awaymission/wwgov)
|
||||
"cO" = (/obj/structure/mineral_door/wood{tag = "icon-woodopening"; icon_state = "woodopening"},/turf/simulated/floor/wood,/area/awaymission/wwgov)
|
||||
"cP" = (/obj/effect/critter/creature,/turf/simulated/floor/carpet,/area/awaymission/wwgov)
|
||||
"cP" = (/mob/living/simple_animal/hostile/creature,/turf/simulated/floor/carpet,/area/awaymission/wwgov)
|
||||
"cQ" = (/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)"; icon_state = "fwindow"; dir = 8},/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)"; icon_state = "fwindow"; dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{tag = "icon-fwindow"; icon_state = "fwindow"},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1"; icon_state = "ironsand1"},/area/awaymission/wwgov)
|
||||
"cR" = (/obj/structure/stool/bed/chair/wood/wings{dir = 4},/turf/simulated/floor/wood,/area/awaymission/wwgov)
|
||||
"cS" = (/obj/structure/window/reinforced{tag = "icon-fwindow (EAST)"; icon_state = "fwindow"; dir = 4},/obj/structure/window/reinforced{tag = "icon-fwindow (WEST)"; icon_state = "fwindow"; dir = 8},/obj/structure/grille,/obj/structure/window/reinforced{tag = "icon-fwindow"; icon_state = "fwindow"},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1"; icon_state = "ironsand1"},/area/awaymission/wwgov)
|
||||
@@ -181,7 +181,7 @@
|
||||
"dy" = (/obj/effect/landmark/corpse/miner/rig,/turf/simulated/floor/wood,/area/awaymission/wwmines)
|
||||
"dz" = (/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand12"; icon_state = "ironsand12"},/area/awaymission/wwgov)
|
||||
"dA" = (/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand14"; icon_state = "ironsand14"},/area/awaymission/wwgov)
|
||||
"dB" = (/obj/structure/toilet,/obj/effect/critter/creature,/turf/simulated/floor{tag = "icon-white"; icon_state = "white"},/area/awaymission/wwgov)
|
||||
"dB" = (/obj/structure/toilet,/mob/living/simple_animal/hostile/creature,/turf/simulated/floor{tag = "icon-white"; icon_state = "white"},/area/awaymission/wwgov)
|
||||
"dC" = (/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand9"; icon_state = "ironsand9"},/area/awaymission/wwgov)
|
||||
"dD" = (/obj/structure/mineral_door/wood{tag = "icon-woodopening"; icon_state = "woodopening"},/turf/simulated/floor/plating/ironsand{tag = "icon-ironsand1"; icon_state = "ironsand1"},/area/awaymission/wwgov)
|
||||
"dE" = (/obj/structure/largecrate,/turf/simulated/floor/wood,/area/awaymission/wwmines)
|
||||
@@ -323,7 +323,7 @@
|
||||
"gk" = (/mob/living/simple_animal/hostile/syndicate,/turf/simulated/floor/wood,/area/awaymission/wwmines)
|
||||
"gl" = (/obj/machinery/photocopier,/turf/simulated/floor/wood,/area/awaymission/wwmines)
|
||||
"gm" = (/obj/item/weapon/gun/projectile,/turf/simulated/floor/wood,/area/awaymission/wwmines)
|
||||
"gn" = (/obj/effect/critter/creature,/turf/simulated/floor/grass,/area/awaymission/wwgov)
|
||||
"gn" = (/mob/living/simple_animal/hostile/creature,/turf/simulated/floor/grass,/area/awaymission/wwgov)
|
||||
"go" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/grass,/area/awaymission/wwgov)
|
||||
"gp" = (/obj/effect/decal/cleanable/blood/splatter,/obj/effect/forcefield{desc = "You can't get in. Heh."; layer = 1; name = "Blocker"},/turf/simulated/mineral,/area/awaymission/wwmines)
|
||||
"gq" = (/obj/effect/decal/cleanable/blood/gibs/up,/turf/simulated/floor/wood,/area/awaymission/wwmines)
|
||||
|
||||
@@ -7165,9 +7165,9 @@
|
||||
"cHO" = (/obj/structure/table/woodentable,/obj/item/weapon/spacecash,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
|
||||
"cHP" = (/obj/structure/rack,/obj/item/clothing/suit/wizrobe/red,/obj/item/clothing/shoes/sandal,/obj/item/clothing/head/wizard/red,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station)
|
||||
"cHQ" = (/obj/structure/rack,/obj/item/clothing/suit/wizrobe/magusred,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station)
|
||||
"cHR" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
|
||||
"cHS" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
|
||||
"cHT" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
|
||||
"cHR" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (WEST)"; icon_state = "fakewindows"; dir = 8},/area/wizard_station)
|
||||
"cHS" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (WEST)"; icon_state = "fakewindows2"; dir = 8},/area/wizard_station)
|
||||
"cHT" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows (NORTHEAST)"; icon_state = "fakewindows"; dir = 5},/area/wizard_station)
|
||||
"cHU" = (/obj/item/trash/raisins,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
|
||||
"cHV" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
|
||||
"cHW" = (/obj/effect/showcase,/turf/unsimulated/floor{dir = 1; icon_state = "chapel"},/area/wizard_station)
|
||||
@@ -7176,16 +7176,16 @@
|
||||
"cHZ" = (/obj/effect/showcase,/obj/effect/decal/cleanable/cobweb2,/turf/unsimulated/floor{dir = 4; icon_state = "chapel"},/area/wizard_station)
|
||||
"cIa" = (/obj/effect/decal/remains/human,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station)
|
||||
"cIb" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station)
|
||||
"cIc" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
|
||||
"cIc" = (/turf/unsimulated/wall/fakeglass{tag = "icon-fakewindows2 (NORTH)"; icon_state = "fakewindows2"; dir = 1},/area/wizard_station)
|
||||
"cId" = (/turf/unsimulated/floor{dir = 8; icon_state = "chapel"},/area/wizard_station)
|
||||
"cIe" = (/obj/effect/decal/cleanable/blood,/turf/unsimulated/floor{icon_state = "chapel"},/area/wizard_station)
|
||||
"cIf" = (/mob/living/carbon/monkey,/turf/unsimulated/floor{dir = 8; icon_state = "chapel"},/area/wizard_station)
|
||||
"cIg" = (/turf/unsimulated/floor{icon_state = "chapel"},/area/wizard_station)
|
||||
"cIh" = (/obj/effect/critter/creature{name = "Experiment 35b"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station)
|
||||
"cIh" = (/mob/living/simple_animal/hostile/creature{name = "Experiment 35b"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station)
|
||||
"cIi" = (/turf/unsimulated/floor{dir = 1; icon_state = "chapel"},/area/wizard_station)
|
||||
"cIj" = (/turf/unsimulated/floor{dir = 4; icon_state = "chapel"},/area/wizard_station)
|
||||
"cIk" = (/obj/effect/decal/cleanable/molten_item,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station)
|
||||
"cIl" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
|
||||
"cIl" = (/turf/unsimulated/wall/fakeglass,/area/wizard_station)
|
||||
"cIm" = (/obj/item/trash/chips,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
|
||||
"cIn" = (/obj/structure/rack,/obj/item/weapon/kitchenknife/ritual,/turf/unsimulated/floor{dir = 8; icon_state = "chapel"},/area/wizard_station)
|
||||
"cIo" = (/obj/effect/decal/cleanable/blood,/turf/unsimulated/floor{dir = 8; icon_state = "chapel"},/area/wizard_station)
|
||||
|
||||
@@ -112,7 +112,6 @@
|
||||
#define FILE_DIR "code/modules/clothing/suits"
|
||||
#define FILE_DIR "code/modules/clothing/under"
|
||||
#define FILE_DIR "code/modules/clothing/under/jobs"
|
||||
#define FILE_DIR "code/modules/critters"
|
||||
#define FILE_DIR "code/modules/detectivework"
|
||||
#define FILE_DIR "code/modules/flufftext"
|
||||
#define FILE_DIR "code/modules/food"
|
||||
@@ -211,7 +210,9 @@
|
||||
#define FILE_DIR "icons/vending_icons"
|
||||
#define FILE_DIR "interface"
|
||||
#define FILE_DIR "maps"
|
||||
#define FILE_DIR "maps/backup"
|
||||
#define FILE_DIR "maps/RandomZLevels"
|
||||
#define FILE_DIR "maps/RandomZLevels/backup"
|
||||
#define FILE_DIR "music"
|
||||
#define FILE_DIR "music/interface"
|
||||
#define FILE_DIR "sound"
|
||||
@@ -938,10 +939,6 @@
|
||||
#include "code\modules\clothing\under\jobs\engineering.dm"
|
||||
#include "code\modules\clothing\under\jobs\medsci.dm"
|
||||
#include "code\modules\clothing\under\jobs\security.dm"
|
||||
#include "code\modules\critters\critter.dm"
|
||||
#include "code\modules\critters\critter_AI.dm"
|
||||
#include "code\modules\critters\critter_defenses.dm"
|
||||
#include "code\modules\critters\critters.dm"
|
||||
#include "code\modules\detectivework\detective_work.dm"
|
||||
#include "code\modules\detectivework\evidence.dm"
|
||||
#include "code\modules\detectivework\footprints_and_rag.dm"
|
||||
@@ -1123,12 +1120,14 @@
|
||||
#include "code\modules\mob\living\simple_animal\friendly\cat.dm"
|
||||
#include "code\modules\mob\living\simple_animal\friendly\corgi.dm"
|
||||
#include "code\modules\mob\living\simple_animal\friendly\crab.dm"
|
||||
#include "code\modules\mob\living\simple_animal\friendly\lizard.dm"
|
||||
#include "code\modules\mob\living\simple_animal\friendly\mouse.dm"
|
||||
#include "code\modules\mob\living\simple_animal\friendly\mushroom.dm"
|
||||
#include "code\modules\mob\living\simple_animal\friendly\tomato.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\alien.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\bear.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\carp.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\creature.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\faithless.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\hivebot.dm"
|
||||
#include "code\modules\mob\living\simple_animal\hostile\hostile.dm"
|
||||
|
||||
Reference in New Issue
Block a user