mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-13 03:02:38 +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
|
return
|
||||||
|
|
||||||
/mob/living/canUseTopic(atom/movable/M, be_close = 0, no_dextery = 0)
|
/mob/living/canUseTopic(atom/movable/M, be_close = 0, no_dextery = 0)
|
||||||
|
if(incapacitated())
|
||||||
|
return
|
||||||
if(no_dextery)
|
if(no_dextery)
|
||||||
if(be_close && in_range(M, src))
|
if(be_close && in_range(M, src))
|
||||||
return 1
|
return 1
|
||||||
|
|||||||
@@ -573,6 +573,7 @@
|
|||||||
/**********************Facehugger toy**********************/
|
/**********************Facehugger toy**********************/
|
||||||
|
|
||||||
/obj/item/clothing/mask/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."
|
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
|
throwforce = 0
|
||||||
real = 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
|
var/param = null
|
||||||
if (findtext(act, "-", 1, null))
|
if (findtext(act, "-", 1, null))
|
||||||
@@ -7,8 +7,6 @@
|
|||||||
act = copytext(act, 1, t1)
|
act = copytext(act, 1, t1)
|
||||||
|
|
||||||
var/muzzled = is_muzzled()
|
var/muzzled = is_muzzled()
|
||||||
var/m_type = 1
|
|
||||||
var/message
|
|
||||||
|
|
||||||
switch(act) //Alphabetical please
|
switch(act) //Alphabetical please
|
||||||
if ("deathgasp","deathgasps")
|
if ("deathgasp","deathgasps")
|
||||||
@@ -25,6 +23,10 @@
|
|||||||
message = "<span class='name'>[src]</span> hisses."
|
message = "<span class='name'>[src]</span> hisses."
|
||||||
m_type = 2
|
m_type = 2
|
||||||
|
|
||||||
|
if ("me")
|
||||||
|
..()
|
||||||
|
return
|
||||||
|
|
||||||
if ("moan","moans")
|
if ("moan","moans")
|
||||||
message = "<span class='name'>[src]</span> moans!"
|
message = "<span class='name'>[src]</span> moans!"
|
||||||
m_type = 2
|
m_type = 2
|
||||||
|
|||||||
@@ -77,17 +77,3 @@
|
|||||||
icon_state = "queen_s"
|
icon_state = "queen_s"
|
||||||
pixel_x = -16
|
pixel_x = -16
|
||||||
mob_size = MOB_SIZE_LARGE
|
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)
|
if(lying > 0)
|
||||||
lying = 90 //Anything else looks retarded
|
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()
|
/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 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(locate(/obj/structure/alien/weeds) in owner.loc)
|
||||||
if(owner.health >= owner.maxHealth - owner.getCloneLoss())
|
if(owner.health >= owner.maxHealth)
|
||||||
owner.adjustPlasma(plasma_rate)
|
owner.adjustPlasma(plasma_rate)
|
||||||
else
|
else
|
||||||
var/mod = 1
|
var/heal_amt = heal_rate
|
||||||
if(!isalien(owner))
|
if(!isalien(owner))
|
||||||
mod = 0.2
|
heal_amt *= 0.2
|
||||||
owner.adjustBruteLoss(-heal_rate*mod)
|
owner.adjustPlasma(plasma_rate*0.5)
|
||||||
owner.adjustFireLoss(-heal_rate*mod)
|
owner.adjustBruteLoss(-heal_amt)
|
||||||
owner.adjustOxyLoss(-heal_rate*mod)
|
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)
|
/obj/item/organ/internal/alien/plasmavessel/Insert(mob/living/carbon/M, special = 0)
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -3,16 +3,20 @@
|
|||||||
if(.)
|
if(.)
|
||||||
playsound(loc, "hiss", 25, 1, 1) //erp just isn't the same without sound feedback
|
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]")
|
log_say("[key_name(src)] : [message]")
|
||||||
message = trim(message)
|
message = trim(message)
|
||||||
if(!message) return
|
if(!message) return
|
||||||
|
|
||||||
var/message_a = say_quote(message)
|
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)
|
for(var/mob/S in player_list)
|
||||||
if((!S.stat && S.hivecheck()) || (S in dead_mob_list))
|
if((!S.stat && S.hivecheck()) || (S in dead_mob_list))
|
||||||
S << rendered
|
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()
|
/mob/living/carbon/hivecheck()
|
||||||
return getorgan(/obj/item/organ/internal/alien/hivenode)
|
return getorgan(/obj/item/organ/internal/alien/hivenode)
|
||||||
|
|||||||
@@ -187,7 +187,6 @@ var/const/MAX_ACTIVE_TIME = 400
|
|||||||
else
|
else
|
||||||
target.visible_message("<span class='danger'>[src] violates [target]'s face!</span>", \
|
target.visible_message("<span class='danger'>[src] violates [target]'s face!</span>", \
|
||||||
"<span class='userdanger'>[src] violates [target]'s face!</span>")
|
"<span class='userdanger'>[src] violates [target]'s face!</span>")
|
||||||
return
|
|
||||||
|
|
||||||
/obj/item/clothing/mask/facehugger/proc/GoActive()
|
/obj/item/clothing/mask/facehugger/proc/GoActive()
|
||||||
if(stat == DEAD || stat == CONSCIOUS)
|
if(stat == DEAD || stat == CONSCIOUS)
|
||||||
@@ -196,20 +195,10 @@ var/const/MAX_ACTIVE_TIME = 400
|
|||||||
stat = CONSCIOUS
|
stat = CONSCIOUS
|
||||||
icon_state = "[initial(icon_state)]"
|
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()
|
/obj/item/clothing/mask/facehugger/proc/GoIdle()
|
||||||
if(stat == DEAD || stat == UNCONSCIOUS)
|
if(stat == DEAD || stat == UNCONSCIOUS)
|
||||||
return
|
return
|
||||||
|
|
||||||
/* RemoveActiveIndicators() */
|
|
||||||
|
|
||||||
stat = UNCONSCIOUS
|
stat = UNCONSCIOUS
|
||||||
icon_state = "[initial(icon_state)]_inactive"
|
icon_state = "[initial(icon_state)]_inactive"
|
||||||
|
|
||||||
@@ -221,15 +210,12 @@ var/const/MAX_ACTIVE_TIME = 400
|
|||||||
if(stat == DEAD)
|
if(stat == DEAD)
|
||||||
return
|
return
|
||||||
|
|
||||||
/* RemoveActiveIndicators() */
|
|
||||||
|
|
||||||
icon_state = "[initial(icon_state)]_dead"
|
icon_state = "[initial(icon_state)]_dead"
|
||||||
|
item_state = "facehugger_inactive"
|
||||||
stat = DEAD
|
stat = DEAD
|
||||||
|
|
||||||
visible_message("<span class='danger'>[src] curls up into a ball!</span>")
|
visible_message("<span class='danger'>[src] curls up into a ball!</span>")
|
||||||
|
|
||||||
return
|
|
||||||
|
|
||||||
/proc/CanHug(mob/living/M)
|
/proc/CanHug(mob/living/M)
|
||||||
if(!istype(M))
|
if(!istype(M))
|
||||||
return 0
|
return 0
|
||||||
|
|||||||
@@ -111,6 +111,11 @@
|
|||||||
else
|
else
|
||||||
message = "<B>[src]</B> makes a noise."
|
message = "<B>[src]</B> makes a noise."
|
||||||
|
|
||||||
|
if ("me")
|
||||||
|
if(!silent)
|
||||||
|
..()
|
||||||
|
return
|
||||||
|
|
||||||
if ("nod","nods")
|
if ("nod","nods")
|
||||||
message = "<B>[src]</B> nods."
|
message = "<B>[src]</B> nods."
|
||||||
m_type = 1
|
m_type = 1
|
||||||
|
|||||||
@@ -1,45 +1,58 @@
|
|||||||
/mob/living/carbon/monkey/examine(mob/user)
|
/mob/living/carbon/examine(mob/user)
|
||||||
var/msg = "<span class='info'>*---------*\nThis is \icon[src] \a <EM>[src]</EM>!\n"
|
var/msg = "<span class='info'>*---------*\nThis is \icon[src] \a <EM>[src]</EM>!\n"
|
||||||
|
|
||||||
if (src.handcuffed)
|
if (handcuffed)
|
||||||
msg += "It is \icon[src.handcuffed] handcuffed!\n"
|
msg += "It is \icon[src.handcuffed] handcuffed!\n"
|
||||||
if (src.head)
|
if (head)
|
||||||
msg += "It has \icon[src.head] \a [src.head] on its head. \n"
|
msg += "It has \icon[src.head] \a [src.head] on its head. \n"
|
||||||
if (src.wear_mask)
|
if (wear_mask)
|
||||||
msg += "It has \icon[src.wear_mask] \a [src.wear_mask] on its face.\n"
|
msg += "It has \icon[src.wear_mask] \a [src.wear_mask] on its face.\n"
|
||||||
if (src.l_hand)
|
if (l_hand)
|
||||||
msg += "It has \icon[src.l_hand] \a [src.l_hand] in its left hand.\n"
|
msg += "It has \icon[src.l_hand] \a [src.l_hand] in its left hand.\n"
|
||||||
if (src.r_hand)
|
if (r_hand)
|
||||||
msg += "It has \icon[src.r_hand] \a [src.r_hand] in its right hand.\n"
|
msg += "It has \icon[src.r_hand] \a [src.r_hand] in its right hand.\n"
|
||||||
if (src.back)
|
if (back)
|
||||||
msg += "It has \icon[src.back] \a [src.back] on its back.\n"
|
msg += "It has \icon[src.back] \a [src.back] on its back.\n"
|
||||||
if (src.stat == DEAD)
|
if (stat == DEAD)
|
||||||
msg += "<span class='deadsay'>It is limp and unresponsive, with no signs of life.</span>\n"
|
msg += "<span class='deadsay'>It is limp and unresponsive, with no signs of life.</span>\n"
|
||||||
else
|
else
|
||||||
msg += "<span class='warning'>"
|
msg += "<span class='warning'>"
|
||||||
if (src.getBruteLoss())
|
var/temp = getBruteLoss()
|
||||||
if (src.getBruteLoss() < 30)
|
if(temp)
|
||||||
msg += "It has minor bruising.\n"
|
if (temp < 30)
|
||||||
else
|
msg += "It has minor bruising.\n"
|
||||||
msg += "<B>It has severe bruising!</B>\n"
|
else
|
||||||
if (src.getFireLoss())
|
msg += "<B>It has severe bruising!</B>\n"
|
||||||
if (src.getFireLoss() < 30)
|
|
||||||
msg += "It has minor burns.\n"
|
temp = getFireLoss()
|
||||||
else
|
if(temp)
|
||||||
msg += "<B>It has severe burns!</B>\n"
|
if (temp < 30)
|
||||||
|
msg += "It has minor burns.\n"
|
||||||
if (src.fire_stacks > 0)
|
else
|
||||||
msg += "It's covered in something flammable.\n"
|
msg += "<B>It has severe burns!</B>\n"
|
||||||
if (src.fire_stacks < 0)
|
|
||||||
msg += "It's soaked in water.\n"
|
temp = getCloneLoss()
|
||||||
|
if(temp)
|
||||||
if (src.stat == UNCONSCIOUS)
|
if(getCloneLoss() < 30)
|
||||||
msg += "It isn't responding to anything around it; it seems to be asleep.\n"
|
msg += "It is slightly deformed.\n"
|
||||||
msg += "</span>"
|
else
|
||||||
|
msg += "<b>It is severely deformed.</b>\n"
|
||||||
if (src.digitalcamo)
|
|
||||||
msg += "It is moving its body in an unnatural and blatantly unsimian manner.\n"
|
if(getBrainLoss() > 60)
|
||||||
|
msg += "It seems to be clumsy and unable to think.\n"
|
||||||
msg += "*---------*</span>"
|
|
||||||
|
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
|
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
|
var/param = null
|
||||||
if (findtext(act, "-", 1, null))
|
if (findtext(act, "-", 1, null))
|
||||||
@@ -6,10 +6,7 @@
|
|||||||
param = copytext(act, t1 + 1, length(act) + 1)
|
param = copytext(act, t1 + 1, length(act) + 1)
|
||||||
act = copytext(act, 1, t1)
|
act = copytext(act, 1, t1)
|
||||||
|
|
||||||
|
|
||||||
var/muzzled = is_muzzled()
|
var/muzzled = is_muzzled()
|
||||||
var/m_type = 1
|
|
||||||
var/message
|
|
||||||
|
|
||||||
switch(act) //Ooh ooh ah ah keep this alphabetical ooh ooh ah ah!
|
switch(act) //Ooh ooh ah ah keep this alphabetical ooh ooh ah ah!
|
||||||
if ("deathgasp","deathgasps")
|
if ("deathgasp","deathgasps")
|
||||||
@@ -21,15 +18,19 @@
|
|||||||
message = "<B>[src]</B> gnarls and shows its teeth.."
|
message = "<B>[src]</B> gnarls and shows its teeth.."
|
||||||
m_type = 2
|
m_type = 2
|
||||||
|
|
||||||
if ("paw")
|
if ("me")
|
||||||
if (!src.restrained())
|
..()
|
||||||
message = "<B>[src]</B> flails its paw."
|
return
|
||||||
m_type = 1
|
|
||||||
|
|
||||||
if ("moan","moans")
|
if ("moan","moans")
|
||||||
message = "<B>[src]</B> moans!"
|
message = "<B>[src]</B> moans!"
|
||||||
m_type = 2
|
m_type = 2
|
||||||
|
|
||||||
|
if ("paw")
|
||||||
|
if (!src.restrained())
|
||||||
|
message = "<B>[src]</B> flails its paw."
|
||||||
|
m_type = 1
|
||||||
|
|
||||||
if ("roar","roars")
|
if ("roar","roars")
|
||||||
if (!muzzled)
|
if (!muzzled)
|
||||||
message = "<B>[src]</B> roars."
|
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"
|
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
|
else
|
||||||
..(act)
|
..()
|
||||||
|
|
||||||
if ((message && src.stat == 0))
|
if ((message && src.stat == 0))
|
||||||
if(src.client)
|
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\carbon_defines.dm"
|
||||||
#include "code\modules\mob\living\carbon\death.dm"
|
#include "code\modules\mob\living\carbon\death.dm"
|
||||||
#include "code\modules\mob\living\carbon\emote.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\inventory.dm"
|
||||||
#include "code\modules\mob\living\carbon\life.dm"
|
#include "code\modules\mob\living\carbon\life.dm"
|
||||||
#include "code\modules\mob\living\carbon\say.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\human\whisper.dm"
|
||||||
#include "code\modules\mob\living\carbon\monkey\death.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\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\inventory.dm"
|
||||||
#include "code\modules\mob\living\carbon\monkey\life.dm"
|
#include "code\modules\mob\living\carbon\monkey\life.dm"
|
||||||
#include "code\modules\mob\living\carbon\monkey\login.dm"
|
#include "code\modules\mob\living\carbon\monkey\login.dm"
|
||||||
|
|||||||
Reference in New Issue
Block a user