mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-26 22:57:39 +01:00
Merge pull request #3952 from CHOMPStation2/upstream-merge-12558
[MIRROR] Xenochimera QOL PR
This commit is contained in:
@@ -471,7 +471,7 @@ so as to remain in compliance with the most up-to-date laws."
|
||||
return
|
||||
if(master)
|
||||
return usr.client.Click(master, location, control, params)
|
||||
..() // CHOMPStation Edit: Pass through to click_vr
|
||||
..() // VOREStation Edit: Pass through to click_vr
|
||||
|
||||
/obj/screen/alert/Destroy()
|
||||
..()
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
name = "Low Power"
|
||||
desc = "Your battery is very low! Low power mode makes all movements slower."
|
||||
|
||||
// CHOMPEdit Start
|
||||
/obj/screen/alert/xenochimera/reconstitution
|
||||
name = "Reconstructing Form"
|
||||
desc = "You're still rebuilding your body! Click the alert to find out how long you have left."
|
||||
@@ -51,5 +50,4 @@
|
||||
if(istype(H) && istype(H.species, /datum/species/xenochimera)) // If you're somehow able to click this while not a chimera, this should prevent weird runtimes. Will need changing if regeneration is ever opened to non-chimera using the same alert.
|
||||
if(H.revive_ready == REVIVING_DONE) // Sanity check.
|
||||
H.hatch() // Hatch.
|
||||
// CHOMPEdit Finish
|
||||
*/
|
||||
*/
|
||||
|
||||
@@ -45,14 +45,15 @@
|
||||
var/turf/T = get_turf(H)
|
||||
if(T.get_lumcount() <= 0.1)
|
||||
to_chat(usr, "<span class='notice'>You are slowly calming down in darkness' safety...</span>")
|
||||
else if(isbelly(H.loc)) // CHOMPEdit: Safety message for if inside a belly.
|
||||
|
||||
else if(isbelly(H.loc)) // Safety message for if inside a belly.
|
||||
to_chat(usr, "<span class='notice'>You are slowly calming down within the darkness of something's belly, listening to their body as it moves around you. ...safe...</span>")
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>You are slowly calming down... But safety of darkness is much preferred.</span>")
|
||||
else
|
||||
if(H.nutrition < 150)
|
||||
to_chat(usr, "<span class='warning'>Your hunger is slowly making you unstable.</span>")
|
||||
if("Reconstructing Form") // CHOMPEdit: Allow Viewing Reconstruction Timer + Hatching for 'chimera
|
||||
if("Reconstructing Form") // Allow Viewing Reconstruction Timer + Hatching for 'chimera
|
||||
var/mob/living/carbon/human/H = usr
|
||||
if(istype(H) && istype(H.species, /datum/species/xenochimera)) // If you're somehow able to click this while not a chimera, this should prevent weird runtimes. Will need changing if regeneration is ever opened to non-chimera using the same alert.
|
||||
if(H.revive_ready == REVIVING_NOW)
|
||||
@@ -60,7 +61,7 @@
|
||||
else if(H.revive_ready == REVIVING_DONE)
|
||||
to_chat(usr, "<span class='warning'>You should have a notification + alert for this! Bug report that this is still here!</span>")
|
||||
|
||||
if("Ready to Hatch") // CHOMPEdit: Allow Viewing Reconstruction Timer + Hatching for 'chimera
|
||||
if("Ready to Hatch") // Allow Viewing Reconstruction Timer + Hatching for 'chimera
|
||||
var/mob/living/carbon/human/H = usr
|
||||
if(istype(H) && istype(H.species, /datum/species/xenochimera)) // If you're somehow able to click this while not a chimera, this should prevent weird runtimes. Will need changing if regeneration is ever opened to non-chimera using the same alert.
|
||||
if(H.revive_ready == REVIVING_DONE) // Sanity check.
|
||||
@@ -69,4 +70,4 @@
|
||||
else
|
||||
return 0
|
||||
|
||||
return 1
|
||||
return 1
|
||||
|
||||
@@ -502,9 +502,11 @@
|
||||
M.updatehealth()
|
||||
apply_brain_damage(M)
|
||||
M.adjustHalLoss(40) // CHOMPEdit: Moderate amount of halloss for EVERYONE being defibbed. Defibs feel like being kicked in the chest by a mule. Shit hurts if you're awake.
|
||||
if(istype(M.species, /datum/species/xenochimera)) // Only do the following to Xenochimera. Handwave this however you want, this is to balance defibs on an alien race. CHOMPEdit
|
||||
// VOREStation Edits Start: Defib pain
|
||||
if(istype(M.species, /datum/species/xenochimera)) // Only do the following to Xenochimera. Handwave this however you want, this is to balance defibs on an alien race.
|
||||
M.adjustHalLoss(220) // This hurts a LOT, stacks on top of the previous halloss.
|
||||
M.feral += 100 // If they somehow weren't already feral, force them feral by increasing ferality var directly, to avoid any messy checks. handle_feralness() will immediately set our feral properly according to halloss anyhow.
|
||||
// VOREStation Edits End
|
||||
// SSgame_master.adjust_danger(-20) // VOREStation Edit - We don't use SSgame_master yet.
|
||||
|
||||
/obj/item/weapon/shockpaddles/proc/apply_brain_damage(mob/living/carbon/human/H)
|
||||
|
||||
@@ -278,7 +278,7 @@ HALOGEN COUNTER - Radcount on mobs
|
||||
else
|
||||
dat += "<span class='notice'>Blood Level Normal: [blood_percent]% [blood_volume]cl. Type: [blood_type]</span><br>"
|
||||
dat += "<span class='notice'>Subject's pulse: <font color='[H.pulse == PULSE_THREADY || H.pulse == PULSE_NONE ? "red" : "blue"]'>[H.get_pulse(GETPULSE_TOOL)] bpm.</font></span>"
|
||||
if(istype(H.species, /datum/species/xenochimera)) // CHOMPEdit Start: Visible feedback for medmains on Xenochimera.
|
||||
if(istype(H.species, /datum/species/xenochimera)) // VOREStation Edit Start: Visible feedback for medmains on Xenochimera.
|
||||
if(H.stat == DEAD && H.revive_ready == REVIVING_READY && !H.hasnutriment())
|
||||
dat += "<span class='danger'>WARNING: Protein levels low. Subject incapable of reconstitution.</span>"
|
||||
else if(H.revive_ready == REVIVING_NOW)
|
||||
@@ -289,7 +289,7 @@ HALOGEN COUNTER - Radcount on mobs
|
||||
dat+= "<span class='danger'>WARNING: Defib will cause extreme pain and set subject feral. Sedation recommended prior to defibrillation.</span>"
|
||||
else // If they bop them and they're not dead or reviving, give 'em a little notice.
|
||||
dat += "<span class='notice'>Subject is a Xenochimera. Treat accordingly.</span>"
|
||||
// CHOMPEdit End
|
||||
// VOREStation Edit End
|
||||
user.show_message(dat, 1)
|
||||
|
||||
/obj/item/device/healthanalyzer/verb/toggle_mode()
|
||||
@@ -545,4 +545,4 @@ HALOGEN COUNTER - Radcount on mobs
|
||||
to_chat(user, "<span class='notice'>No radiation detected.</span>")
|
||||
return
|
||||
|
||||
#undef DEFIB_TIME_LIMIT //VOREStation addition
|
||||
#undef DEFIB_TIME_LIMIT //VOREStation addition
|
||||
|
||||
+14
-15
@@ -34,14 +34,14 @@
|
||||
//Scary spawnerization.
|
||||
revive_ready = REVIVING_NOW
|
||||
revive_finished = (world.time + time SECONDS) // When do we finish reviving? Allows us to find out when we're done, called by the alert currently.
|
||||
throw_alert("regen", /obj/screen/alert/xenochimera/reconstitution) // CHOMPEdit: Regen
|
||||
throw_alert("regen", /obj/screen/alert/xenochimera/reconstitution)
|
||||
spawn(time SECONDS)
|
||||
// Was dead, now not dead.
|
||||
if(stat != DEAD)
|
||||
to_chat(src, "<span class='notice'>Your body has recovered from its ordeal, ready to regenerate itself again.</span>")
|
||||
revive_ready = REVIVING_READY //reset their cooldown
|
||||
clear_alert("regen") // CHOMPEdit: Regen
|
||||
throw_alert("hatch", /obj/screen/alert/xenochimera/readytohatch) // CHOMPEdit: Regen
|
||||
clear_alert("regen")
|
||||
throw_alert("hatch", /obj/screen/alert/xenochimera/readytohatch)
|
||||
|
||||
// Was dead, still dead.
|
||||
else
|
||||
@@ -49,8 +49,8 @@
|
||||
verbs |= /mob/living/carbon/human/proc/hatch
|
||||
revive_ready = REVIVING_DONE
|
||||
src << sound('sound/effects/mob_effects/xenochimera/hatch_notification.ogg',0,0,0,30)
|
||||
clear_alert("regen") // CHOMPEdit: Regen
|
||||
throw_alert("hatch", /obj/screen/alert/xenochimera/readytohatch) // CHOMPEdit: Regen
|
||||
clear_alert("regen")
|
||||
throw_alert("hatch", /obj/screen/alert/xenochimera/readytohatch)
|
||||
|
||||
//Dead until nutrition injected.
|
||||
else
|
||||
@@ -63,7 +63,7 @@
|
||||
//Waiting for regen after being alive
|
||||
revive_ready = REVIVING_NOW
|
||||
revive_finished = (world.time + time SECONDS) // When do we finish reviving? Allows us to find out when we're done, called by the alert currently.
|
||||
throw_alert("regen", /obj/screen/alert/xenochimera/reconstitution) // CHOMPEdit: Regen
|
||||
throw_alert("regen", /obj/screen/alert/xenochimera/reconstitution)
|
||||
spawn(time SECONDS)
|
||||
|
||||
//If they're still alive after regenning.
|
||||
@@ -72,8 +72,8 @@
|
||||
verbs |= /mob/living/carbon/human/proc/hatch
|
||||
revive_ready = REVIVING_DONE
|
||||
src << sound('sound/effects/mob_effects/xenochimera/hatch_notification.ogg',0,0,0,30)
|
||||
clear_alert("regen") // CHOMPEdit: Regen
|
||||
throw_alert("hatch", /obj/screen/alert/xenochimera/readytohatch) // CHOMPEdit: Regen
|
||||
clear_alert("regen")
|
||||
throw_alert("hatch", /obj/screen/alert/xenochimera/readytohatch)
|
||||
|
||||
//Was alive, now dead
|
||||
else if(hasnutriment())
|
||||
@@ -81,14 +81,14 @@
|
||||
verbs |= /mob/living/carbon/human/proc/hatch
|
||||
revive_ready = REVIVING_DONE
|
||||
src << sound('sound/effects/mob_effects/xenochimera/hatch_notification.ogg',0,0,0,30)
|
||||
clear_alert("regen") // CHOMPEdit: Regen
|
||||
throw_alert("hatch", /obj/screen/alert/xenochimera/readytohatch) // CHOMPEdit: Regen
|
||||
clear_alert("regen")
|
||||
throw_alert("hatch", /obj/screen/alert/xenochimera/readytohatch)
|
||||
|
||||
//Dead until nutrition injected.
|
||||
else
|
||||
to_chat(src, "<span class='warning'>Your body was unable to regenerate, what few living cells remain require additional nutrients to complete the process.</span>")
|
||||
revive_ready = REVIVING_READY //reset their cooldown
|
||||
clear_alert("regen") // CHOMPEdit: Regen
|
||||
clear_alert("regen")
|
||||
|
||||
/mob/living/carbon/human/proc/hasnutriment()
|
||||
if (bloodstr.has_reagent("nutriment", 30) || src.bloodstr.has_reagent("protein", 15)) //protein needs half as much. For reference, a steak contains 9u protein.
|
||||
@@ -117,7 +117,7 @@
|
||||
chimera_hatch()
|
||||
adjustBrainLoss(10) // if they're reviving from dead, they come back with 10 brainloss on top of whatever's unhealed.
|
||||
visible_message("<span class='danger'><p><font size=4>The lifeless husk of [src] bursts open, revealing a new, intact copy in the pool of viscera.</font></p></span>") //Bloody hell...
|
||||
clear_alert("hatch") // CHOMPEdit: Regen
|
||||
clear_alert("hatch")
|
||||
return
|
||||
|
||||
//Don't have nutriment to hatch! Or you somehow died in between completing your revive and hitting hatch.
|
||||
@@ -125,13 +125,13 @@
|
||||
to_chat(src, "Your body was unable to regenerate, what few living cells remain require additional nutrients to complete the process.")
|
||||
verbs -= /mob/living/carbon/human/proc/hatch
|
||||
revive_ready = REVIVING_READY //reset their cooldown they can try again when they're given a kickstart
|
||||
clear_alert("hatch") // CHOMPEdit: Regen
|
||||
clear_alert("hatch")
|
||||
|
||||
//Alive when hatching
|
||||
else
|
||||
chimera_hatch()
|
||||
visible_message("<span class='danger'><p><font size=4>The dormant husk of [src] bursts open, revealing a new, intact copy in the pool of viscera.</font></p></span>") //Bloody hell...
|
||||
clear_alert("hatch") // CHOMPEdit: Regen
|
||||
clear_alert("hatch")
|
||||
|
||||
/mob/living/carbon/human/proc/chimera_hatch()
|
||||
verbs -= /mob/living/carbon/human/proc/hatch
|
||||
@@ -166,7 +166,6 @@
|
||||
playsound(T, 'sound/effects/mob_effects/xenochimera/hatch.ogg', 50)
|
||||
|
||||
revive_ready = world.time + 10 MINUTES //set the cooldown CHOMPEdit: Reduced this to 10 minutes, you're playing with fire if you're reviving that often.
|
||||
// CHOMPEdit End
|
||||
|
||||
/mob/living/carbon/human/proc/revivingreset() // keep this as a debug proc or potential future use
|
||||
revive_ready = REVIVING_READY
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
//primitive_form = "Farwa"
|
||||
|
||||
spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED | SPECIES_WHITELIST_SELECTABLE//Whitelisted as restricted is broken.
|
||||
flags = NO_SCAN | NO_INFECT // | NO_DEFIB // Dying as a chimera is, quite literally, a death sentence. Well, if it wasn't for their revive, that is. CHOMPEdit: Leaving NO_DEFIB there for the future. // CHOMPEdit: Adds flags
|
||||
flags = NO_SCAN | NO_INFECT // | NO_DEFIB // Dying as a chimera is, quite literally, a death sentence. Well, if it wasn't for their revive, that is. Leaving NO_DEFIB there for the future/in case reversion to old 'chimera no-defib.
|
||||
appearance_flags = HAS_HAIR_COLOR | HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR | HAS_EYE_COLOR
|
||||
|
||||
genders = list(MALE, FEMALE, PLURAL, NEUTER)
|
||||
@@ -88,11 +88,10 @@
|
||||
H.weakened = 5
|
||||
H.canmove = 0
|
||||
H.does_not_breathe = TRUE
|
||||
var/regen_sounds = H.regen_sounds // CHOMPEdit Start: Regen sounds/etc
|
||||
var/regen_sounds = H.regen_sounds
|
||||
if(prob(2)) // 2% chance of playing squelchy noise while reviving, which is run roughly every 2 seconds/tick while regenerating.
|
||||
playsound(H, pick(regen_sounds), 30)
|
||||
H.visible_message("<span class='danger'><p><font size=4>[H.name]'s motionless form shudders grotesquely, rippling unnaturally.</font></p></span>")
|
||||
// CHOMPEdit End
|
||||
|
||||
//Cold/pressure effects when not regenerating
|
||||
else
|
||||
@@ -212,8 +211,8 @@
|
||||
feral++
|
||||
else
|
||||
feral = max(0,--feral)
|
||||
|
||||
// Being in a belly or in the darkness decreases stress further. :9
|
||||
|
||||
// Being in a belly or in the darkness decreases stress further. Helps mechanically reward players for staying in darkness + RP'ing appropriately. :9
|
||||
var/turf/T = get_turf(H)
|
||||
if(feral && (isbelly(H.loc) || T.get_lumcount() <= 0.1))
|
||||
feral = max(0,--feral)
|
||||
@@ -233,7 +232,7 @@
|
||||
H.shock_stage = max(H.shock_stage-(feral/20), 0)
|
||||
|
||||
//Handle light/dark areas
|
||||
// var/turf/T = get_turf(H) // CHOMPEdit: Moved up to before the in-belly/dark combined check, should still safely reach here just fine.
|
||||
// var/turf/T = get_turf(H) // Moved up to before the in-belly/dark combined check, should still safely reach here just fine.
|
||||
if(!T)
|
||||
update_xenochimera_hud(H, danger, feral_state)
|
||||
return //Nullspace
|
||||
@@ -246,7 +245,7 @@
|
||||
var/list/nearby = H.living_mobs(world.view)
|
||||
|
||||
//Not in the dark, or a belly, and out in the open.
|
||||
if(!darkish && isturf(H.loc) && !isbelly(H.loc)) // CHOMPEdit: added specific check for if in belly
|
||||
if(!darkish && isturf(H.loc) && !isbelly(H.loc)) // Added specific check for if in belly
|
||||
|
||||
//Always handle feral if nobody's around and not in the dark.
|
||||
if(!nearby.len)
|
||||
@@ -260,8 +259,8 @@
|
||||
update_xenochimera_hud(H, danger, feral_state)
|
||||
return
|
||||
|
||||
// In the darkness, "hidden", or in a belly. No need for custom scene-protection checks as it's just an occational infomessage.
|
||||
if(darkish || !isturf(H.loc) || isbelly(H.loc)) // CHOMPEdit: added specific check for if in belly
|
||||
// In the darkness, or "hidden", or in a belly. No need for custom scene-protection checks as it's just an occational infomessage.
|
||||
if(darkish || !isturf(H.loc) || isbelly(H.loc)) // Specific check for if in belly. !isturf should do this, but JUST in case.
|
||||
// If hurt, tell 'em to heal up
|
||||
if (shock)
|
||||
to_chat(H,"<span class='info'>This place seems safe, secure, hidden, a place to lick your wounds and recover...</span>")
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/mob/living/carbon/human/proc/lick_wounds(var/mob/living/carbon/M) //YWedit, originally, living/carbon/M in living_mobs(1), However, living_mobs does not include src as possible target.
|
||||
/mob/living/carbon/human/proc/lick_wounds(var/mob/living/carbon/M) // Allows the user to lick themselves. Given how rarely this trait is used, I don't see an issue with a slight buff.
|
||||
set name = "Lick Wounds"
|
||||
set category = "Abilities"
|
||||
set desc = "Disinfect and heal small wounds with your saliva."
|
||||
@@ -11,6 +11,10 @@
|
||||
to_chat(src, "<span class='warning'>You need to be closer to do that.</span>") // CHOMPEdit - don't use src << unless you have to.
|
||||
return
|
||||
|
||||
if (get_dist(src,M) >= 2)
|
||||
to_chat(src, "<span class='warning'>You need to be closer to do that.</span>")
|
||||
return
|
||||
|
||||
if ( ! (istype(src, /mob/living/carbon/human) || \
|
||||
istype(src, /mob/living/silicon)) )
|
||||
to_chat(src, "<span class='warning'>If you even have a tongue, it doesn't work that way.</span>")
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
var/vore_egg_type = "egg" // Default egg type.
|
||||
var/feral = 0 // How feral the mob is, if at all. Does nothing for non xenochimera at the moment.
|
||||
var/revive_ready = REVIVING_READY // Only used for creatures that have the xenochimera regen ability, so far.
|
||||
var/revive_finished = 0 // CHOMPEdit: Only used for xenochimera regen, allows us to find out when the regen will finish.
|
||||
var/revive_finished = 0 // Only used for xenochimera regen, allows us to find out when the regen will finish.
|
||||
var/metabolism = 0.0015
|
||||
var/vore_taste = null // What the character tastes like
|
||||
var/vore_smell = null // What the character smells like
|
||||
@@ -45,11 +45,10 @@
|
||||
var/regen_sounds = list(
|
||||
'sound/effects/mob_effects/xenochimera/regen_1.ogg',
|
||||
'sound/effects/mob_effects/xenochimera/regen_2.ogg',
|
||||
'sound/effects/mob_effects/xenochimera/regen_3.ogg',
|
||||
'sound/effects/mob_effects/xenochimera/regen_4.ogg',
|
||||
'sound/effects/mob_effects/xenochimera/regen_3.ogg',
|
||||
'sound/effects/mob_effects/xenochimera/regen_5.ogg'
|
||||
)
|
||||
// CHOMPEdit: Regen Sounds
|
||||
|
||||
//
|
||||
// Hook for generic creation of stuff on new creatures
|
||||
|
||||
Reference in New Issue
Block a user