mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-20 03:25:49 +01:00
Encourages crew to foster highly dangerous biothreats
This commit is contained in:
@@ -45,6 +45,9 @@
|
||||
/datum/spacevine_mutation/proc/on_death(obj/effect/spacevine/holder)
|
||||
return
|
||||
|
||||
/datum/spacevine_mutation/proc/on_deletion(obj/effect/spacevine/holder)
|
||||
return
|
||||
|
||||
/datum/spacevine_mutation/proc/on_hit(obj/effect/spacevine/holder, mob/hitter, obj/item/I, expected_damage)
|
||||
. = expected_damage
|
||||
|
||||
@@ -115,7 +118,7 @@
|
||||
. = ..()
|
||||
//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)
|
||||
qdel(SV)
|
||||
SV.wither()
|
||||
|
||||
/datum/spacevine_mutation/space_covering
|
||||
var/static/list/coverable_turfs
|
||||
@@ -140,7 +143,7 @@
|
||||
T.ChangeTurf(/turf/simulated/floor/vines)
|
||||
T.baseturf = currtype
|
||||
|
||||
/datum/spacevine_mutation/space_covering/on_death(obj/effect/spacevine/holder)
|
||||
/datum/spacevine_mutation/space_covering/on_deletion(obj/effect/spacevine/holder)
|
||||
var/turf/T = get_turf(holder)
|
||||
if(istype(T, /turf/simulated/floor/vines))
|
||||
T.ChangeTurf(T.baseturf)
|
||||
@@ -194,7 +197,7 @@
|
||||
else
|
||||
. = 1
|
||||
spawn(5)
|
||||
qdel(holder)
|
||||
holder.wither()
|
||||
|
||||
/datum/spacevine_mutation/explosive/on_death(obj/effect/spacevine/holder, mob/hitter, obj/item/I)
|
||||
explosion(holder.loc, 0, 0, severity, 0, 0)
|
||||
@@ -221,7 +224,7 @@
|
||||
/datum/spacevine_mutation/vine_eating/on_spread(obj/effect/spacevine/holder, turf/target)
|
||||
var/obj/effect/spacevine/prey = locate() in target
|
||||
if(prey && !prey.mutations.Find(src)) //Eat all vines that are not of the same origin
|
||||
qdel(prey)
|
||||
prey.wither()
|
||||
. = TRUE
|
||||
|
||||
/datum/spacevine_mutation/aggressive_spread //very OP, but im out of other ideas currently
|
||||
@@ -305,6 +308,56 @@
|
||||
/datum/spacevine_mutation/virulent_spread/on_search(obj/effect/spacevine/holder)
|
||||
return 1
|
||||
|
||||
// Sure, let's encourage crew members to deliberately breed a highly dangerous
|
||||
// threat. What could *possibly* go wrong? ;)
|
||||
/datum/spacevine_mutation/mineral
|
||||
name = "metallic"
|
||||
hue = "#444444"
|
||||
quality = POSITIVE
|
||||
severity = 3
|
||||
var/drop_rate = 20
|
||||
var/list/mineral_results = list(
|
||||
/obj/item/stack/sheet/metal = 1
|
||||
)
|
||||
|
||||
/datum/spacevine_mutation/mineral/on_death(obj/effect/spacevine/holder)
|
||||
if(!prob(drop_rate))
|
||||
return
|
||||
var/itemtype = pickweight(mineral_results)
|
||||
var/turf/pos = get_turf(holder)
|
||||
new itemtype(pos, severity)
|
||||
|
||||
/datum/spacevine_mutation/mineral/valuables
|
||||
name = "glimmering"
|
||||
hue = "#888800"
|
||||
drop_rate = 10
|
||||
mineral_results = list(
|
||||
/obj/item/stack/sheet/mineral/silver = 4,
|
||||
/obj/item/stack/sheet/mineral/gold = 2,
|
||||
/obj/item/stack/sheet/mineral/diamond = 1
|
||||
)
|
||||
|
||||
/datum/spacevine_mutation/mineral/glass
|
||||
name = "glassy"
|
||||
hue = "#8888FF"
|
||||
mineral_results = list(
|
||||
/obj/item/stack/sheet/glass = 1
|
||||
)
|
||||
|
||||
/datum/spacevine_mutation/mineral/plastic
|
||||
name = "plasticine"
|
||||
hue = "#222288"
|
||||
mineral_results = list(
|
||||
/obj/item/stack/sheet/mineral/plastic = 1
|
||||
)
|
||||
|
||||
/datum/spacevine_mutation/mineral/wood
|
||||
name = "wooden"
|
||||
hue = "#442200"
|
||||
mineral_results = list(
|
||||
/obj/item/stack/sheet/wood = 1
|
||||
)
|
||||
|
||||
// SPACE VINES (Note that this code is very similar to Biomass code)
|
||||
/obj/effect/spacevine
|
||||
name = "space vines"
|
||||
@@ -338,9 +391,15 @@
|
||||
text += " vine."
|
||||
to_chat(user, text)
|
||||
|
||||
/obj/effect/spacevine/Destroy()
|
||||
/obj/effect/spacevine/proc/wither()
|
||||
for(var/datum/spacevine_mutation/SM in mutations)
|
||||
SM.on_death(src)
|
||||
qdel(src)
|
||||
|
||||
|
||||
/obj/effect/spacevine/Destroy()
|
||||
for(var/datum/spacevine_mutation/SM in mutations)
|
||||
SM.on_deletion(src)
|
||||
if(master)
|
||||
master.vines -= src
|
||||
master.growth_queue -= src
|
||||
@@ -349,6 +408,7 @@
|
||||
KZ.mutations |= mutations
|
||||
KZ.set_potency(master.mutativeness * 10)
|
||||
KZ.set_production((master.spread_cap / initial(master.spread_cap)) * 5)
|
||||
qdel(master)
|
||||
master = null
|
||||
mutations.Cut()
|
||||
set_opacity(0)
|
||||
@@ -366,7 +426,7 @@
|
||||
override += SM.on_chem(src, R)
|
||||
if(!override && istype(R, /datum/reagent/glyphosate))
|
||||
if(prob(50))
|
||||
qdel(src)
|
||||
wither()
|
||||
|
||||
/obj/effect/spacevine/proc/eat(mob/eater)
|
||||
var/override = 0
|
||||
@@ -375,7 +435,7 @@
|
||||
if(!override)
|
||||
if(prob(10))
|
||||
eater.say("Nom")
|
||||
qdel(src)
|
||||
wither()
|
||||
|
||||
/obj/effect/spacevine/attackby(obj/item/weapon/W, mob/user, params)
|
||||
if (!W || !user || !W.type)
|
||||
@@ -388,12 +448,12 @@
|
||||
for(var/obj/effect/spacevine/B in orange(1,src))
|
||||
B.health = health - force
|
||||
if(B.health < 1)
|
||||
qdel(B)
|
||||
wither()
|
||||
|
||||
health = health - force
|
||||
|
||||
if(health < 1)
|
||||
qdel(src)
|
||||
wither()
|
||||
|
||||
return
|
||||
|
||||
@@ -408,7 +468,7 @@
|
||||
|
||||
health = health - force
|
||||
if(health < 1)
|
||||
qdel(src)
|
||||
wither()
|
||||
|
||||
..()
|
||||
|
||||
@@ -482,7 +542,7 @@
|
||||
SM.on_birth(SV)
|
||||
|
||||
/obj/effect/spacevine_controller/process()
|
||||
if(!vines)
|
||||
if(!vines || !vines.len)
|
||||
qdel(src) //space vines exterminated. Remove the controller
|
||||
return
|
||||
if(!growth_queue)
|
||||
@@ -570,14 +630,14 @@
|
||||
for(var/datum/spacevine_mutation/SM in mutations)
|
||||
i += SM.on_explosion(severity, src)
|
||||
if(!i && prob(100/severity))
|
||||
qdel(src)
|
||||
wither()
|
||||
|
||||
/obj/effect/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)
|
||||
qdel(src)
|
||||
wither()
|
||||
|
||||
/obj/effect/spacevine/CanPass(atom/movable/mover, turf/target, height=0)
|
||||
if(isvineimmune(mover))
|
||||
|
||||
Reference in New Issue
Block a user