Merge pull request #6962 from davipatury/effect-to-structure

Ports /tg/ obj damage system - Part 1
This commit is contained in:
Fox McCloud
2017-03-30 17:34:26 -04:00
committed by GitHub
64 changed files with 470 additions and 473 deletions
+2 -2
View File
@@ -1,7 +1,7 @@
/datum/event/blob
announceWhen = 60
endWhen = 120
var/obj/effect/blob/core/Blob
var/obj/structure/blob/core/Blob
/datum/event/blob/announce()
event_announcement.Announce("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/AI/outbreak5.ogg')
@@ -14,7 +14,7 @@
var/mob/C
if(candidates.len)
C = pick(candidates)
Blob = new /obj/effect/blob/core(T, new_overmind=C.client)
Blob = new /obj/structure/blob/core(T, new_overmind=C.client)
for(var/i in 1 to 5)
Blob.process()
else
+2 -2
View File
@@ -77,7 +77,7 @@
max_number = 6
vermstring = "lizards"
if(VERM_SPIDERS)
spawn_types = list(/obj/effect/spider/spiderling)
spawn_types = list(/obj/structure/spider/spiderling)
max_number = 3
vermstring = "spiders"
@@ -89,7 +89,7 @@
num--
if(vermin == VERM_SPIDERS)
var/obj/effect/spider/spiderling/S = new(T)
var/obj/structure/spider/spiderling/S = new(T)
S.amount_grown = -1
else
var/spawn_type = pick(spawn_types)
+81 -81
View File
@@ -6,7 +6,7 @@
/datum/event/spacevine/start()
var/list/turfs = list() //list of all the empty floor turfs in the hallway areas
var/obj/effect/spacevine/SV = new()
var/obj/structure/spacevine/SV = new()
for(var/area/hallway/A in world)
for(var/turf/F in A)
@@ -17,7 +17,7 @@
if(turfs.len) //Pick a turf to spawn at if we can
var/turf/T = pick(turfs)
var/obj/effect/spacevine_controller/SC = new /obj/effect/spacevine_controller(T, , rand(30,70),rand(5,2)) //spawn a controller at turf
var/obj/structure/spacevine_controller/SC = new /obj/structure/spacevine_controller(T, , rand(30,70),rand(5,2)) //spawn a controller at turf
// Make the event start fun - give the vine a random hostile mutation
if(SC.vines.len)
@@ -40,11 +40,11 @@
// For stuff that isn't fun as a random-event vine
var/nofun = FALSE
/datum/spacevine_mutation/proc/add_mutation_to_vinepiece(obj/effect/spacevine/holder)
/datum/spacevine_mutation/proc/add_mutation_to_vinepiece(obj/structure/spacevine/holder)
holder.mutations |= src
holder.color = hue
/datum/spacevine_mutation/proc/remove_mutation_from_vinepiece(obj/effect/spacevine/holder)
/datum/spacevine_mutation/proc/remove_mutation_from_vinepiece(obj/structure/spacevine/holder)
holder.mutations -= src
var/datum/spacevine_mutation/oldmutation
if(holder.mutations.len)
@@ -53,46 +53,46 @@
else
holder.color = ""
/datum/spacevine_mutation/proc/process_mutation(obj/effect/spacevine/holder)
/datum/spacevine_mutation/proc/process_mutation(obj/structure/spacevine/holder)
return
/datum/spacevine_mutation/proc/process_temperature(obj/effect/spacevine/holder, temp, volume)
/datum/spacevine_mutation/proc/process_temperature(obj/structure/spacevine/holder, temp, volume)
return
/datum/spacevine_mutation/proc/on_birth(obj/effect/spacevine/holder)
/datum/spacevine_mutation/proc/on_birth(obj/structure/spacevine/holder)
return
/datum/spacevine_mutation/proc/on_grow(obj/effect/spacevine/holder)
/datum/spacevine_mutation/proc/on_grow(obj/structure/spacevine/holder)
return
/datum/spacevine_mutation/proc/on_death(obj/effect/spacevine/holder)
/datum/spacevine_mutation/proc/on_death(obj/structure/spacevine/holder)
return
/datum/spacevine_mutation/proc/on_deletion(obj/effect/spacevine/holder)
/datum/spacevine_mutation/proc/on_deletion(obj/structure/spacevine/holder)
return
/datum/spacevine_mutation/proc/on_hit(obj/effect/spacevine/holder, mob/hitter, obj/item/I, expected_damage)
/datum/spacevine_mutation/proc/on_hit(obj/structure/spacevine/holder, mob/hitter, obj/item/I, expected_damage)
. = expected_damage
/datum/spacevine_mutation/proc/on_cross(obj/effect/spacevine/holder, mob/crosser)
/datum/spacevine_mutation/proc/on_cross(obj/structure/spacevine/holder, mob/crosser)
return
/datum/spacevine_mutation/proc/on_chem(obj/effect/spacevine/holder, datum/reagent/R)
/datum/spacevine_mutation/proc/on_chem(obj/structure/spacevine/holder, datum/reagent/R)
return
/datum/spacevine_mutation/proc/on_eat(obj/effect/spacevine/holder, mob/living/eater)
/datum/spacevine_mutation/proc/on_eat(obj/structure/spacevine/holder, mob/living/eater)
return
/datum/spacevine_mutation/proc/on_spread(obj/effect/spacevine/holder, turf/target)
/datum/spacevine_mutation/proc/on_spread(obj/structure/spacevine/holder, turf/target)
return
/datum/spacevine_mutation/proc/on_buckle(obj/effect/spacevine/holder, mob/living/buckled)
/datum/spacevine_mutation/proc/on_buckle(obj/structure/spacevine/holder, mob/living/buckled)
return
/datum/spacevine_mutation/proc/on_explosion(severity, obj/effect/spacevine/holder)
/datum/spacevine_mutation/proc/on_explosion(severity, obj/structure/spacevine/holder)
return
/datum/spacevine_mutation/proc/on_search(severity, obj/effect/spacevine/holder)
/datum/spacevine_mutation/proc/on_search(severity, obj/structure/spacevine/holder)
return
@@ -140,7 +140,7 @@
/turf/simulated/floor/vines/ChangeTurf(turf/open/floor/T)
. = ..()
//Do this *after* the turf has changed as qdel in spacevines will call changeturf again if it hasn't
for(var/obj/effect/spacevine/SV in src)
for(var/obj/structure/spacevine/SV in src)
SV.wither()
/datum/spacevine_mutation/space_covering
@@ -156,22 +156,22 @@
/turf/space/transit
))
/datum/spacevine_mutation/space_covering/on_grow(obj/effect/spacevine/holder)
/datum/spacevine_mutation/space_covering/on_grow(obj/structure/spacevine/holder)
process_mutation(holder)
/datum/spacevine_mutation/space_covering/on_spread(obj/effect/spacevine/holder, turf/target)
if(target.type == /turf/space && !locate(/obj/effect/spacevine) in target)
/datum/spacevine_mutation/space_covering/on_spread(obj/structure/spacevine/holder, turf/target)
if(target.type == /turf/space && !locate(/obj/structure/spacevine) in target)
holder.master.spawn_spacevine_piece(target, holder)
. = TRUE
/datum/spacevine_mutation/space_covering/process_mutation(obj/effect/spacevine/holder)
/datum/spacevine_mutation/space_covering/process_mutation(obj/structure/spacevine/holder)
var/turf/T = get_turf(holder)
if(is_type_in_typecache(T, coverable_turfs))
var/currtype = T.type
T.ChangeTurf(/turf/simulated/floor/vines)
T.baseturf = currtype
/datum/spacevine_mutation/space_covering/on_deletion(obj/effect/spacevine/holder)
/datum/spacevine_mutation/space_covering/on_deletion(obj/structure/spacevine/holder)
var/turf/T = get_turf(holder)
if(istype(T, /turf/simulated/floor/vines))
T.ChangeTurf(T.baseturf)
@@ -181,8 +181,8 @@
hue = "#3333ff"
quality = MINOR_NEGATIVE
/datum/spacevine_mutation/bluespace/on_spread(obj/effect/spacevine/holder, turf/target)
if(holder.energy > 1 && !locate(/obj/effect/spacevine) in target)
/datum/spacevine_mutation/bluespace/on_spread(obj/structure/spacevine/holder, turf/target)
if(holder.energy > 1 && !locate(/obj/structure/spacevine) in target)
// Lose bluespace upon piercing a single tile, and drop it from our own mutations too
// Representing a loss in "high potential"
// also conveniently prevents this from spreading too crazily
@@ -197,7 +197,7 @@
quality = POSITIVE
severity = 4
/datum/spacevine_mutation/light/on_grow(obj/effect/spacevine/holder)
/datum/spacevine_mutation/light/on_grow(obj/structure/spacevine/holder)
if(holder.energy)
holder.set_light(severity)
@@ -207,14 +207,14 @@
severity = 10
quality = NEGATIVE
/datum/spacevine_mutation/toxicity/on_cross(obj/effect/spacevine/holder, mob/living/crosser)
/datum/spacevine_mutation/toxicity/on_cross(obj/structure/spacevine/holder, mob/living/crosser)
if(issilicon(crosser))
return
if(prob(severity) && istype(crosser) && !isvineimmune(crosser))
to_chat(crosser, "<span class='alert'>You accidently touch the vine and feel a strange sensation.</span>")
crosser.adjustToxLoss(5)
/datum/spacevine_mutation/toxicity/on_eat(obj/effect/spacevine/holder, mob/living/eater)
/datum/spacevine_mutation/toxicity/on_eat(obj/structure/spacevine/holder, mob/living/eater)
if(!isvineimmune(eater))
eater.adjustToxLoss(5)
@@ -226,7 +226,7 @@
// kaboom events aren't fun
nofun = TRUE
/datum/spacevine_mutation/explosive/on_explosion(explosion_severity, obj/effect/spacevine/holder)
/datum/spacevine_mutation/explosive/on_explosion(explosion_severity, obj/structure/spacevine/holder)
if(explosion_severity < 3)
qdel(holder)
else
@@ -234,7 +234,7 @@
spawn(5)
holder.wither()
/datum/spacevine_mutation/explosive/on_death(obj/effect/spacevine/holder, mob/hitter, obj/item/I)
/datum/spacevine_mutation/explosive/on_death(obj/structure/spacevine/holder, mob/hitter, obj/item/I)
explosion(holder.loc, 0, 0, severity, 0, 0)
/datum/spacevine_mutation/fire_proof
@@ -242,10 +242,10 @@
hue = "#ff8888"
quality = MINOR_NEGATIVE
/datum/spacevine_mutation/fire_proof/process_temperature(obj/effect/spacevine/holder, temp, volume)
/datum/spacevine_mutation/fire_proof/process_temperature(obj/structure/spacevine/holder, temp, volume)
return 1
/datum/spacevine_mutation/fire_proof/on_hit(obj/effect/spacevine/holder, mob/hitter, obj/item/I, expected_damage)
/datum/spacevine_mutation/fire_proof/on_hit(obj/structure/spacevine/holder, mob/hitter, obj/item/I, expected_damage)
if(I && I.damtype == "fire")
. = 0
else
@@ -256,8 +256,8 @@
hue = "#ff7700"
quality = MINOR_NEGATIVE
/datum/spacevine_mutation/vine_eating/on_spread(obj/effect/spacevine/holder, turf/target)
var/obj/effect/spacevine/prey = locate() in target
/datum/spacevine_mutation/vine_eating/on_spread(obj/structure/spacevine/holder, turf/target)
var/obj/structure/spacevine/prey = locate() in target
if(prey && !prey.mutations.Find(src)) //Eat all vines that are not of the same origin
prey.wither()
. = TRUE
@@ -268,20 +268,20 @@
severity = 3
quality = NEGATIVE
/datum/spacevine_mutation/aggressive_spread/on_spread(obj/effect/spacevine/holder, turf/target)
/datum/spacevine_mutation/aggressive_spread/on_spread(obj/structure/spacevine/holder, turf/target)
if(istype(target, /turf/simulated/wall/r_wall))
// Too tough to pierce - should lead to interesting spread patterns
return
// Bust through windows or other stuff blocking the way
if(!target.Enter(holder))
for(var/atom/movable/AM in target)
if(istype(AM, /obj/effect/spacevine) || !AM.density)
if(istype(AM, /obj/structure/spacevine) || !AM.density)
continue
AM.ex_act(severity)
target.ex_act(severity) // vine immunity handled at /mob/ex_act
. = TRUE
/datum/spacevine_mutation/aggressive_spread/on_buckle(obj/effect/spacevine/holder, mob/living/buckled)
/datum/spacevine_mutation/aggressive_spread/on_buckle(obj/structure/spacevine/holder, mob/living/buckled)
buckled.ex_act(severity)
/datum/spacevine_mutation/transparency
@@ -289,7 +289,7 @@
hue = ""
quality = POSITIVE
/datum/spacevine_mutation/transparency/on_grow(obj/effect/spacevine/holder)
/datum/spacevine_mutation/transparency/on_grow(obj/structure/spacevine/holder)
holder.set_opacity(0)
holder.alpha = 125
@@ -299,13 +299,13 @@
severity = 10
quality = NEGATIVE
/datum/spacevine_mutation/thorns/on_cross(obj/effect/spacevine/holder, mob/living/crosser)
/datum/spacevine_mutation/thorns/on_cross(obj/structure/spacevine/holder, mob/living/crosser)
if(prob(severity) && istype(crosser) && !isvineimmune(holder))
var/mob/living/M = crosser
M.adjustBruteLoss(5)
to_chat(M, "<span class='alert'>You cut yourself on the thorny vines.</span>")
/datum/spacevine_mutation/thorns/on_hit(obj/effect/spacevine/holder, mob/living/hitter, obj/item/I, expected_damage)
/datum/spacevine_mutation/thorns/on_hit(obj/structure/spacevine/holder, mob/living/hitter, obj/item/I, expected_damage)
if(prob(severity) && istype(hitter) && !isvineimmune(holder))
var/mob/living/M = hitter
M.adjustBruteLoss(5)
@@ -317,13 +317,13 @@
hue = "#997700"
quality = NEGATIVE
/datum/spacevine_mutation/woodening/on_grow(obj/effect/spacevine/holder)
/datum/spacevine_mutation/woodening/on_grow(obj/structure/spacevine/holder)
if(holder.energy)
holder.density = 1
holder.maxhealth = 100
holder.health = holder.maxhealth
/datum/spacevine_mutation/woodening/on_hit(obj/effect/spacevine/holder, mob/living/hitter, obj/item/I, expected_damage)
/datum/spacevine_mutation/woodening/on_hit(obj/structure/spacevine/holder, mob/living/hitter, obj/item/I, expected_damage)
if(!is_sharp(I))
. = expected_damage * 0.5
else
@@ -335,11 +335,11 @@
quality = NEGATIVE
severity = 10
/datum/spacevine_mutation/flowering/on_grow(obj/effect/spacevine/holder)
/datum/spacevine_mutation/flowering/on_grow(obj/structure/spacevine/holder)
if(holder.energy == 2 && prob(severity) && !locate(/obj/structure/alien/resin/flower_bud_enemy) in range(5,holder))
new /obj/structure/alien/resin/flower_bud_enemy(get_turf(holder))
/datum/spacevine_mutation/flowering/on_cross(obj/effect/spacevine/holder, mob/living/crosser)
/datum/spacevine_mutation/flowering/on_cross(obj/structure/spacevine/holder, mob/living/crosser)
if(prob(25))
holder.entangle(crosser)
@@ -349,7 +349,7 @@
hue = "#FF8080"
quality = MINOR_NEGATIVE
/datum/spacevine_mutation/virulent_spread/on_search(obj/effect/spacevine/holder)
/datum/spacevine_mutation/virulent_spread/on_search(obj/structure/spacevine/holder)
return 1
// Sure, let's encourage crew members to deliberately breed a highly dangerous
@@ -364,7 +364,7 @@
/obj/item/stack/sheet/metal = 1
)
/datum/spacevine_mutation/mineral/on_death(obj/effect/spacevine/holder)
/datum/spacevine_mutation/mineral/on_death(obj/structure/spacevine/holder)
if(!prob(drop_rate))
return
var/itemtype = pickweight(mineral_results)
@@ -403,7 +403,7 @@
)
// SPACE VINES (Note that this code is very similar to Biomass code)
/obj/effect/spacevine
/obj/structure/spacevine
name = "space vines"
desc = "An extremely expansionistic species of vine."
icon = 'icons/effects/spacevines.dmi'
@@ -416,14 +416,14 @@
var/health = 50
var/maxhealth = 50
var/energy = 0
var/obj/effect/spacevine_controller/master = null
var/obj/structure/spacevine_controller/master = null
var/list/mutations = list()
/obj/effect/spacevine/New()
/obj/structure/spacevine/New()
..()
color = "#ffffff"
/obj/effect/spacevine/examine(mob/user)
/obj/structure/spacevine/examine(mob/user)
..()
var/text = "This one is a"
if(mutations.len)
@@ -435,13 +435,13 @@
text += " vine."
to_chat(user, text)
/obj/effect/spacevine/proc/wither()
/obj/structure/spacevine/proc/wither()
for(var/datum/spacevine_mutation/SM in mutations)
SM.on_death(src)
qdel(src)
/obj/effect/spacevine/Destroy()
/obj/structure/spacevine/Destroy()
for(var/datum/spacevine_mutation/SM in mutations)
SM.on_deletion(src)
if(master)
@@ -460,11 +460,11 @@
unbuckle_mob()
return ..()
/obj/effect/spacevine/proc/add_mutation(datum/spacevine_mutation/mutation)
/obj/structure/spacevine/proc/add_mutation(datum/spacevine_mutation/mutation)
mutations |= mutation
color = mutation.hue
/obj/effect/spacevine/proc/on_chem_effect(datum/reagent/R)
/obj/structure/spacevine/proc/on_chem_effect(datum/reagent/R)
var/override = 0
for(var/datum/spacevine_mutation/SM in mutations)
override += SM.on_chem(src, R)
@@ -472,7 +472,7 @@
if(prob(50))
wither()
/obj/effect/spacevine/proc/eat(mob/eater)
/obj/structure/spacevine/proc/eat(mob/eater)
var/override = 0
for(var/datum/spacevine_mutation/SM in mutations)
override += SM.on_eat(src, eater)
@@ -481,7 +481,7 @@
eater.say("Nom")
wither()
/obj/effect/spacevine/attackby(obj/item/weapon/W, mob/user, params)
/obj/structure/spacevine/attackby(obj/item/weapon/W, mob/user, params)
if (!W || !user || !W.type)
return
user.changeNext_move(CLICK_CD_MELEE)
@@ -491,7 +491,7 @@
var/obj/item/weapon/scythe/S = W
if(S.extend) //so folded telescythes won't get damage boosts / insta-clears (they instead will instead be treated like non-scythes)
force = force * 4
for(var/obj/effect/spacevine/B in range(1,src))
for(var/obj/structure/spacevine/B in range(1,src))
if(B.health > force) //this only is going to occur for woodening mutation vines (increased health) or if we nerf scythe damage/multiplier
B.health -= force
else
@@ -513,29 +513,29 @@
..()
/obj/effect/spacevine/Crossed(mob/crosser)
/obj/structure/spacevine/Crossed(mob/crosser)
if(isliving(crosser))
for(var/datum/spacevine_mutation/SM in mutations)
SM.on_cross(src, crosser)
/obj/effect/spacevine/attack_hand(mob/user)
/obj/structure/spacevine/attack_hand(mob/user)
for(var/datum/spacevine_mutation/SM in mutations)
SM.on_hit(src, user)
user_unbuckle_mob(user, user)
/obj/effect/spacevine/attack_alien(mob/living/user)
/obj/structure/spacevine/attack_alien(mob/living/user)
eat(user)
/obj/effect/spacevine_controller
/obj/structure/spacevine_controller
invisibility = 101
var/list/obj/effect/spacevine/vines = list()
var/list/obj/structure/spacevine/vines = list()
var/list/growth_queue = list()
var/spread_multiplier = 5
var/spread_cap = 30
var/list/mutations_list = list()
var/mutativeness = 1
/obj/effect/spacevine_controller/New(loc, list/muts, potency, production)
/obj/structure/spacevine_controller/New(loc, list/muts, potency, production)
color = "#ffffff"
spawn_spacevine_piece(loc, , muts)
processing_objects.Add(src)
@@ -556,21 +556,21 @@
..()
/obj/effect/spacevine_controller/ex_act() //only killing all vines will end this suffering
/obj/structure/spacevine_controller/ex_act() //only killing all vines will end this suffering
return
/obj/effect/spacevine_controller/singularity_act()
/obj/structure/spacevine_controller/singularity_act()
return
/obj/effect/spacevine_controller/singularity_pull()
/obj/structure/spacevine_controller/singularity_pull()
return
/obj/effect/spacevine_controller/Destroy()
/obj/structure/spacevine_controller/Destroy()
processing_objects.Remove(src)
return ..()
/obj/effect/spacevine_controller/proc/spawn_spacevine_piece(turf/location, obj/effect/spacevine/parent, list/muts)
var/obj/effect/spacevine/SV = new(location)
/obj/structure/spacevine_controller/proc/spawn_spacevine_piece(turf/location, obj/structure/spacevine/parent, list/muts)
var/obj/structure/spacevine/SV = new(location)
growth_queue += SV
vines += SV
SV.master = src
@@ -590,7 +590,7 @@
for(var/datum/spacevine_mutation/SM in SV.mutations)
SM.on_birth(SV)
/obj/effect/spacevine_controller/process()
/obj/structure/spacevine_controller/process()
if(!vines || !vines.len)
qdel(src) //space vines exterminated. Remove the controller
return
@@ -602,9 +602,9 @@
length = min( spread_cap , max( 1 , vines.len / spread_multiplier ) )
var/i = 0
var/list/obj/effect/spacevine/queue_end = list()
var/list/obj/structure/spacevine/queue_end = list()
for(var/obj/effect/spacevine/SV in growth_queue)
for(var/obj/structure/spacevine/SV in growth_queue)
if(qdeleted(SV))
continue
i++
@@ -625,7 +625,7 @@
growth_queue = growth_queue + queue_end
/obj/effect/spacevine/proc/grow()
/obj/structure/spacevine/proc/grow()
if(!energy)
icon_state = pick("Med1", "Med2", "Med3")
energy = 1
@@ -637,7 +637,7 @@
for(var/datum/spacevine_mutation/SM in mutations)
SM.on_grow(src)
/obj/effect/spacevine/proc/entangle_mob()
/obj/structure/spacevine/proc/entangle_mob()
if(!buckled_mob && prob(25))
for(var/mob/living/V in loc)
entangle(V)
@@ -645,7 +645,7 @@
break //only capture one mob at a time
/obj/effect/spacevine/proc/entangle(mob/living/V)
/obj/structure/spacevine/proc/entangle(mob/living/V)
if(!V || isvineimmune(V))
return
for(var/datum/spacevine_mutation/SM in mutations)
@@ -654,7 +654,7 @@
to_chat(V, "<span class='danger'>The vines [pick("wind", "tangle", "tighten")] around you!</span>")
buckle_mob(V, 1)
/obj/effect/spacevine/proc/spread()
/obj/structure/spacevine/proc/spread()
var/list/dir_list = cardinal.Copy()
var/spread_search = FALSE // Whether to exhaustive search all 4 cardinal dirs for an open direction
for(var/datum/spacevine_mutation/SM in mutations)
@@ -666,7 +666,7 @@
var/spread_success = FALSE
for(var/datum/spacevine_mutation/SM in mutations)
spread_success |= SM.on_spread(src, stepturf) // If this returns 1, spreading succeeded
if(!locate(/obj/effect/spacevine, stepturf))
if(!locate(/obj/structure/spacevine, stepturf))
// snowflake for space turf, but space turf is super common and a big deal
if(!istype(stepturf, /turf/space) && stepturf.Enter(src))
if(master)
@@ -675,21 +675,21 @@
if(spread_success || !spread_search)
break
/obj/effect/spacevine/ex_act(severity)
/obj/structure/spacevine/ex_act(severity)
var/i
for(var/datum/spacevine_mutation/SM in mutations)
i += SM.on_explosion(severity, src)
if(!i && prob(100/severity))
wither()
/obj/effect/spacevine/temperature_expose(null, temp, volume)
/obj/structure/spacevine/temperature_expose(null, temp, volume)
var/override = 0
for(var/datum/spacevine_mutation/SM in mutations)
override += SM.process_temperature(src, temp, volume)
if(!override)
wither()
/obj/effect/spacevine/CanPass(atom/movable/mover, turf/target, height=0)
/obj/structure/spacevine/CanPass(atom/movable/mover, turf/target, height=0)
if(isvineimmune(mover))
. = TRUE
else
+1 -1
View File
@@ -22,7 +22,7 @@
while((spawncount >= 1) && vents.len)
var/obj/vent = pick(vents)
var/obj/effect/spider/spiderling/S = new(vent.loc)
var/obj/structure/spider/spiderling/S = new(vent.loc)
if(prob(66))
S.grow_as = /mob/living/simple_animal/hostile/poison/giant_spider/nurse
vents -= vent
+1 -1
View File
@@ -37,7 +37,7 @@
spawncount = 1
while(spawncount >= 1 && vents.len)
var/obj/vent = pick(vents)
var/obj/effect/spider/spiderling/terror_spiderling/S = new(vent.loc)
var/obj/structure/spider/spiderling/terror_spiderling/S = new(vent.loc)
S.name = "evil-looking spiderling"
S.grow_as = spider_type
S.amount_grown = 75
+1 -1
View File
@@ -32,7 +32,7 @@
var/turf/T = get_turf(src)
message_admins("Kudzu planted by [key_name_admin(user)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[user]'>FLW</A>) at ([T.x],[T.y],[T.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>(JMP)</a>)",0,1)
investigate_log("was planted by [key_name(user)] at ([T.x],[T.y],[T.z])","kudzu")
new /obj/effect/spacevine_controller(user.loc, mutations, potency, production)
new /obj/structure/spacevine_controller(user.loc, mutations, potency, production)
user.drop_item()
qdel(src)
+4 -4
View File
@@ -229,7 +229,7 @@
desc = "<I>Mycena Bregprox</I>: This species of mushroom glows in the dark."
icon_state = "glowshroom"
filling_color = "#00FA9A"
var/effect_path = /obj/effect/glowshroom
var/effect_path = /obj/structure/glowshroom
origin_tech = "biotech=4;plasmatech=6"
light_color = "#006622"
@@ -245,7 +245,7 @@
var/turf/simulated/wall = get_step(user.loc, tempdir)
if(istype(wall))
maxcount++
for(var/obj/effect/glowshroom/G in user.loc)
for(var/obj/structure/glowshroom/G in user.loc)
count++
if(count >= maxcount)
to_chat(user, "<span class='warning'>There are too many shrooms here to plant [src].</span>")
@@ -277,7 +277,7 @@
desc = "<I>Mycena Ruthenia</I>: This species of mushroom glows in the dark, but isn't actually bioluminescent. They're warm to the touch..."
icon_state = "glowcap"
filling_color = "#00FA9A"
effect_path = /obj/effect/glowshroom/glowcap
effect_path = /obj/structure/glowshroom/glowcap
origin_tech = "biotech=4;powerstorage=6;plasmatech=4"
light_color = "#8E0300"
@@ -324,5 +324,5 @@
name = "shadowshroom cluster"
desc = "<I>Mycena Umbra</I>: This species of mushroom emits shadow instead of light."
icon_state = "shadowshroom"
effect_path = /obj/effect/glowshroom/shadowshroom
effect_path = /obj/structure/glowshroom/shadowshroom
origin_tech = "biotech=4;plasmatech=4;magnets=4"
+1 -1
View File
@@ -485,7 +485,7 @@
log_game("[key_name(user)] caused spiderling pests to spawn in a hydro tray")
visible_message("<span class='warning'>The pests seem to behave oddly...</span>")
for(var/i in 1 to 3)
var/obj/effect/spider/spiderling/S = new(get_turf(src))
var/obj/structure/spider/spiderling/S = new(get_turf(src))
S.grow_as = /mob/living/simple_animal/hostile/poison/giant_spider/hunter
else
to_chat(user, "<span class='warning'>The pests seem to behave oddly, but quickly settle down...</span>")
@@ -229,7 +229,7 @@
//Different classes of items give different commodities.
if(istype(W,/obj/item/weapon/cigbutt))
stored_comms["plastic"]++
else if(istype(W,/obj/effect/spider/spiderling))
else if(istype(W,/obj/structure/spider/spiderling))
stored_comms["wood"]++
stored_comms["wood"]++
stored_comms["plastic"]++
@@ -98,7 +98,7 @@
if(prob(5)) //Spawns foam!
visible_message("<span class='danger'>[src] whirs and bubbles violently, before releasing a plume of froth!</span>")
new /obj/effect/effect/foam(loc)
new /obj/structure/foam(loc)
else if(prob(5))
audible_message("[src] makes an excited beeping booping sound!")
@@ -34,7 +34,7 @@
for(var/direction in shuffle(list(1,2,4,8,5,6,9,10)))
var/step = get_step(src, direction)
if(step)
if(locate(/obj/effect/spacevine) in step)
if(locate(/obj/structure/spacevine) in step)
Move(step, get_dir(src, step))
/mob/living/simple_animal/hostile/retaliate/goat/handle_automated_action()
@@ -47,7 +47,7 @@
LoseTarget()
src.visible_message("\blue [src] calms down.")
var/obj/effect/spacevine/SV = locate(/obj/effect/spacevine) in loc
var/obj/structure/spacevine/SV = locate(/obj/structure/spacevine) in loc
if(SV)
SV.eat(src)
@@ -64,7 +64,7 @@
/mob/living/simple_animal/hostile/retaliate/goat/Move()
..()
if(!stat)
var/obj/effect/spacevine/SV = locate(/obj/effect/spacevine) in loc
var/obj/structure/spacevine/SV = locate(/obj/structure/spacevine) in loc
if(SV)
SV.eat(src)
@@ -116,7 +116,7 @@
GiveUp(C)
return
//second, spin a sticky spiderweb on this tile
var/obj/effect/spider/stickyweb/W = locate() in get_turf(src)
var/obj/structure/spider/stickyweb/W = locate() in get_turf(src)
if(!W)
Web()
else
@@ -157,7 +157,7 @@
stop_automated_movement = 1
spawn(40)
if(busy == SPINNING_WEB && src.loc == T)
new /obj/effect/spider/stickyweb(T)
new /obj/structure/spider/stickyweb(T)
busy = 0
stop_automated_movement = 0
@@ -187,7 +187,7 @@
spawn(50)
if(busy == SPINNING_COCOON)
if(cocoon_target && istype(cocoon_target.loc, /turf) && get_dist(src,cocoon_target) <= 1)
var/obj/effect/spider/cocoon/C = new(cocoon_target.loc)
var/obj/structure/spider/cocoon/C = new(cocoon_target.loc)
var/large_cocoon = 0
C.pixel_x = cocoon_target.pixel_x
C.pixel_y = cocoon_target.pixel_y
@@ -223,7 +223,7 @@
set category = "Spider"
set desc = "Lay a clutch of eggs, but you must wrap a creature for feeding first."
var/obj/effect/spider/eggcluster/E = locate() in get_turf(src)
var/obj/structure/spider/eggcluster/E = locate() in get_turf(src)
if(E)
to_chat(src, "<span class='notice'>There is already a cluster of eggs here!</span>")
else if(!fed)
@@ -236,7 +236,7 @@
if(busy == LAYING_EGGS)
E = locate() in get_turf(src)
if(!E)
var/obj/effect/spider/eggcluster/C = new /obj/effect/spider/eggcluster(src.loc)
var/obj/structure/spider/eggcluster/C = new /obj/structure/spider/eggcluster(src.loc)
C.faction = faction
C.master_commander = master_commander
if(ckey)
@@ -112,11 +112,11 @@
else if(istype(loc, /turf/space))
to_chat(src, "<span class='danger'>Webs cannot be spun in space.</span>")
else
var/obj/effect/spider/terrorweb/T = locate() in get_turf(src)
var/obj/structure/spider/terrorweb/T = locate() in get_turf(src)
if(T)
to_chat(src, "<span class='danger'>There is already a web here.</span>")
else
var/obj/effect/spider/terrorweb/W = new /obj/effect/spider/terrorweb(loc)
var/obj/structure/spider/terrorweb/W = new /obj/structure/spider/terrorweb(loc)
W.creator_ckey = ckey
if(thick)
W.opacity = 1
@@ -125,7 +125,7 @@
W.infectious = 1
W.name = "sharp terror web"
/obj/effect/spider/terrorweb
/obj/structure/spider/terrorweb
name = "terror web"
desc = "it's stringy and sticky"
icon = 'icons/effects/effects.dmi'
@@ -136,18 +136,18 @@
var/creator_ckey = null
var/infectious = 0
/obj/effect/spider/terrorweb/New()
/obj/structure/spider/terrorweb/New()
..()
if(prob(50))
icon_state = "stickyweb2"
/obj/effect/spider/terrorweb/proc/DeCloakNearby()
/obj/structure/spider/terrorweb/proc/DeCloakNearby()
for(var/mob/living/simple_animal/hostile/poison/terror_spider/gray/G in view(6,src))
if(!G.ckey && G.stat != DEAD)
G.GrayDeCloak()
G.Aggro()
/obj/effect/spider/terrorweb/CanPass(atom/movable/mover, turf/target)
/obj/structure/spider/terrorweb/CanPass(atom/movable/mover, turf/target)
if(istype(mover, /mob/living/simple_animal/hostile/poison/terror_spider))
return 1
if(istype(mover, /obj/item/projectile/terrorqueenspit))
@@ -178,7 +178,7 @@
return prob(20)
return ..()
/obj/effect/spider/terrorweb/bullet_act(obj/item/projectile/Proj)
/obj/structure/spider/terrorweb/bullet_act(obj/item/projectile/Proj)
if(Proj.damage_type != BRUTE && Proj.damage_type != BURN)
visible_message("<span class='danger'>[src] is undamaged by [Proj]!</span>")
// Webs don't care about disablers, tasers, etc. Or toxin damage. They're organic, but not alive.
@@ -196,7 +196,7 @@
choices += L
for(var/obj/O in oview(1,src))
if(Adjacent(O) && !O.anchored)
if(!istype(O, /obj/effect/spider/terrorweb) && !istype(O, /obj/effect/spider/cocoon) && !istype(O, /obj/effect/spider/spiderling/terror_spiderling))
if(!istype(O, /obj/structure/spider/terrorweb) && !istype(O, /obj/structure/spider/cocoon) && !istype(O, /obj/structure/spider/spiderling/terror_spiderling))
choices += O
if(choices.len)
cocoon_target = input(src,"What do you wish to cocoon?") in null|choices
@@ -215,7 +215,7 @@
if(do_after(src, 40, target = cocoon_target.loc))
if(busy == SPINNING_COCOON)
if(cocoon_target && isturf(cocoon_target.loc) && get_dist(src,cocoon_target) <= 1)
var/obj/effect/spider/cocoon/C = new(cocoon_target.loc)
var/obj/structure/spider/cocoon/C = new(cocoon_target.loc)
var/large_cocoon = 0
C.pixel_x = cocoon_target.pixel_x
C.pixel_y = cocoon_target.pixel_y
@@ -74,7 +74,7 @@
var/numlings = input("How many?") as null|anything in list(10, 20, 30, 40, 50)
var/sbpc = input("%chance to be stillborn?") as null|anything in list(0, 25, 50, 75, 100)
for(var/i=0, i<numlings, i++)
var/obj/effect/spider/spiderling/terror_spiderling/S = new /obj/effect/spider/spiderling/terror_spiderling(get_turf(src))
var/obj/structure/spider/spiderling/terror_spiderling/S = new /obj/structure/spider/spiderling/terror_spiderling(get_turf(src))
S.grow_as = pick(/mob/living/simple_animal/hostile/poison/terror_spider/red, \
/mob/living/simple_animal/hostile/poison/terror_spider/gray, \
/mob/living/simple_animal/hostile/poison/terror_spider/green, \
@@ -91,9 +91,9 @@
if(T.spider_tier < spider_tier)
T.degenerate = 1
to_chat(T, "<span class='userdanger'>Through the hivemind, the raw power of [src] floods into your body, burning it from the inside out!</span>")
for(var/obj/effect/spider/eggcluster/terror_eggcluster/T in ts_egg_list)
for(var/obj/structure/spider/eggcluster/terror_eggcluster/T in ts_egg_list)
qdel(T)
for(var/obj/effect/spider/spiderling/terror_spiderling/T in ts_spiderling_list)
for(var/obj/structure/spider/spiderling/terror_spiderling/T in ts_spiderling_list)
T.stillborn = 1
to_chat(src, "<span class='userdanger'>All Terror Spiders, except yourself, will die off shortly.</span>")
@@ -119,7 +119,7 @@
GrayCloak()
else
// otherwise, pick one of the valid turfs with no web to create a web there.
new /obj/effect/spider/terrorweb(pick(g_turfs_valid))
new /obj/structure/spider/terrorweb(pick(g_turfs_valid))
visible_message("<span class='notice'>[src] spins a web.</span>")
else
if(invisibility == SEE_INVISIBLE_LEVEL_ONE)
@@ -30,7 +30,7 @@
greeneggs_action.Grant(src)
/mob/living/simple_animal/hostile/poison/terror_spider/green/proc/DoLayGreenEggs()
var/obj/effect/spider/eggcluster/E = locate() in get_turf(src)
var/obj/structure/spider/eggcluster/E = locate() in get_turf(src)
if(E)
to_chat(src, "<span class='notice'>There is already a cluster of eggs here!</span>")
else if(fed < feedings_to_lay)
@@ -46,10 +46,10 @@
if(T.stat != DEAD && !T.spider_placed && spider_awaymission == T.spider_awaymission)
if(T.type == specific_type)
numspiders += 1
for(var/obj/effect/spider/eggcluster/terror_eggcluster/E in ts_egg_list)
for(var/obj/structure/spider/eggcluster/terror_eggcluster/E in ts_egg_list)
if(E.spiderling_type == specific_type && E.z == z)
numspiders += E.spiderling_number
for(var/obj/effect/spider/spiderling/terror_spiderling/L in ts_spiderling_list)
for(var/obj/structure/spider/spiderling/terror_spiderling/L in ts_spiderling_list)
if(!L.stillborn && L.grow_as == specific_type && L.z == z)
numspiders += 1
return numspiders
@@ -36,7 +36,7 @@
if(canspawn)
canspawn = 0
for(var/i in 0 to 30)
var/obj/effect/spider/spiderling/terror_spiderling/S = new /obj/effect/spider/spiderling/terror_spiderling(get_turf(src))
var/obj/structure/spider/spiderling/terror_spiderling/S = new /obj/structure/spider/spiderling/terror_spiderling(get_turf(src))
S.grow_as = pick(/mob/living/simple_animal/hostile/poison/terror_spider/red, /mob/living/simple_animal/hostile/poison/terror_spider/gray)
if(prob(66))
S.stillborn = 1
@@ -153,7 +153,7 @@
if(3)
if(world.time > (spider_lastspawn + spider_spawnfrequency))
if(prob(20))
var/obj/effect/spider/eggcluster/terror_eggcluster/N = locate() in get_turf(src)
var/obj/structure/spider/eggcluster/terror_eggcluster/N = locate() in get_turf(src)
if(!N)
spider_lastspawn = world.time
DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/green, 2, 0)
@@ -161,7 +161,7 @@
if(4)
if(world.time > (spider_lastspawn + spider_spawnfrequency))
if(prob(20))
var/obj/effect/spider/eggcluster/terror_eggcluster/N = locate() in get_turf(src)
var/obj/structure/spider/eggcluster/terror_eggcluster/N = locate() in get_turf(src)
if(!N)
spider_lastspawn = world.time
DoLayTerrorEggs(/mob/living/simple_animal/hostile/poison/terror_spider/red, 2, 1)
@@ -169,7 +169,7 @@
if(5)
if(world.time > (spider_lastspawn + spider_spawnfrequency))
if(prob(20))
var/obj/effect/spider/eggcluster/terror_eggcluster/N = locate() in get_turf(src)
var/obj/structure/spider/eggcluster/terror_eggcluster/N = locate() in get_turf(src)
if(!N)
if(!spider_awaymission)
QueenFakeLings()
@@ -331,7 +331,7 @@
spider_can_fakelings--
var/numlings = 15
for(var/i in 1 to numlings)
var/obj/effect/spider/spiderling/terror_spiderling/S = new /obj/effect/spider/spiderling/terror_spiderling(get_turf(src))
var/obj/structure/spider/spiderling/terror_spiderling/S = new /obj/structure/spider/spiderling/terror_spiderling(get_turf(src))
S.grow_as = /mob/living/simple_animal/hostile/poison/terror_spider/red
S.stillborn = 1
S.name = "Evil-Looking Spiderling"
@@ -3,7 +3,7 @@
// ----------------- TERROR SPIDERS: SPIDERLINGS (USED BY GREEN, WHITE, QUEEN AND MOTHER TYPES)
// --------------------------------------------------------------------------------
/obj/effect/spider/spiderling/terror_spiderling
/obj/structure/spider/spiderling/terror_spiderling
name = "spiderling"
desc = "A fast-moving tiny spider, prone to making aggressive hissing sounds. Hope it doesn't grow up."
icon_state = "spiderling"
@@ -17,15 +17,15 @@
var/list/enemies = list()
var/immediate_ventcrawl = 0
/obj/effect/spider/spiderling/terror_spiderling/New()
/obj/structure/spider/spiderling/terror_spiderling/New()
..()
ts_spiderling_list += src
/obj/effect/spider/spiderling/terror_spiderling/Destroy()
/obj/structure/spider/spiderling/terror_spiderling/Destroy()
ts_spiderling_list -= src
return ..()
/obj/effect/spider/spiderling/terror_spiderling/Bump(atom/A)
/obj/structure/spider/spiderling/terror_spiderling/Bump(atom/A)
if(istype(A, /obj/structure/table))
forceMove(A.loc)
else if(istype(A, /obj/machinery/recharge_station))
@@ -33,7 +33,7 @@
else
..()
/obj/effect/spider/spiderling/terror_spiderling/process()
/obj/structure/spider/spiderling/terror_spiderling/process()
if(travelling_in_vent)
if(isturf(loc))
travelling_in_vent = 0
@@ -104,7 +104,7 @@
/mob/living/simple_animal/hostile/poison/terror_spider/proc/DoLayTerrorEggs(lay_type, lay_number, lay_crawl)
stop_automated_movement = 1
var/obj/effect/spider/eggcluster/terror_eggcluster/C = new /obj/effect/spider/eggcluster/terror_eggcluster(get_turf(src))
var/obj/structure/spider/eggcluster/terror_eggcluster/C = new /obj/structure/spider/eggcluster/terror_eggcluster(get_turf(src))
C.spiderling_type = lay_type
C.spiderling_number = lay_number
C.spiderling_ventcrawl = lay_crawl
@@ -118,7 +118,7 @@
spawn(10)
stop_automated_movement = 0
/obj/effect/spider/eggcluster/terror_eggcluster
/obj/structure/spider/eggcluster/terror_eggcluster
name = "terror egg cluster"
desc = "A cluster of tiny spider eggs. They pulse with a strong inner life, and appear to have sharp thorns on the sides."
icon_state = "eggs"
@@ -130,7 +130,7 @@
var/spiderling_ventcrawl = 1
var/list/enemies = list()
/obj/effect/spider/eggcluster/terror_eggcluster/New()
/obj/structure/spider/eggcluster/terror_eggcluster/New()
..()
ts_egg_list += src
spawn(50)
@@ -153,16 +153,16 @@
else if(spiderling_type == /mob/living/simple_animal/hostile/poison/terror_spider/queen)
name = "queen of terror eggs"
/obj/effect/spider/eggcluster/terror_eggcluster/Destroy()
/obj/structure/spider/eggcluster/terror_eggcluster/Destroy()
ts_egg_list -= src
return ..()
/obj/effect/spider/eggcluster/terror_eggcluster/process()
/obj/structure/spider/eggcluster/terror_eggcluster/process()
amount_grown += rand(0,2)
if(amount_grown >= 100)
var/num = spiderling_number
for(var/i=0, i<num, i++)
var/obj/effect/spider/spiderling/terror_spiderling/S = new /obj/effect/spider/spiderling/terror_spiderling(get_turf(src))
var/obj/structure/spider/spiderling/terror_spiderling/S = new /obj/structure/spider/spiderling/terror_spiderling(get_turf(src))
if(spiderling_type)
S.grow_as = spiderling_type
S.use_vents = spiderling_ventcrawl
@@ -174,7 +174,7 @@
S.amount_grown = 250
var/rnum = 5 - spiderling_number
for(var/i=0, i<rnum, i++)
var/obj/effect/spider/spiderling/terror_spiderling/S = new /obj/effect/spider/spiderling/terror_spiderling(get_turf(src))
var/obj/structure/spider/spiderling/terror_spiderling/S = new /obj/structure/spider/spiderling/terror_spiderling(get_turf(src))
S.stillborn = 1
// every set of eggs always spawn 5 spiderlings, but most are decoys
qdel(src)
@@ -136,9 +136,9 @@
break
else if(ai_spins_webs && world.time > (last_spins_webs + freq_spins_webs))
last_spins_webs = world.time
var/obj/effect/spider/terrorweb/T = locate() in get_turf(src)
var/obj/structure/spider/terrorweb/T = locate() in get_turf(src)
if(!T)
var/obj/effect/spider/terrorweb/W = new /obj/effect/spider/terrorweb(loc)
var/obj/structure/spider/terrorweb/W = new /obj/structure/spider/terrorweb(loc)
if(web_infects)
W.infectious = 1
W.name = "sharp terror web"
@@ -275,7 +275,7 @@
var/list/potentials = list()
for(var/turf/simulated/T in oview(3,get_turf(src)))
if(T.density == 0 && get_dist(get_turf(src),T) == 3)
var/obj/effect/spider/terrorweb/W = locate() in T
var/obj/structure/spider/terrorweb/W = locate() in T
if(!W)
var/obj/structure/grille/G = locate() in T
if(!G)
@@ -288,7 +288,7 @@
var/list/webbed = list()
for(var/turf/simulated/T in oview(3,get_turf(src)))
if(T.density == 0 && get_dist(get_turf(src),T) == 3)
var/obj/effect/spider/terrorweb/W = locate() in T
var/obj/structure/spider/terrorweb/W = locate() in T
if(W)
webbed += T
return webbed
@@ -168,7 +168,7 @@ var/global/list/ts_spiderling_list = list()
visible_message("<span class='notice'>[src] harmlessly nuzzles [target].</span>")
T.CheckFaction()
CheckFaction()
else if(istype(target, /obj/effect/spider/cocoon))
else if(istype(target, /obj/structure/spider/cocoon))
to_chat(src, "Destroying our own cocoons would not help us.")
else if(istype(target, /obj/machinery/door/firedoor))
var/obj/machinery/door/firedoor/F = target
@@ -269,7 +269,7 @@
M.take_organ_damage(0,20)
/datum/reagent/sacid/reaction_obj(obj/O, volume)
if((istype(O,/obj/item) || istype(O,/obj/effect/glowshroom)) && prob(40))
if((istype(O,/obj/item) || istype(O,/obj/structure/glowshroom)) && prob(40))
if(!O.unacidable)
var/obj/effect/decal/cleanable/molten_object/I = new/obj/effect/decal/cleanable/molten_object(O.loc)
I.desc = "Looks like this was \an [O] some time ago."
@@ -615,7 +615,7 @@
H.status_flags |= DISFIGURED
/datum/reagent/facid/reaction_obj(obj/O, volume)
if((istype(O, /obj/item) || istype(O, /obj/effect/glowshroom)))
if((istype(O, /obj/item) || istype(O, /obj/structure/glowshroom)))
if(!O.unacidable)
var/obj/effect/decal/cleanable/molten_object/I = new/obj/effect/decal/cleanable/molten_object(O.loc)
I.desc = "Looks like this was \an [O] some time ago."
@@ -924,10 +924,10 @@
var/obj/structure/alien/weeds/alien_weeds = O
alien_weeds.health -= rand(15,35) // Kills alien weeds pretty fast
alien_weeds.healthcheck()
else if(istype(O, /obj/effect/glowshroom)) //even a small amount is enough to kill it
else if(istype(O, /obj/structure/glowshroom)) //even a small amount is enough to kill it
qdel(O)
else if(istype(O,/obj/effect/spacevine))
var/obj/effect/spacevine/SV = O
else if(istype(O,/obj/structure/spacevine))
var/obj/structure/spacevine/SV = O
SV.on_chem_effect(src)
/datum/reagent/glyphosate/reaction_mob(mob/living/M, method=TOUCH, volume)
@@ -82,7 +82,7 @@
//use up stored charges
if(charges >= 10)
charges -= 10
new /obj/effect/spider/eggcluster(pick(view(1,src)))
new /obj/structure/spider/eggcluster(pick(view(1,src)))
if(charges >= 3)
if(prob(5))
+2 -2
View File
@@ -236,8 +236,8 @@
/proc/forbidden_atoms_check(atom/A)
var/list/blacklist = list(
/mob/living,
/obj/effect/blob,
/obj/effect/spider/spiderling,
/obj/structure/blob,
/obj/structure/spider/spiderling,
/obj/item/weapon/disk/nuclear,
/obj/machinery/nuclearbomb,
/obj/item/device/radio/beacon,
+4 -4
View File
@@ -28,7 +28,7 @@
owner.emote("scream")
var/spiders = rand(3,5)
for(var/i in 1 to spiders)
new/obj/effect/spider/spiderling(get_turf(owner))
new/obj/structure/spider/spiderling(get_turf(owner))
owner.visible_message("<span class='danger'>[owner] bursts open! Holy fuck!</span>")
owner.gib()
@@ -86,17 +86,17 @@
owner.Stun(20)
owner.Weaken(20)
// yes, this is a long stun - that's intentional. Gotta give the spiderlings time to escape.
var/obj/effect/spider/spiderling/terror_spiderling/S1 = new(get_turf(owner))
var/obj/structure/spider/spiderling/terror_spiderling/S1 = new(get_turf(owner))
S1.grow_as = /mob/living/simple_animal/hostile/poison/terror_spider/red
S1.name = "red spiderling"
if(prob(50))
S1.stillborn = 1
var/obj/effect/spider/spiderling/terror_spiderling/S2 = new(get_turf(owner))
var/obj/structure/spider/spiderling/terror_spiderling/S2 = new(get_turf(owner))
S2.grow_as = /mob/living/simple_animal/hostile/poison/terror_spider/gray
S2.name = "gray spiderling"
if(prob(50))
S2.stillborn = 1
var/obj/effect/spider/spiderling/terror_spiderling/S3 = new(get_turf(owner))
var/obj/structure/spider/spiderling/terror_spiderling/S3 = new(get_turf(owner))
S3.grow_as = /mob/living/simple_animal/hostile/poison/terror_spider/green
S3.name = "green spiderling"
if(prob(50))