mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-21 20:11:04 +01:00
Help Up instead of Shake Up (#7624)
Whenever you use help intent on someone who is lying down, you hold out your hand instead. The person lying down can then click on you with help intent to take that hand and be helped up. I also ported over Polaris' code for hoisting yourself up by grabbing onto other people but sets them on fire if you're on fire. I also modified the time it takes to pull yourself up so it's longer than in Polaris. Clicking on the person lying down again, moving away, or getting incapacitated will retract your hand. Clicking on the person helping you up while lying down with harm intent slaps away their hand. Don't be a brute. Teamwork makes the dream work.
This commit is contained in:
@@ -50,11 +50,13 @@
|
||||
if(germ_level < GERM_LEVEL_MOVE_CAP && prob(8))
|
||||
germ_level++
|
||||
|
||||
src.help_up_offer = 0
|
||||
|
||||
/mob/living/carbon/relaymove(var/mob/living/user, direction)
|
||||
if((user in contents) && istype(user))
|
||||
if(user.last_special <= world.time)
|
||||
user.last_special = world.time + 50
|
||||
src.visible_message("<span class='danger'>You hear something rumbling inside [src]'s stomach...</span>")
|
||||
src.visible_message(span("danger", "You hear something rumbling inside [src]'s stomach..."))
|
||||
var/obj/item/I = user.get_active_hand()
|
||||
if(I && I.force)
|
||||
var/d = rand(round(I.force / 4), I.force)
|
||||
@@ -67,7 +69,7 @@
|
||||
H.updatehealth()
|
||||
else
|
||||
src.take_organ_damage(d)
|
||||
user.visible_message("<span class='danger'>[user] attacks [src]'s stomach wall with the [I.name]!</span>")
|
||||
user.visible_message(span("danger", "[user] attacks [src]'s stomach wall with the [I.name]!"))
|
||||
playsound(user.loc, 'sound/effects/attackblob.ogg', 50, 1)
|
||||
|
||||
if(prob(src.getBruteLoss() - 50))
|
||||
@@ -107,9 +109,9 @@
|
||||
if(H.bg)
|
||||
to_chat(H, span("danger", "You sense some disturbance to your physical body!"))
|
||||
else
|
||||
visible_message("<span class='notice'>[M] [action] [src], but they do not respond... Maybe they have S.S.D?</span>")
|
||||
visible_message(span("notice", "[M] [action] [src], but they do not respond... Maybe they have S.S.D?"))
|
||||
else if(client && willfully_sleeping)
|
||||
visible_message("<span class='notice'>[M] [action] [src] waking [t_him] up!</span>")
|
||||
visible_message(span("notice", "[M] [action] [src] waking [t_him] up!"))
|
||||
sleeping = 0
|
||||
willfully_sleeping = 0
|
||||
|
||||
@@ -138,17 +140,17 @@
|
||||
playsound(loc, "sparks", 50, 1, -1)
|
||||
if (shock_damage > 15 || tesla_shock)
|
||||
src.visible_message(
|
||||
"<span class='warning'>[src] was shocked by the [source]!</span>", \
|
||||
"<span class='danger'>You feel a powerful shock course through your body!</span>", \
|
||||
"<span class='warning'>You hear a heavy electrical crack.</span>" \
|
||||
span("warning", "[src] was shocked by the [source]!"), \
|
||||
span("danger", "You feel a powerful shock course through your body!"), \
|
||||
span("warning", "You hear a heavy electrical crack.") \
|
||||
)
|
||||
Stun(10)//This should work for now, more is really silly and makes you lay there forever
|
||||
Weaken(10)
|
||||
else
|
||||
src.visible_message(
|
||||
"<span class='warning'>[src] was mildly shocked by the [source].</span>", \
|
||||
"<span class='warning'>You feel a mild shock course through your body.</span>", \
|
||||
"<span class='warning'>You hear a light zapping.</span>" \
|
||||
span("warning", "[src] was mildly shocked by the [source]."), \
|
||||
span("warning", "You feel a mild shock course through your body."), \
|
||||
span("warning", "You hear a light zapping.") \
|
||||
)
|
||||
|
||||
spark(loc, 5, alldirs)
|
||||
@@ -163,7 +165,7 @@
|
||||
if(item_in_hand) //this segment checks if the item in your hand is twohanded.
|
||||
if(istype(item_in_hand,/obj/item/material/twohanded) || istype(item_in_hand,/obj/item/gun) || istype(item_in_hand,/obj/item/pickaxe))
|
||||
if(item_in_hand:wielded == 1)
|
||||
to_chat(usr, "<span class='warning'>Your other hand is too busy holding the [item_in_hand.name]</span>")
|
||||
to_chat(usr, span("warning", "Your other hand is too busy holding the [item_in_hand.name]"))
|
||||
return
|
||||
src.hand = !( src.hand )
|
||||
if(hud_used.l_hand_hud_object && hud_used.r_hand_hud_object)
|
||||
@@ -198,7 +200,7 @@
|
||||
var/mob/living/carbon/human/H = src
|
||||
src.visible_message( \
|
||||
text("<span class='notice'>[src] examines [].</span>",src.gender==MALE?"himself":"herself"), \
|
||||
"<span class='notice'>You check yourself for injuries.</span>" \
|
||||
span("notice", "You check yourself for injuries.") \
|
||||
)
|
||||
|
||||
for(var/obj/item/organ/external/org in H.organs)
|
||||
@@ -243,19 +245,19 @@
|
||||
else if (on_fire)
|
||||
playsound(src.loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
|
||||
if (M.on_fire)
|
||||
M.visible_message("<span class='warning'>[M] tries to pat out [src]'s flames, but to no avail!</span>",
|
||||
"<span class='warning'>You try to pat out [src]'s flames, but to no avail! Put yourself out first!</span>")
|
||||
M.visible_message(span("warning", "[M] tries to pat out [src]'s flames, but to no avail!"),
|
||||
span("warning", "You try to pat out [src]'s flames, but to no avail! Put yourself out first!"))
|
||||
else
|
||||
M.visible_message("<span class='warning'>[M] tries to pat out [src]'s flames!</span>",
|
||||
"<span class='warning'>You try to pat out [src]'s flames! Hot!</span>")
|
||||
M.visible_message(span("warning", "[M] tries to pat out [src]'s flames!"),
|
||||
span("warning", "You try to pat out [src]'s flames! Hot!"))
|
||||
if(do_mob(M, src, 1.5 SECONDS))
|
||||
if (M.IgniteMob(prob(10)))
|
||||
M.visible_message("<span class='danger'>The fire spreads from [src] to [M]!</span>",
|
||||
"<span class='danger'>The fire spreads to you as well!</span>")
|
||||
M.visible_message(span("danger", "The fire spreads from [src] to [M]!"),
|
||||
span("danger", "The fire spreads to you as well!"))
|
||||
else
|
||||
if (src.ExtinguishMob(1))
|
||||
M.visible_message("<span class='warning'>[M] successfully pats out [src]'s flames.</span>",
|
||||
"<span class='warning'>You successfully pat out [src]'s flames.</span>")
|
||||
M.visible_message(span("warning", "[M] successfully pats out [src]'s flames."),
|
||||
span("warning", "You successfully pat out [src]'s flames."))
|
||||
else
|
||||
var/t_him = "it"
|
||||
if (src.gender == MALE)
|
||||
@@ -275,17 +277,42 @@
|
||||
if(H.bg)
|
||||
to_chat(H, span("warning", "You sense some disturbance to your physical body, like someone is trying to wake you up."))
|
||||
else
|
||||
M.visible_message("<span class='notice'>[M] shakes [src] trying to wake [t_him] up!</span>", \
|
||||
"<span class='notice'>You shake [src], but they do not respond... Maybe they have S.S.D?</span>")
|
||||
else if(lying || src.sleeping)
|
||||
src.sleeping = max(0,src.sleeping-5)
|
||||
if(src.sleeping == 0)
|
||||
src.resting = 0
|
||||
M.visible_message("<span class='notice'>[M] shakes [src] trying to wake [t_him] up!</span>", \
|
||||
"<span class='notice'>You shake [src] trying to wake [t_him] up!</span>")
|
||||
M.visible_message(span("notice", "[M] shakes [src] trying to wake [t_him] up!"), \
|
||||
span("notice", "You shake [src], but they do not respond... Maybe they have S.S.D?"))
|
||||
else if(lying)
|
||||
if(src.sleeping)
|
||||
src.sleeping = max(0,src.sleeping-5)
|
||||
M.visible_message(span("notice", "[M] shakes [src] trying to wake [t_him] up!"), \
|
||||
span("notice", "You shake [src] trying to wake [t_him] up!"))
|
||||
else
|
||||
M.help_up_offer = !M.help_up_offer
|
||||
if(M.help_up_offer)
|
||||
M.visible_message(span("notice", "[M] holds a hand out to [src]."), \
|
||||
span("notice", "You hold a hand out to [src]."))
|
||||
else
|
||||
M.visible_message(span("warning", "[M] retracts their hand from [src]'s direction."), \
|
||||
span("warning", "You retract your hand from [src]'s direction."))
|
||||
else
|
||||
var/mob/living/carbon/human/tapper = M
|
||||
if(istype(tapper))
|
||||
if(M.resting)
|
||||
if(src.help_up_offer)
|
||||
M.visible_message(span("notice", "[M] grabs onto [src]'s hand and is hoisted up."), \
|
||||
span("notice", "You grab onto [src]'s hand and are hoisted up."))
|
||||
if(do_after(M, 0.5 SECONDS))
|
||||
M.resting = 0
|
||||
src.help_up_offer = 0
|
||||
else
|
||||
M.visible_message(span("warning", "[M] grabs onto [src], trying to pull themselves up."), \
|
||||
span("warning", "You grab onto [src], trying to pull yourself up."))
|
||||
if(M.fire_stacks >= (src.fire_stacks + 3))
|
||||
src.adjust_fire_stacks(1)
|
||||
M.adjust_fire_stacks(-1)
|
||||
if(M.on_fire)
|
||||
src.IgniteMob()
|
||||
if(do_after(M, 4 SECONDS))
|
||||
M.resting = 0
|
||||
|
||||
else if(istype(tapper))
|
||||
tapper.species.tap(tapper,src)
|
||||
else
|
||||
M.visible_message("<span class='notice'>[M] taps [src] to get their attention!</span>", \
|
||||
@@ -370,7 +397,7 @@
|
||||
set category = "IC"
|
||||
|
||||
if(usr.sleeping)
|
||||
to_chat(usr, "<span class='warning'>You are already sleeping</span>")
|
||||
to_chat(usr, span("warning", "You are already sleeping"))
|
||||
return
|
||||
if(alert(src,"You sure you want to sleep for a while?","Sleep","Yes","No") == "Yes")
|
||||
willfully_sleeping = 1
|
||||
@@ -390,7 +417,7 @@
|
||||
if(buckled)
|
||||
return 0
|
||||
stop_pulling()
|
||||
to_chat(src, "<span class='warning'>You slipped on [slipped_on]!</span>")
|
||||
to_chat(src, span("warning", "You slipped on [slipped_on]!"))
|
||||
playsound(src.loc, 'sound/misc/slip.ogg', 50, 1, -3)
|
||||
Stun(stun_duration)
|
||||
Weaken(Floor(stun_duration/2))
|
||||
|
||||
@@ -187,3 +187,23 @@
|
||||
src.attack_log += "\[[time_stamp()]\]<font color='orange'> Got knifed by [user.name] ([user.ckey]) with [W.name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(W.damtype)])</font>"
|
||||
msg_admin_attack("[key_name_admin(user)] knifed [key_name_admin(src)] with [W.name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(W.damtype)])",ckey=key_name(user),ckey_target=key_name(src) )
|
||||
return 1
|
||||
|
||||
/mob/living/carbon/Stun(amount)
|
||||
help_up_offer = 0
|
||||
..()
|
||||
|
||||
/mob/living/carbon/Weaken(amount)
|
||||
help_up_offer = 0
|
||||
..()
|
||||
|
||||
/mob/living/carbon/Paralyse(amount)
|
||||
help_up_offer = 0
|
||||
..()
|
||||
|
||||
/mob/living/carbon/Sleeping(amount)
|
||||
help_up_offer = 0
|
||||
..()
|
||||
|
||||
/mob/living/carbon/Resting(amount)
|
||||
help_up_offer = 0
|
||||
..()
|
||||
@@ -33,5 +33,9 @@
|
||||
|
||||
var/willfully_sleeping = 0
|
||||
var/consume_nutrition_from_air = FALSE // used by Diona
|
||||
|
||||
var/help_up_offer = 0 //if they have their hand out to offer someone up from the ground.
|
||||
|
||||
var/list/organs_by_name = list() // map organ names to organs
|
||||
var/list/internal_organs_by_name = list() // so internal organs have less ickiness too
|
||||
var/list/internal_organs_by_name = list() // so internal organs have less ickiness too
|
||||
|
||||
|
||||
@@ -352,6 +352,11 @@
|
||||
// Finally, apply damage to target
|
||||
apply_damage(real_damage, hit_dam_type, hit_zone, armour, sharp=is_sharp, edge=is_edge)
|
||||
|
||||
|
||||
if(M.resting && src.help_up_offer)
|
||||
M.visible_message(span("warning", "[M] slaps away [src]'s hand!"))
|
||||
src.help_up_offer = 0
|
||||
|
||||
if(I_DISARM)
|
||||
var/disarm_cost
|
||||
var/usesStamina
|
||||
|
||||
Reference in New Issue
Block a user