The Dangers of Teleportation (#5651)

Teleportation using the do_teleport() proc will now have violent effects if you teleport into an unoccupied space. This currently does not effect teleportation that does not use the do_teleport() proc (wizards, ninjas, cultists).

If there is an object in your destination, and that object is both anchored and dense or opaque (turfs, tables, etcetera), then you will partially phase into the object. If you are a mob you will lose a limb, and if you are an object you will become damaged (if the object has an ex_act() defined). Then an explosion will occur based on your size (Most explosions are large enough only to damage the destination turf itself). You will be shunted into the nearest unoccupied space.

If there is NO adjacent unoccupied space, you will instead be destroyed. Mobs will gib, and objects will have crush_act called. The resulting explosion will be larger.
This commit is contained in:
LordFowl
2018-12-01 18:14:02 -05:00
committed by Werner
parent e3c37578df
commit c2953f3062
4 changed files with 134 additions and 5 deletions

View File

@@ -754,15 +754,15 @@ Note that amputating the affected organ does in fact remove the infection from t
owner.visible_message(
"<span class='danger'>\The [owner]'s [src.name] flies off in an arc!</span>",\
"<span class='moderate'><b>Your [src.name] goes flying off!</b></span>",\
"<span class='danger'>You hear a terrible sound of [gore_sound].</span>")
"<span class='danger'>You hear the terrible sound of [gore_sound].</span>")
if(DROPLIMB_BURN)
var/gore = "[(status & ORGAN_ROBOT) ? "": " of burning flesh"]"
owner.visible_message(
"<span class='danger'>\The [owner]'s [src.name] flashes away into ashes!</span>",\
"<span class='moderate'><b>Your [src.name] flashes away into ashes!</b></span>",\
"<span class='danger'>You hear a crackling sound[gore].</span>")
"<span class='danger'>You hear the crackling sound[gore].</span>")
if(DROPLIMB_BLUNT)
var/gore = "[(status & ORGAN_ROBOT) ? "": " in shower of gore"]"
var/gore = "[(status & ORGAN_ROBOT) ? "": " in a shower of gore"]"
var/gore_sound = "[(status & ORGAN_ROBOT) ? "rending sound of tortured metal" : "sickening splatter of gore"]"
owner.visible_message(
"<span class='danger'>\The [owner]'s [src.name] explodes[gore]!</span>",\