mirror of
https://github.com/fulpstation/fulpstation.git
synced 2025-12-10 10:01:40 +00:00
Merge pull request #11358 from phil235/XenoFeatures1
Facehugger inhands, xeno tweaks, and monkey bugfixes
This commit is contained in:
@@ -230,6 +230,8 @@ Class Procs:
|
||||
return
|
||||
|
||||
/mob/living/canUseTopic(atom/movable/M, be_close = 0, no_dextery = 0)
|
||||
if(incapacitated())
|
||||
return
|
||||
if(no_dextery)
|
||||
if(be_close && in_range(M, src))
|
||||
return 1
|
||||
|
||||
@@ -573,6 +573,7 @@
|
||||
/**********************Facehugger toy**********************/
|
||||
|
||||
/obj/item/clothing/mask/facehugger/toy
|
||||
item_state = "facehugger_inactive"
|
||||
desc = "A toy often used to play pranks on other miners by putting it in their beds. It takes a bit to recharge after latching onto something."
|
||||
throwforce = 0
|
||||
real = 0
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/carbon/alien/humanoid/emote(act)
|
||||
/mob/living/carbon/alien/humanoid/emote(act,m_type=1,message = null)
|
||||
|
||||
var/param = null
|
||||
if (findtext(act, "-", 1, null))
|
||||
@@ -7,8 +7,6 @@
|
||||
act = copytext(act, 1, t1)
|
||||
|
||||
var/muzzled = is_muzzled()
|
||||
var/m_type = 1
|
||||
var/message
|
||||
|
||||
switch(act) //Alphabetical please
|
||||
if ("deathgasp","deathgasps")
|
||||
@@ -25,6 +23,10 @@
|
||||
message = "<span class='name'>[src]</span> hisses."
|
||||
m_type = 2
|
||||
|
||||
if ("me")
|
||||
..()
|
||||
return
|
||||
|
||||
if ("moan","moans")
|
||||
message = "<span class='name'>[src]</span> moans!"
|
||||
m_type = 2
|
||||
|
||||
@@ -77,17 +77,3 @@
|
||||
icon_state = "queen_s"
|
||||
pixel_x = -16
|
||||
mob_size = MOB_SIZE_LARGE
|
||||
|
||||
/mob/living/carbon/alien/humanoid/queen/large/update_icons()
|
||||
update_hud() //TODO: remove the need for this to be here
|
||||
overlays.Cut()
|
||||
if(stat == DEAD)
|
||||
icon_state = "queen_dead"
|
||||
else if((stat == UNCONSCIOUS && !sleeping) || weakened)
|
||||
icon_state = "queen_l"
|
||||
else if(sleeping || lying || resting)
|
||||
icon_state = "queen_sleep"
|
||||
else
|
||||
icon_state = "queen_s"
|
||||
for(var/image/I in overlays_standing)
|
||||
overlays += I
|
||||
|
||||
@@ -50,4 +50,29 @@
|
||||
if(lying > 0)
|
||||
lying = 90 //Anything else looks retarded
|
||||
..()
|
||||
update_icons()
|
||||
update_icons()
|
||||
|
||||
|
||||
/mob/living/carbon/alien/humanoid/queen/large/update_icons()
|
||||
update_hud() //TODO: remove the need for this to be here
|
||||
overlays.Cut()
|
||||
if(stat == DEAD)
|
||||
icon_state = "queen_dead"
|
||||
else if((stat == UNCONSCIOUS && !sleeping) || weakened)
|
||||
icon_state = "queen_l"
|
||||
else if(sleeping || lying || resting)
|
||||
icon_state = "queen_sleep"
|
||||
else
|
||||
icon_state = "queen_s"
|
||||
for(var/image/I in overlays_standing)
|
||||
overlays += I
|
||||
|
||||
/mob/living/carbon/alien/humanoid/queen/large/update_inv_l_hand()
|
||||
remove_overlay(L_HAND_LAYER)
|
||||
if(handcuffed)
|
||||
drop_l_hand()
|
||||
|
||||
/mob/living/carbon/alien/humanoid/queen/large/update_inv_r_hand()
|
||||
remove_overlay(R_HAND_LAYER)
|
||||
if(handcuffed)
|
||||
drop_r_hand()
|
||||
|
||||
@@ -73,15 +73,17 @@
|
||||
/obj/item/organ/internal/alien/plasmavessel/on_life()
|
||||
//If there are alien weeds on the ground then heal if needed or give some plasma
|
||||
if(locate(/obj/structure/alien/weeds) in owner.loc)
|
||||
if(owner.health >= owner.maxHealth - owner.getCloneLoss())
|
||||
if(owner.health >= owner.maxHealth)
|
||||
owner.adjustPlasma(plasma_rate)
|
||||
else
|
||||
var/mod = 1
|
||||
var/heal_amt = heal_rate
|
||||
if(!isalien(owner))
|
||||
mod = 0.2
|
||||
owner.adjustBruteLoss(-heal_rate*mod)
|
||||
owner.adjustFireLoss(-heal_rate*mod)
|
||||
owner.adjustOxyLoss(-heal_rate*mod)
|
||||
heal_amt *= 0.2
|
||||
owner.adjustPlasma(plasma_rate*0.5)
|
||||
owner.adjustBruteLoss(-heal_amt)
|
||||
owner.adjustFireLoss(-heal_amt)
|
||||
owner.adjustOxyLoss(-heal_amt)
|
||||
owner.adjustCloneLoss(-heal_amt)
|
||||
|
||||
/obj/item/organ/internal/alien/plasmavessel/Insert(mob/living/carbon/M, special = 0)
|
||||
..()
|
||||
|
||||
@@ -3,16 +3,20 @@
|
||||
if(.)
|
||||
playsound(loc, "hiss", 25, 1, 1) //erp just isn't the same without sound feedback
|
||||
|
||||
/mob/living/proc/alien_talk(message)
|
||||
/mob/living/proc/alien_talk(message, shown_name = name)
|
||||
log_say("[key_name(src)] : [message]")
|
||||
message = trim(message)
|
||||
if(!message) return
|
||||
|
||||
var/message_a = say_quote(message)
|
||||
var/rendered = "<i><span class='game say'>Hivemind, <span class='name'>[name]</span> <span class='message'>[message_a]</span></span></i>"
|
||||
var/rendered = "<i><span class='alien'>Hivemind, <span class='name'>[shown_name]</span> <span class='message'>[message_a]</span></span></i>"
|
||||
for(var/mob/S in player_list)
|
||||
if((!S.stat && S.hivecheck()) || (S in dead_mob_list))
|
||||
S << rendered
|
||||
|
||||
/mob/living/carbon/alien/humanoid/queen/alien_talk(message, shown_name = name)
|
||||
shown_name = "<FONT size = 3>[shown_name]</FONT>"
|
||||
..(message, shown_name)
|
||||
|
||||
/mob/living/carbon/hivecheck()
|
||||
return getorgan(/obj/item/organ/internal/alien/hivenode)
|
||||
|
||||
@@ -187,7 +187,6 @@ var/const/MAX_ACTIVE_TIME = 400
|
||||
else
|
||||
target.visible_message("<span class='danger'>[src] violates [target]'s face!</span>", \
|
||||
"<span class='userdanger'>[src] violates [target]'s face!</span>")
|
||||
return
|
||||
|
||||
/obj/item/clothing/mask/facehugger/proc/GoActive()
|
||||
if(stat == DEAD || stat == CONSCIOUS)
|
||||
@@ -196,20 +195,10 @@ var/const/MAX_ACTIVE_TIME = 400
|
||||
stat = CONSCIOUS
|
||||
icon_state = "[initial(icon_state)]"
|
||||
|
||||
/* for(var/mob/living/carbon/alien/alien in world)
|
||||
var/image/activeIndicator = image('icons/mob/alien.dmi', loc = src, icon_state = "facehugger_active")
|
||||
activeIndicator.override = 1
|
||||
if(alien && alien.client)
|
||||
alien.client.images += activeIndicator */
|
||||
|
||||
return
|
||||
|
||||
/obj/item/clothing/mask/facehugger/proc/GoIdle()
|
||||
if(stat == DEAD || stat == UNCONSCIOUS)
|
||||
return
|
||||
|
||||
/* RemoveActiveIndicators() */
|
||||
|
||||
stat = UNCONSCIOUS
|
||||
icon_state = "[initial(icon_state)]_inactive"
|
||||
|
||||
@@ -221,15 +210,12 @@ var/const/MAX_ACTIVE_TIME = 400
|
||||
if(stat == DEAD)
|
||||
return
|
||||
|
||||
/* RemoveActiveIndicators() */
|
||||
|
||||
icon_state = "[initial(icon_state)]_dead"
|
||||
item_state = "facehugger_inactive"
|
||||
stat = DEAD
|
||||
|
||||
visible_message("<span class='danger'>[src] curls up into a ball!</span>")
|
||||
|
||||
return
|
||||
|
||||
/proc/CanHug(mob/living/M)
|
||||
if(!istype(M))
|
||||
return 0
|
||||
|
||||
@@ -111,6 +111,11 @@
|
||||
else
|
||||
message = "<B>[src]</B> makes a noise."
|
||||
|
||||
if ("me")
|
||||
if(!silent)
|
||||
..()
|
||||
return
|
||||
|
||||
if ("nod","nods")
|
||||
message = "<B>[src]</B> nods."
|
||||
m_type = 1
|
||||
|
||||
@@ -1,45 +1,58 @@
|
||||
/mob/living/carbon/monkey/examine(mob/user)
|
||||
var/msg = "<span class='info'>*---------*\nThis is \icon[src] \a <EM>[src]</EM>!\n"
|
||||
|
||||
if (src.handcuffed)
|
||||
msg += "It is \icon[src.handcuffed] handcuffed!\n"
|
||||
if (src.head)
|
||||
msg += "It has \icon[src.head] \a [src.head] on its head. \n"
|
||||
if (src.wear_mask)
|
||||
msg += "It has \icon[src.wear_mask] \a [src.wear_mask] on its face.\n"
|
||||
if (src.l_hand)
|
||||
msg += "It has \icon[src.l_hand] \a [src.l_hand] in its left hand.\n"
|
||||
if (src.r_hand)
|
||||
msg += "It has \icon[src.r_hand] \a [src.r_hand] in its right hand.\n"
|
||||
if (src.back)
|
||||
msg += "It has \icon[src.back] \a [src.back] on its back.\n"
|
||||
if (src.stat == DEAD)
|
||||
msg += "<span class='deadsay'>It is limp and unresponsive, with no signs of life.</span>\n"
|
||||
else
|
||||
msg += "<span class='warning'>"
|
||||
if (src.getBruteLoss())
|
||||
if (src.getBruteLoss() < 30)
|
||||
msg += "It has minor bruising.\n"
|
||||
else
|
||||
msg += "<B>It has severe bruising!</B>\n"
|
||||
if (src.getFireLoss())
|
||||
if (src.getFireLoss() < 30)
|
||||
msg += "It has minor burns.\n"
|
||||
else
|
||||
msg += "<B>It has severe burns!</B>\n"
|
||||
|
||||
if (src.fire_stacks > 0)
|
||||
msg += "It's covered in something flammable.\n"
|
||||
if (src.fire_stacks < 0)
|
||||
msg += "It's soaked in water.\n"
|
||||
|
||||
if (src.stat == UNCONSCIOUS)
|
||||
msg += "It isn't responding to anything around it; it seems to be asleep.\n"
|
||||
msg += "</span>"
|
||||
|
||||
if (src.digitalcamo)
|
||||
msg += "It is moving its body in an unnatural and blatantly unsimian manner.\n"
|
||||
|
||||
msg += "*---------*</span>"
|
||||
|
||||
/mob/living/carbon/examine(mob/user)
|
||||
var/msg = "<span class='info'>*---------*\nThis is \icon[src] \a <EM>[src]</EM>!\n"
|
||||
|
||||
if (handcuffed)
|
||||
msg += "It is \icon[src.handcuffed] handcuffed!\n"
|
||||
if (head)
|
||||
msg += "It has \icon[src.head] \a [src.head] on its head. \n"
|
||||
if (wear_mask)
|
||||
msg += "It has \icon[src.wear_mask] \a [src.wear_mask] on its face.\n"
|
||||
if (l_hand)
|
||||
msg += "It has \icon[src.l_hand] \a [src.l_hand] in its left hand.\n"
|
||||
if (r_hand)
|
||||
msg += "It has \icon[src.r_hand] \a [src.r_hand] in its right hand.\n"
|
||||
if (back)
|
||||
msg += "It has \icon[src.back] \a [src.back] on its back.\n"
|
||||
if (stat == DEAD)
|
||||
msg += "<span class='deadsay'>It is limp and unresponsive, with no signs of life.</span>\n"
|
||||
else
|
||||
msg += "<span class='warning'>"
|
||||
var/temp = getBruteLoss()
|
||||
if(temp)
|
||||
if (temp < 30)
|
||||
msg += "It has minor bruising.\n"
|
||||
else
|
||||
msg += "<B>It has severe bruising!</B>\n"
|
||||
|
||||
temp = getFireLoss()
|
||||
if(temp)
|
||||
if (temp < 30)
|
||||
msg += "It has minor burns.\n"
|
||||
else
|
||||
msg += "<B>It has severe burns!</B>\n"
|
||||
|
||||
temp = getCloneLoss()
|
||||
if(temp)
|
||||
if(getCloneLoss() < 30)
|
||||
msg += "It is slightly deformed.\n"
|
||||
else
|
||||
msg += "<b>It is severely deformed.</b>\n"
|
||||
|
||||
if(getBrainLoss() > 60)
|
||||
msg += "It seems to be clumsy and unable to think.\n"
|
||||
|
||||
if(fire_stacks > 0)
|
||||
msg += "It's covered in something flammable.\n"
|
||||
if(fire_stacks < 0)
|
||||
msg += "It's soaked in water.\n"
|
||||
|
||||
if(stat == UNCONSCIOUS)
|
||||
msg += "It isn't responding to anything around it; it seems to be asleep.\n"
|
||||
msg += "</span>"
|
||||
|
||||
if (digitalcamo)
|
||||
msg += "It is moving its body in an unnatural and blatantly unsimian manner.\n"
|
||||
|
||||
msg += "*---------*</span>"
|
||||
|
||||
user << msg
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/carbon/monkey/emote(act)
|
||||
/mob/living/carbon/monkey/emote(act,m_type=1,message = null)
|
||||
|
||||
var/param = null
|
||||
if (findtext(act, "-", 1, null))
|
||||
@@ -6,10 +6,7 @@
|
||||
param = copytext(act, t1 + 1, length(act) + 1)
|
||||
act = copytext(act, 1, t1)
|
||||
|
||||
|
||||
var/muzzled = is_muzzled()
|
||||
var/m_type = 1
|
||||
var/message
|
||||
|
||||
switch(act) //Ooh ooh ah ah keep this alphabetical ooh ooh ah ah!
|
||||
if ("deathgasp","deathgasps")
|
||||
@@ -21,15 +18,19 @@
|
||||
message = "<B>[src]</B> gnarls and shows its teeth.."
|
||||
m_type = 2
|
||||
|
||||
if ("paw")
|
||||
if (!src.restrained())
|
||||
message = "<B>[src]</B> flails its paw."
|
||||
m_type = 1
|
||||
if ("me")
|
||||
..()
|
||||
return
|
||||
|
||||
if ("moan","moans")
|
||||
message = "<B>[src]</B> moans!"
|
||||
m_type = 2
|
||||
|
||||
if ("paw")
|
||||
if (!src.restrained())
|
||||
message = "<B>[src]</B> flails its paw."
|
||||
m_type = 1
|
||||
|
||||
if ("roar","roars")
|
||||
if (!muzzled)
|
||||
message = "<B>[src]</B> roars."
|
||||
@@ -67,7 +68,7 @@
|
||||
src << "Help for monkey emotes. You can use these emotes with say \"*emote\":\n\naflap, airguitar, blink, blink_r, blush, bow-(none)/mob, burp, choke, chuckle, clap, collapse, cough, dance, deathgasp, drool, flap, frown, gasp, gnarl, giggle, glare-(none)/mob, grin, jump, laugh, look, me, moan, nod, paw, point-(atom), roar, roll, scream, scratch, screech, shake, shiver, sigh, sign-#, sit, smile, sneeze, sniff, snore, stare-(none)/mob, sulk, sway, tail, tremble, twitch, twitch_s, wave whimper, wink, yawn"
|
||||
|
||||
else
|
||||
..(act)
|
||||
..()
|
||||
|
||||
if ((message && src.stat == 0))
|
||||
if(src.client)
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 61 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 60 KiB |
@@ -1116,6 +1116,7 @@
|
||||
#include "code\modules\mob\living\carbon\carbon_defines.dm"
|
||||
#include "code\modules\mob\living\carbon\death.dm"
|
||||
#include "code\modules\mob\living\carbon\emote.dm"
|
||||
#include "code\modules\mob\living\carbon\examine.dm"
|
||||
#include "code\modules\mob\living\carbon\inventory.dm"
|
||||
#include "code\modules\mob\living\carbon\life.dm"
|
||||
#include "code\modules\mob\living\carbon\say.dm"
|
||||
@@ -1181,7 +1182,6 @@
|
||||
#include "code\modules\mob\living\carbon\human\whisper.dm"
|
||||
#include "code\modules\mob\living\carbon\monkey\death.dm"
|
||||
#include "code\modules\mob\living\carbon\monkey\emote.dm"
|
||||
#include "code\modules\mob\living\carbon\monkey\examine.dm"
|
||||
#include "code\modules\mob\living\carbon\monkey\inventory.dm"
|
||||
#include "code\modules\mob\living\carbon\monkey\life.dm"
|
||||
#include "code\modules\mob\living\carbon\monkey\login.dm"
|
||||
|
||||
Reference in New Issue
Block a user