mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-21 20:11:04 +01:00
Merge remote-tracking branch 'remotes/upstream/dev' into definecrusade
This commit is contained in:
@@ -90,7 +90,7 @@
|
||||
/obj/effect/alien/resin/hitby(AM as mob|obj)
|
||||
..()
|
||||
for(var/mob/O in viewers(src, null))
|
||||
O.show_message("\red <B>[src] was hit by [AM].</B>", 1)
|
||||
O.show_message("<span class='danger'>[src] was hit by [AM].</span>", 1)
|
||||
var/tforce = 0
|
||||
if(ismob(AM))
|
||||
tforce = 10
|
||||
@@ -104,9 +104,9 @@
|
||||
|
||||
/obj/effect/alien/resin/attack_hand()
|
||||
if (HULK in usr.mutations)
|
||||
usr << "\blue You easily destroy the [name]."
|
||||
usr << "<span class='notice'>You easily destroy the [name].</span>"
|
||||
for(var/mob/O in oviewers(src))
|
||||
O.show_message("\red [usr] destroys the [name]!", 1)
|
||||
O.show_message("<span class='warning'>[usr] destroys the [name]!</span>", 1)
|
||||
health = 0
|
||||
else
|
||||
|
||||
@@ -115,14 +115,14 @@
|
||||
var/mob/living/carbon/M = usr
|
||||
if(locate(/obj/item/organ/xenos/hivenode) in M.internal_organs)
|
||||
for(var/mob/O in oviewers(src))
|
||||
O.show_message("\red [usr] strokes the [name] and it melts away!", 1)
|
||||
O.show_message("<span class='warning'>[usr] strokes the [name] and it melts away!</span>", 1)
|
||||
health = 0
|
||||
healthcheck()
|
||||
return
|
||||
|
||||
usr << "\blue You claw at the [name]."
|
||||
usr << "<span class='notice'>You claw at the [name].</span>"
|
||||
for(var/mob/O in oviewers(src))
|
||||
O.show_message("\red [usr] claws at the [name]!", 1)
|
||||
O.show_message("<span class='warning'>[usr] claws at the [name]!</span>", 1)
|
||||
health -= rand(5,10)
|
||||
healthcheck()
|
||||
return
|
||||
@@ -237,9 +237,9 @@ Alien plants should do something if theres a lot of poison
|
||||
|
||||
/obj/effect/alien/weeds/attackby(var/obj/item/weapon/W, var/mob/user)
|
||||
if(W.attack_verb.len)
|
||||
visible_message("\red <B>\The [src] have been [pick(W.attack_verb)] with \the [W][(user ? " by [user]." : ".")]")
|
||||
visible_message("<span class='danger'>\The [src] have been [pick(W.attack_verb)] with \the [W][(user ? " by [user]." : ".")]</span>")
|
||||
else
|
||||
visible_message("\red <B>\The [src] have been attacked with \the [W][(user ? " by [user]." : ".")]")
|
||||
visible_message("<span class='danger'>\The [src] have been attacked with \the [W][(user ? " by [user]." : ".")]</span>")
|
||||
|
||||
var/damage = W.force / 4.0
|
||||
|
||||
@@ -301,7 +301,7 @@ Alien plants should do something if theres a lot of poison
|
||||
if(ticks >= target_strength)
|
||||
|
||||
for(var/mob/O in hearers(src, null))
|
||||
O.show_message("\green <B>[src.target] collapses under its own weight into a puddle of goop and undigested debris!</B>", 1)
|
||||
O.show_message("<span class='alium'>[src.target] collapses under its own weight into a puddle of goop and undigested debris!</span>", 1)
|
||||
|
||||
if(istype(target, /turf/simulated/wall)) // I hate turf code.
|
||||
var/turf/simulated/wall/W = target
|
||||
@@ -313,13 +313,13 @@ Alien plants should do something if theres a lot of poison
|
||||
|
||||
switch(target_strength - ticks)
|
||||
if(6)
|
||||
visible_message("\green <B>[src.target] is holding up against the acid!</B>")
|
||||
visible_message("<span class='alium'>[src.target] is holding up against the acid!</span>")
|
||||
if(4)
|
||||
visible_message("\green <B>[src.target]\s structure is being melted by the acid!</B>")
|
||||
visible_message("<span class='alium'>[src.target]\s structure is being melted by the acid!</span>")
|
||||
if(2)
|
||||
visible_message("\green <B>[src.target] is struggling to withstand the acid!</B>")
|
||||
visible_message("<span class='alium'>[src.target] is struggling to withstand the acid!</span>")
|
||||
if(0 to 1)
|
||||
visible_message("\green <B>[src.target] begins to crumble under the acid!</B>")
|
||||
visible_message("<span class='alium'>[src.target] begins to crumble under the acid!</span>")
|
||||
spawn(rand(150, 200)) tick()
|
||||
|
||||
/*
|
||||
@@ -360,14 +360,14 @@ Alien plants should do something if theres a lot of poison
|
||||
|
||||
switch(status)
|
||||
if(BURST)
|
||||
user << "\red You clear the hatched egg."
|
||||
user << "<span class='warning'>You clear the hatched egg.</span>"
|
||||
qdel(src)
|
||||
return
|
||||
if(GROWING)
|
||||
user << "\red The child is not developed yet."
|
||||
user << "<span class='warning'>The child is not developed yet.</span>"
|
||||
return
|
||||
if(GROWN)
|
||||
user << "\red You retrieve the child."
|
||||
user << "<span class='warning'>You retrieve the child.</span>"
|
||||
Burst(0)
|
||||
return
|
||||
|
||||
@@ -409,9 +409,9 @@ Alien plants should do something if theres a lot of poison
|
||||
if(health <= 0)
|
||||
return
|
||||
if(W.attack_verb.len)
|
||||
src.visible_message("\red <B>\The [src] has been [pick(W.attack_verb)] with \the [W][(user ? " by [user]." : ".")]")
|
||||
src.visible_message("<span class='danger'>\The [src] has been [pick(W.attack_verb)] with \the [W][(user ? " by [user]." : ".")]</span>")
|
||||
else
|
||||
src.visible_message("\red <B>\The [src] has been attacked with \the [W][(user ? " by [user]." : ".")]")
|
||||
src.visible_message("<span class='danger'>\The [src] has been attacked with \the [W][(user ? " by [user]." : ".")]</span>")
|
||||
var/damage = W.force / 4.0
|
||||
|
||||
if(istype(W, /obj/item/weapon/weldingtool))
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
//must place on a wall and user must not be inside a closet/mecha/whatever
|
||||
var/turf/W = A
|
||||
if (!iswall(W) || !isturf(user.loc))
|
||||
user << "\red You can't place this here!"
|
||||
user << "<span class='warning'>You can't place this here!</span>"
|
||||
return
|
||||
|
||||
var/placement_dir = get_dir(user, W)
|
||||
@@ -161,4 +161,4 @@
|
||||
var/name=""
|
||||
// Description suffix
|
||||
var/desc=""
|
||||
var/icon_state=""
|
||||
var/icon_state=""
|
||||
|
||||
@@ -13,11 +13,11 @@ would spawn and follow the beaker, even if it is carried or thrown.
|
||||
unacidable = 1//So effect are not targeted by alien acid.
|
||||
pass_flags = PASSTABLE | PASSGRILLE
|
||||
|
||||
/obj/effect/Destroy()
|
||||
/obj/effect/Destroy()
|
||||
if(reagents)
|
||||
reagents.delete()
|
||||
return ..()
|
||||
|
||||
|
||||
/datum/effect/effect/system
|
||||
var/number = 3
|
||||
var/cardinals = 0
|
||||
@@ -455,7 +455,7 @@ steam.start() -- spawns the effect
|
||||
proc/stop()
|
||||
src.processing = 0
|
||||
src.on = 0
|
||||
|
||||
|
||||
/datum/effect/effect/system/reagents_explosion
|
||||
var/amount // TNT equivalent
|
||||
var/flashing = 0 // does explosion creates flash effect?
|
||||
@@ -480,10 +480,10 @@ steam.start() -- spawns the effect
|
||||
s.start()
|
||||
|
||||
for(var/mob/M in viewers(5, location))
|
||||
M << "\red The solution violently explodes."
|
||||
M << "<span class='warning'>The solution violently explodes.</span>"
|
||||
for(var/mob/M in viewers(1, location))
|
||||
if (prob (50 * amount))
|
||||
M << "\red The explosion knocks you down."
|
||||
M << "<span class='warning'>The explosion knocks you down.</span>"
|
||||
M.Weaken(rand(1,5))
|
||||
return
|
||||
else
|
||||
@@ -506,7 +506,7 @@ steam.start() -- spawns the effect
|
||||
flash += (round(amount/4) * flashing_factor)
|
||||
|
||||
for(var/mob/M in viewers(8, location))
|
||||
M << "\red The solution violently explodes."
|
||||
M << "<span class='warning'>The solution violently explodes.</span>"
|
||||
|
||||
explosion(location, devastation, heavy, light, flash)
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
proc/Gib(atom/location, var/list/viruses = list(), var/datum/dna/MobDNA = null)
|
||||
if(gibtypes.len != gibamounts.len || gibamounts.len != gibdirections.len)
|
||||
world << "\red Gib list length mismatch!"
|
||||
world << "<span class='warning'>Gib list length mismatch!</span>"
|
||||
return
|
||||
|
||||
var/obj/effect/decal/cleanable/blood/gibs/gib = null
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
return 1
|
||||
else if(istype(mover, /mob/living))
|
||||
if(prob(50))
|
||||
mover << "\red You get stuck in \the [src] for a moment."
|
||||
mover << "<span class='warning'>You get stuck in \the [src] for a moment.</span>"
|
||||
return 0
|
||||
else if(istype(mover, /obj/item/projectile))
|
||||
return prob(30)
|
||||
@@ -78,14 +78,32 @@
|
||||
New()
|
||||
pixel_x = rand(3,-3)
|
||||
pixel_y = rand(3,-3)
|
||||
processing_objects.Add(src)
|
||||
processing_objects |= src
|
||||
|
||||
/obj/effect/spider/eggcluster/New(var/location, var/atom/parent)
|
||||
get_light_and_color(parent)
|
||||
..()
|
||||
|
||||
/obj/effect/spider/eggcluster/Destroy()
|
||||
processing_objects -= src
|
||||
if(istype(loc, /obj/item/organ/external))
|
||||
var/obj/item/organ/external/O = loc
|
||||
O.implants -= src
|
||||
|
||||
..()
|
||||
|
||||
/obj/effect/spider/eggcluster/process()
|
||||
amount_grown += rand(0,2)
|
||||
if(amount_grown >= 100)
|
||||
var/num = rand(6,24)
|
||||
var/obj/item/organ/external/O = null
|
||||
if(istype(loc, /obj/item/organ/external))
|
||||
O = loc
|
||||
|
||||
for(var/i=0, i<num, i++)
|
||||
new /obj/effect/spider/spiderling(src.loc)
|
||||
var/spiderling = PoolOrNew(/obj/effect/spider/spiderling, list(src.loc, src))
|
||||
if(O)
|
||||
O.implants += spiderling
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/spider/spiderling
|
||||
@@ -95,16 +113,24 @@
|
||||
anchored = 0
|
||||
layer = 2.7
|
||||
health = 3
|
||||
var/last_itch = 0
|
||||
var/amount_grown = -1
|
||||
var/obj/machinery/atmospherics/unary/vent_pump/entry_vent
|
||||
var/travelling_in_vent = 0
|
||||
New()
|
||||
pixel_x = rand(6,-6)
|
||||
pixel_y = rand(6,-6)
|
||||
processing_objects.Add(src)
|
||||
//50% chance to grow up
|
||||
if(prob(50))
|
||||
amount_grown = 1
|
||||
|
||||
/obj/effect/spider/spiderling/New(var/location, var/atom/parent)
|
||||
pixel_x = rand(6,-6)
|
||||
pixel_y = rand(6,-6)
|
||||
processing_objects |= src
|
||||
//50% chance to grow up
|
||||
if(prob(50))
|
||||
amount_grown = 1
|
||||
get_light_and_color(parent)
|
||||
..()
|
||||
|
||||
/obj/effect/spider/spiderling/Destroy()
|
||||
processing_objects -= src
|
||||
..()
|
||||
|
||||
/obj/effect/spider/spiderling/Bump(atom/user)
|
||||
if(istype(user, /obj/structure/table))
|
||||
@@ -150,7 +176,7 @@
|
||||
return
|
||||
|
||||
if(prob(50))
|
||||
src.visible_message("\blue You hear something squeezing through the ventilation ducts.",2)
|
||||
src.visible_message("<span class='notice'>You hear something squeezing through the ventilation ducts.</span>",2)
|
||||
sleep(travel_time)
|
||||
|
||||
if(!exit_vent || exit_vent.welded)
|
||||
@@ -166,29 +192,45 @@
|
||||
entry_vent = null
|
||||
//=================
|
||||
|
||||
else if(prob(25))
|
||||
var/list/nearby = oview(5, src)
|
||||
if(nearby.len)
|
||||
var/target_atom = pick(nearby)
|
||||
walk_to(src, target_atom, 5)
|
||||
if(prob(25))
|
||||
src.visible_message("\blue \the [src] skitters[pick(" away"," around","")].")
|
||||
else if(prob(5))
|
||||
//vent crawl!
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/v in view(7,src))
|
||||
if(!v.welded)
|
||||
entry_vent = v
|
||||
walk_to(src, entry_vent, 5)
|
||||
break
|
||||
if(isturf(loc))
|
||||
if(prob(25))
|
||||
var/list/nearby = trange(5, src) - loc
|
||||
if(nearby.len)
|
||||
var/target_atom = pick(nearby)
|
||||
walk_to(src, target_atom, 5)
|
||||
if(prob(25))
|
||||
src.visible_message("<span class='notice'>\The [src] skitters[pick(" away"," around","")].</span>")
|
||||
else if(prob(5))
|
||||
//vent crawl!
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/v in view(7,src))
|
||||
if(!v.welded)
|
||||
entry_vent = v
|
||||
walk_to(src, entry_vent, 5)
|
||||
break
|
||||
|
||||
if(prob(1))
|
||||
src.visible_message("\blue \the [src] chitters.")
|
||||
if(isturf(loc) && amount_grown > 0)
|
||||
amount_grown += rand(0,2)
|
||||
if(amount_grown >= 100)
|
||||
var/spawn_type = pick(typesof(/mob/living/simple_animal/hostile/giant_spider))
|
||||
new spawn_type(src.loc)
|
||||
new spawn_type(src.loc, src)
|
||||
qdel(src)
|
||||
else if(isorgan(loc))
|
||||
if(!amount_grown) amount_grown = 1
|
||||
var/obj/item/organ/external/O = loc
|
||||
if(!O.owner || O.owner.stat == DEAD || amount_grown > 80)
|
||||
O.implants -= src
|
||||
src.loc = O.owner ? O.owner.loc : O.loc
|
||||
src.visible_message("<span class='warning'>\A [src] makes its way out of [O.owner ? "[O.owner]'s [O.name]" : "\the [O]"]!</span>")
|
||||
if(O.owner)
|
||||
O.owner.apply_damage(1, BRUTE, O.limb_name)
|
||||
else if(prob(1))
|
||||
O.owner.apply_damage(1, TOX, O.limb_name)
|
||||
if(world.time > last_itch + 30 SECONDS)
|
||||
last_itch = world.time
|
||||
O.owner << "<span class='notice'>Your [O.name] itches...</span>"
|
||||
else if(prob(1))
|
||||
src.visible_message("<span class='notice'>\The [src] skitters.</span>")
|
||||
|
||||
if(amount_grown)
|
||||
amount_grown += rand(0,2)
|
||||
|
||||
/obj/effect/decal/cleanable/spiderling_remains
|
||||
name = "spiderling remains"
|
||||
@@ -206,7 +248,7 @@
|
||||
icon_state = pick("cocoon1","cocoon2","cocoon3")
|
||||
|
||||
/obj/effect/spider/cocoon/Destroy()
|
||||
src.visible_message("\red \the [src] splits open.")
|
||||
src.visible_message("<span class='warning'>\The [src] splits open.</span>")
|
||||
for(var/atom/movable/A in contents)
|
||||
A.loc = src.loc
|
||||
return ..()
|
||||
|
||||
Reference in New Issue
Block a user