mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-02-04 21:39:20 +00:00
Adds cortical borers, a midround antag originally from Bay. The code here is from yogstation, baystation and paradise station. Borers are little brainslugs that when adjacent to a human can infest them. They can supply you with useful chemicals such as medicines and meth, and can revive you from the dead if they have maximum chemicals. They can also take over your body, putting them in control of you while you become a "captive mind". A captive mind can take back control by doing Resist. Health analyzers show borers in people, while medHUDs show borers in control. If you have Sugar in your body the borer can do nothing, it gets kicked out of control if it's controlling and becomes docile. Organ Manipulation surgery on head to remove the borer. If the brain of the body gets removed (decapitation, brain removal surgery, gibbing) the borer falls out of the host and loses control if they were controlling. Changelings can remove borers with Anatomic Panacea or Lesser Form (or Last Resort). Borers can reproduce and have an objective to escape on the shuttle with X hosts alive.
177 lines
6.7 KiB
Plaintext
177 lines
6.7 KiB
Plaintext
/mob/var/suiciding = 0
|
|
|
|
/mob/living/carbon/human/verb/suicide()
|
|
set hidden = 1
|
|
if(!canSuicide())
|
|
return
|
|
var/confirm = alert("Are you sure you want to commit suicide?", "Confirm Suicide", "Yes", "No")
|
|
if(!canSuicide())
|
|
return
|
|
if(confirm == "Yes")
|
|
suiciding = 1
|
|
log_game("[key_name(src)] (job: [job ? "[job]" : "None"]) commited suicide at [get_area(src)].")
|
|
var/obj/item/held_item = get_active_held_item()
|
|
if(held_item)
|
|
var/damagetype = held_item.suicide_act(src)
|
|
if(damagetype)
|
|
if(damagetype & SHAME)
|
|
adjustStaminaLoss(200)
|
|
suiciding = 0
|
|
return
|
|
var/damage_mod = 0
|
|
for(var/T in list(BRUTELOSS, FIRELOSS, TOXLOSS, OXYLOSS))
|
|
damage_mod += (T & damagetype) ? 1 : 0
|
|
damage_mod = max(1, damage_mod)
|
|
|
|
//Do 200 damage divided by the number of damage types applied.
|
|
if(damagetype & BRUTELOSS)
|
|
adjustBruteLoss(200/damage_mod)
|
|
|
|
if(damagetype & FIRELOSS)
|
|
adjustFireLoss(200/damage_mod)
|
|
|
|
if(damagetype & TOXLOSS)
|
|
adjustToxLoss(200/damage_mod)
|
|
|
|
if(damagetype & OXYLOSS)
|
|
adjustOxyLoss(200/damage_mod)
|
|
|
|
//If something went wrong, just do normal oxyloss
|
|
if(!(damagetype & (BRUTELOSS | FIRELOSS | TOXLOSS | OXYLOSS) ))
|
|
adjustOxyLoss(max(200 - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0))
|
|
|
|
death(0)
|
|
return
|
|
|
|
var/suicide_message = pick("[src] is attempting to bite \his tongue off! It looks like \he's trying to commit suicide.", \
|
|
"[src] is jamming \his thumbs into \his eye sockets! It looks like \he's trying to commit suicide.", \
|
|
"[src] is twisting \his own neck! It looks like \he's trying to commit suicide.", \
|
|
"[src] is holding \his breath! It looks like \he's trying to commit suicide.")
|
|
|
|
visible_message("<span class='danger'>[suicide_message]</span>", "<span class='userdanger'>[suicide_message]</span>")
|
|
|
|
adjustOxyLoss(max(200 - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0))
|
|
death(0)
|
|
|
|
/mob/living/brain/verb/suicide()
|
|
set hidden = 1
|
|
if(!canSuicide())
|
|
return
|
|
var/confirm = alert("Are you sure you want to commit suicide?", "Confirm Suicide", "Yes", "No")
|
|
if(!canSuicide())
|
|
return
|
|
if(confirm == "Yes")
|
|
suiciding = 1
|
|
visible_message("<span class='danger'>[src]'s brain is growing dull and lifeless. It looks like it's lost the will to live.</span>", \
|
|
"<span class='userdanger'>[src]'s brain is growing dull and lifeless. It looks like it's lost the will to live.</span>")
|
|
spawn(50)
|
|
death(0)
|
|
|
|
/mob/living/carbon/monkey/verb/suicide()
|
|
set hidden = 1
|
|
if(!canSuicide())
|
|
return
|
|
var/confirm = alert("Are you sure you want to commit suicide?", "Confirm Suicide", "Yes", "No")
|
|
if(!canSuicide())
|
|
return
|
|
if(confirm == "Yes")
|
|
suiciding = 1
|
|
//instead of killing them instantly, just put them at -175 health and let 'em gasp for a while
|
|
visible_message("<span class='danger'>[src] is attempting to bite \his tongue. It looks like \he's trying to commit suicide.</span>", \
|
|
"<span class='userdanger'>[src] is attempting to bite \his tongue. It looks like \he's trying to commit suicide.</span>")
|
|
adjustOxyLoss(max(200- getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0))
|
|
death(0)
|
|
|
|
/mob/living/silicon/ai/verb/suicide()
|
|
set hidden = 1
|
|
if(!canSuicide())
|
|
return
|
|
var/confirm = alert("Are you sure you want to commit suicide?", "Confirm Suicide", "Yes", "No")
|
|
if(!canSuicide())
|
|
return
|
|
if(confirm == "Yes")
|
|
suiciding = 1
|
|
visible_message("<span class='danger'>[src] is powering down. It looks like \he's trying to commit suicide.</span>", \
|
|
"<span class='userdanger'>[src] is powering down. It looks like \he's trying to commit suicide.</span>")
|
|
//put em at -175
|
|
adjustOxyLoss(max(maxHealth * 2 - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0))
|
|
death(0)
|
|
|
|
/mob/living/silicon/robot/verb/suicide()
|
|
set hidden = 1
|
|
if(!canSuicide())
|
|
return
|
|
var/confirm = alert("Are you sure you want to commit suicide?", "Confirm Suicide", "Yes", "No")
|
|
if(!canSuicide())
|
|
return
|
|
if(confirm == "Yes")
|
|
suiciding = 1
|
|
visible_message("<span class='danger'>[src] is powering down. It looks like \he's trying to commit suicide.</span>", \
|
|
"<span class='userdanger'>[src] is powering down. It looks like \he's trying to commit suicide.</span>")
|
|
//put em at -175
|
|
adjustOxyLoss(max(maxHealth * 2 - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0))
|
|
death(0)
|
|
|
|
/mob/living/silicon/pai/verb/suicide()
|
|
set category = "pAI Commands"
|
|
set desc = "Kill yourself and become a ghost (You will receive a confirmation prompt)"
|
|
set name = "pAI Suicide"
|
|
var/answer = input("REALLY kill yourself? This action can't be undone.", "Suicide", "No") in list ("Yes", "No")
|
|
if(answer == "Yes")
|
|
var/turf/T = get_turf(src.loc)
|
|
T.visible_message("<span class='notice'>[src] flashes a message across its screen, \"Wiping core files. Please acquire a new personality to continue using pAI device functions.\"</span>", null, \
|
|
"<span class='notice'>[src] bleeps electronically.</span>")
|
|
death(0)
|
|
else
|
|
src << "Aborting suicide attempt."
|
|
|
|
/mob/living/carbon/alien/humanoid/verb/suicide()
|
|
set hidden = 1
|
|
if(!canSuicide())
|
|
return
|
|
var/confirm = alert("Are you sure you want to commit suicide?", "Confirm Suicide", "Yes", "No")
|
|
if(!canSuicide())
|
|
return
|
|
if(confirm == "Yes")
|
|
suiciding = 1
|
|
visible_message("<span class='danger'>[src] is thrashing wildly! It looks like \he's trying to commit suicide.</span>", \
|
|
"<span class='userdanger'>[src] is thrashing wildly! It looks like \he's trying to commit suicide.</span>", \
|
|
"<span class='italics'>You hear thrashing.</span>")
|
|
//put em at -175
|
|
adjustOxyLoss(max(200 - getFireLoss() - getBruteLoss() - getOxyLoss(), 0))
|
|
death(0)
|
|
|
|
/mob/living/simple_animal/verb/suicide()
|
|
set hidden = 1
|
|
if(!canSuicide())
|
|
return
|
|
var/confirm = alert("Are you sure you want to commit suicide?", "Confirm Suicide", "Yes", "No")
|
|
if(!canSuicide())
|
|
return
|
|
if(confirm == "Yes")
|
|
suiciding = 1
|
|
visible_message("<span class='danger'>[src] begins to fall down. It looks like \he's lost the will to live.</span>", \
|
|
"<span class='userdanger'>[src] begins to fall down. It looks like \he's lost the will to live.</span>")
|
|
death(0)
|
|
|
|
|
|
/mob/living/proc/canSuicide()
|
|
if(stat == CONSCIOUS)
|
|
return TRUE
|
|
else if(stat == DEAD)
|
|
src << "You're already dead!"
|
|
else if(stat == UNCONSCIOUS)
|
|
src << "You need to be conscious to suicide!"
|
|
return
|
|
|
|
/mob/living/carbon/canSuicide()
|
|
if(!..())
|
|
return
|
|
if(!canmove || restrained()) //just while I finish up the new 'fun' suiciding verb. This is to prevent metagaming via suicide
|
|
src << "You can't commit suicide whilst restrained! ((You can type Ghost instead however.))"
|
|
return
|
|
if(has_brain_worms())
|
|
src << "You can't bring yourself to commit suicide!"
|
|
return
|
|
return TRUE
|