Merge remote-tracking branch 'remotes/upstream/dev' into definecrusade

This commit is contained in:
Chinsky
2015-06-05 11:26:25 +03:00
277 changed files with 1746 additions and 1637 deletions
+18 -18
View File
@@ -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=""
+6 -6
View File
@@ -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)
+1 -1
View File
@@ -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
+73 -31
View File
@@ -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 ..()