mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-01-04 22:42:07 +00:00
Borer and meme fixes and changes (#3420)
-cleans up meme code by removing relative pathing and \red's -makes synths immune to borer invasion and buffs them a bit
This commit is contained in:
@@ -21,16 +21,13 @@ var/controlling
|
||||
/mob/living/carbon/var/list/parasites = list()
|
||||
|
||||
/mob/living/parasite
|
||||
var
|
||||
mob/living/carbon/host // the host that this parasite occupies
|
||||
|
||||
Login()
|
||||
..()
|
||||
|
||||
// make the client see through the host instead
|
||||
client.eye = host
|
||||
client.perspective = EYE_PERSPECTIVE
|
||||
var/mob/living/carbon/host // the host that this parasite occupies
|
||||
|
||||
/mob/living/parasite/Login()
|
||||
..()
|
||||
// make the client see through the host instead
|
||||
client.eye = host
|
||||
client.perspective = EYE_PERSPECTIVE
|
||||
|
||||
/mob/living/parasite/proc/enter_host(mob/living/carbon/host)
|
||||
// by default, parasites can't share a body with other life forms
|
||||
@@ -57,7 +54,6 @@ var/controlling
|
||||
// ============
|
||||
|
||||
|
||||
|
||||
// Memes use points for many actions
|
||||
/mob/living/parasite/meme/var/meme_points = 100
|
||||
/mob/living/parasite/meme/var/dormant = 0
|
||||
@@ -82,16 +78,16 @@ var/controlling
|
||||
|
||||
// if there are sleep toxins in the host's body, that's bad
|
||||
if(host.reagents.has_reagent("stoxin"))
|
||||
src << "\red <b>Something in your host's blood makes you lose consciousness.. you fade away..</b>"
|
||||
src << "<span class='danger'>Something in your host's blood makes you lose consciousness, you fade away...</span>"
|
||||
src.death()
|
||||
return
|
||||
// a host without brain is no good
|
||||
if(!host.mind)
|
||||
src << "\red <b>Your host has no mind.. you fade away..</b>"
|
||||
src << "<span class='danger'>Your host has no mind, you fade away...</span>"
|
||||
src.death()
|
||||
return
|
||||
if(host.stat == 2)
|
||||
src << "\red <b>Your host has died.. you fade away..</b>"
|
||||
src << "<span class='danger'>Your host has died, you fade away...</span>"
|
||||
src.death()
|
||||
return
|
||||
|
||||
@@ -108,10 +104,10 @@ var/controlling
|
||||
// When a meme speaks, it speaks through its host
|
||||
/mob/living/parasite/meme/say(message as text)
|
||||
if(dormant)
|
||||
usr << "\red You're dormant!"
|
||||
src << "<span class='notice'>You are dormant! </span>"
|
||||
return
|
||||
if(!host)
|
||||
usr << "\red You can't speak without host!"
|
||||
usr << "<span class='notice'>You can't speak without a host! </span>"
|
||||
return
|
||||
|
||||
return host.say(message)
|
||||
@@ -119,10 +115,10 @@ var/controlling
|
||||
// Same as speak, just with whisper
|
||||
/mob/living/parasite/meme/whisper(message as text)
|
||||
if(dormant)
|
||||
usr << "\red You're dormant!"
|
||||
src << "<span class='notice'>You are dormant! </span>"
|
||||
return
|
||||
if(!host)
|
||||
usr << "\red You can't speak without host!"
|
||||
usr << "<span class='notice'>You can't speak without a host! </span>"
|
||||
return
|
||||
|
||||
return host.whisper(message)
|
||||
@@ -131,13 +127,12 @@ var/controlling
|
||||
/mob/living/parasite/meme/me_verb(message as text)
|
||||
set name = "Me"
|
||||
|
||||
|
||||
if(dormant)
|
||||
usr << "\red You're dormant!"
|
||||
src << "<span class='notice'>You are dormant! </span>"
|
||||
return
|
||||
|
||||
if(!host)
|
||||
usr << "\red You can't emote without host!"
|
||||
usr << "<span class='notice'>You can't speak without a host! </span>"
|
||||
return
|
||||
|
||||
return host.me_verb(message)
|
||||
@@ -151,10 +146,10 @@ var/controlling
|
||||
// Try to use amount points, return 1 if successful
|
||||
/mob/living/parasite/meme/proc/use_points(amount)
|
||||
if(dormant)
|
||||
usr << "\red You're dormant!"
|
||||
src << "<span class='notice'>You are dormant! </span>"
|
||||
return
|
||||
if(src.meme_points < amount)
|
||||
src << "<b>* You don't have enough meme points(need [amount]).</b>"
|
||||
src << "<span class='notice'>You don't have enough meme points(need [amount]).</span>"
|
||||
return 0
|
||||
|
||||
src.meme_points -= round(amount)
|
||||
@@ -167,7 +162,7 @@ var/controlling
|
||||
// Can only affect other mobs thant he host if not blinded
|
||||
if(blinded)
|
||||
candidates = list()
|
||||
src << "\red You are blinded, so you can not affect mobs other than your host."
|
||||
src << "<span class='notice'>You are blinded, so you can not affect mobs other than your host.</span>"
|
||||
else
|
||||
candidates = indoctrinated.Copy()
|
||||
|
||||
@@ -198,7 +193,7 @@ var/controlling
|
||||
/mob/living/parasite/meme/verb/Thought(mob/M as mob in oview())
|
||||
set category = "Meme"
|
||||
set name = "Thought(150)"
|
||||
set desc = "Implants a thought into the target, making them think they heard someone talk."
|
||||
set desc = "Implants a thought into the target."
|
||||
|
||||
if(!use_points(150)) return
|
||||
|
||||
@@ -247,14 +242,14 @@ var/controlling
|
||||
spawn
|
||||
// backup the host incase we switch hosts after using the verb
|
||||
//var/mob/host = src.host
|
||||
host << "\red Your tongue feels numb.. You lose your ability to speak."
|
||||
usr << "\red Your host can't speak anymore."
|
||||
host << "<span class='danger'>Your tongue feels numb.. You lose your ability to speak.</span>"
|
||||
usr << "<span class='notice'>Your host can't speak anymore.</span>"
|
||||
|
||||
host.silent += 60
|
||||
|
||||
sleep(1200)
|
||||
host << "\red Your tongue has feeling again.."
|
||||
usr << "\red [host] can speak again."
|
||||
host << "<span class='danger'>Your tongue has feeling again.</span>"
|
||||
usr << "<span class='notice'>[host] can speak again.</span>"
|
||||
|
||||
// Makes the host unable to emote
|
||||
/mob/living/parasite/meme/verb/Paralyze()
|
||||
@@ -272,14 +267,14 @@ var/controlling
|
||||
// backup the host incase we switch hosts after using the verb
|
||||
var/mob/host = src.host
|
||||
|
||||
host << "\red Your body feels numb.. You lose your ability to use body language."
|
||||
usr << "\red Your host can't use body language anymore."
|
||||
host << "<span class='danger'>Your body feels numb. You lose your ability to use body language.</span>"
|
||||
usr << "<span class='notice'>Your host can't use body language anymore.</span>"
|
||||
|
||||
host.Weaken(60)
|
||||
|
||||
sleep(1200)
|
||||
host << "\red Your body has feeling again.."
|
||||
usr << "\red [host] can use body language again."
|
||||
host << "<span class='warning'>Your body has feeling again.</span>"
|
||||
usr << "<span class='notice'>[host] can use body language again.</span>"
|
||||
|
||||
|
||||
|
||||
@@ -299,9 +294,9 @@ var/controlling
|
||||
host.paralysis = max(host.paralysis, 2)
|
||||
|
||||
host.flash_weak_pain()
|
||||
host << "\red <font size=5>You feel excrutiating pain all over your body! It is so bad you can't think or articulate yourself properly..</font>"
|
||||
host << "<span class='danger'><font size=5>You feel excrutiating pain all over your body! It is so bad you can't think or articulate yourself properly.</font></span>"
|
||||
|
||||
usr << "<b>You send a jolt of agonizing pain through [host], they should be unable to concentrate on anything else for half a minute.</b>"
|
||||
usr << "<span class='notice'>You send a jolt of agonizing pain through [host], they should be unable to concentrate on anything else for half a minute.</span>"
|
||||
|
||||
host.emote("scream")
|
||||
|
||||
@@ -315,9 +310,9 @@ var/controlling
|
||||
else if(prob(10)) host.emote("collapse")
|
||||
|
||||
if(i == 10)
|
||||
host << "\red THE PAIN! AGHH, THE PAIN! MAKE IT STOP! ANYTHING TO MAKE IT STOP!"
|
||||
host << "<span class='danger'>THE PAIN! AGHH, THE PAIN! MAKE IT STOP! ANYTHING TO MAKE IT STOP!</span>"
|
||||
|
||||
host << "\red The pain subsides.."
|
||||
host << "<span class='warning'>The pain subsides.</span>"
|
||||
|
||||
// Cause great joy with the host, used for conditioning the host
|
||||
/mob/living/parasite/meme/verb/Joy()
|
||||
@@ -333,14 +328,14 @@ var/controlling
|
||||
host.druggy = max(host.druggy, 50)
|
||||
host.slurring = max(host.slurring, 10)
|
||||
|
||||
usr << "<b>You stimulate [host.name]'s brain, injecting waves of endorphines and dopamine into the tissue. They should now forget all their worries, particularly relating to you, for around a minute.</b>"
|
||||
usr << "<span class='notice'>You stimulate [host.name]'s brain, injecting waves of endorphines and dopamine into the tissue. They should now forget all their worries, particularly relating to you, for around a minute.</span>"
|
||||
|
||||
host << "\red You are feeling wonderful! Your head is numb and drowsy, and you can't help forgetting all the worries in the world."
|
||||
host << "<span class='notice'><font size=5>You are feeling wonderful! Your head is numb and drowsy, and you can't help forgetting all the worries in the world.</font></span>"
|
||||
|
||||
while(host.druggy > 0)
|
||||
sleep(10)
|
||||
|
||||
host << "\red You are feeling clear-headed again.."
|
||||
host << "<span class='warning'>You are feeling clear-headed again.</span>"
|
||||
|
||||
// Cause the target to hallucinate.
|
||||
/mob/living/parasite/meme/verb/Hallucinate(mob/living/carbon/human/target as mob in oview())
|
||||
@@ -349,13 +344,13 @@ var/controlling
|
||||
set desc = "Makes your host hallucinate, has a short delay."
|
||||
|
||||
if(!istype(target, /mob/living/carbon/human) || !target.mind)
|
||||
src << "<b>You can't remotely ruin this ones mind.</b>"
|
||||
src << "<span class='warning'>You can't remotely ruin this ones mind.</span>"
|
||||
return
|
||||
if(!(target in view(host)))
|
||||
src << "<b>You need to make eye-contact with the target.</b>"
|
||||
src << "<span class='warning'>You need to make eye-contact with the target.</span>"
|
||||
return
|
||||
if(!(target in indoctrinated))
|
||||
src << "<b>You need to attune the target first.</b>"
|
||||
src << "<span class='warning'>You need to attune the target first.</span>"
|
||||
return
|
||||
if(!target) return
|
||||
if(!use_points(300)) return
|
||||
@@ -363,7 +358,7 @@ var/controlling
|
||||
spawn(rand(300,600))
|
||||
if(target) target.hallucination += 400
|
||||
|
||||
usr << "<b>You make [target] hallucinate.</b>"
|
||||
usr << "<span class='notice'>You make [target] hallucinate.</span>"
|
||||
|
||||
// Jump to a closeby target through a whisper
|
||||
/mob/living/parasite/meme/verb/SubtleJump(mob/living/carbon/human/target as mob in oview())
|
||||
@@ -372,15 +367,20 @@ var/controlling
|
||||
set desc = "Move to a closeby human through a whisper."
|
||||
|
||||
if(!istype(target, /mob/living/carbon/human) || !target.mind)
|
||||
src << "<b>You can't jump to this creature..</b>"
|
||||
src << "<span class='warning'>You can't jump to this creature.</span>"
|
||||
return
|
||||
|
||||
if(target.isSynthetic())
|
||||
src << "<span class='warning'>You can't affect synthetics.</span>"
|
||||
return
|
||||
|
||||
if(!(target in view(1, host)+src))
|
||||
src << "<b>The target is not close enough.</b>"
|
||||
src << "<span class='warning'>The target is not close enough.</span>"
|
||||
return
|
||||
|
||||
// Find out whether we can speak
|
||||
if (host.silent || (host.disabilities & 64))
|
||||
src << "<b>Your host can't speak..</b>"
|
||||
src << "<span class='warning'>Your host can't speak.</span>"
|
||||
return
|
||||
|
||||
if(!use_points(350)) return
|
||||
@@ -390,17 +390,17 @@ var/controlling
|
||||
|
||||
// Find out whether the target can hear
|
||||
if(target.disabilities & 32 || target.ear_deaf)
|
||||
src << "<b>Your target doesn't seem to hear you..</b>"
|
||||
src << "<span class='warning'>Your target doesn't seem to hear you.</span>"
|
||||
return
|
||||
|
||||
if(target.parasites.len > 0)
|
||||
src << "<b>Your target already is possessed by something..</b>"
|
||||
src << "<span class='warning'>Your target already is possessed by something.</span>"
|
||||
return
|
||||
|
||||
src.exit_host()
|
||||
src.enter_host(target)
|
||||
|
||||
usr << "<b>You successfully jumped to [target].</b>"
|
||||
usr << "<span class='notice'>You successfully jumped to [target].</span>"
|
||||
log_admin("[src.key] has jumped to [target]",ckey=key_name(src))
|
||||
message_admins("[src.key] has jumped to [target]")
|
||||
|
||||
@@ -411,15 +411,20 @@ var/controlling
|
||||
set desc = "Move to any mob in view through a shout."
|
||||
|
||||
if(!istype(target, /mob/living/carbon/human) || !target.mind)
|
||||
src << "<b>You can't jump to this creature..</b>"
|
||||
src << "<span class='warning'>You can't jump to this creature.</span>"
|
||||
return
|
||||
|
||||
if(target.isSynthetic())
|
||||
src << "<span class='warning'>You can't affect synthetics.</span>"
|
||||
return
|
||||
|
||||
if(!(target in view(host)))
|
||||
src << "<b>The target is not close enough.</b>"
|
||||
src << "<span class='warning'>The target is not close enough.</span>"
|
||||
return
|
||||
|
||||
// Find out whether we can speak
|
||||
if (host.silent || (host.disabilities & 64))
|
||||
src << "<b>Your host can't speak..</b>"
|
||||
src << "<span class='warning'>Your host can't speak.</span>"
|
||||
return
|
||||
|
||||
if(!use_points(750)) return
|
||||
@@ -429,17 +434,17 @@ var/controlling
|
||||
|
||||
// Find out whether the target can hear
|
||||
if(target.disabilities & 32 || target.ear_deaf)
|
||||
src << "<b>Your target doesn't seem to hear you..</b>"
|
||||
src << "<span class='warning'>Your target doesn't seem to hear you.</span>"
|
||||
return
|
||||
|
||||
if(target.parasites.len > 0)
|
||||
src << "<b>Your target already is possessed by something..</b>"
|
||||
src << "<span class='warning'>Your target already is possessed by something.</span>"
|
||||
return
|
||||
|
||||
src.exit_host()
|
||||
src.enter_host(target)
|
||||
|
||||
usr << "<b>You successfully jumped to [target].</b>"
|
||||
usr << "<span class='notice'>You successfully jumped to [target].</span>"
|
||||
log_admin("[src.key] has jumped to [target]",ckey=key_name(src))
|
||||
message_admins("[src.key] has jumped to [target]")
|
||||
|
||||
@@ -450,19 +455,24 @@ var/controlling
|
||||
set desc = "Move to a mob in sight that you have already attuned."
|
||||
|
||||
if(!istype(target, /mob/living/carbon/human) || !target.mind)
|
||||
src << "<b>You can't jump to this creature..</b>"
|
||||
src << "<span class='warning'>You can't jump to this creature.</span>"
|
||||
return
|
||||
|
||||
if(target.isSynthetic())
|
||||
src << "<span class='warning'>You can't affect synthetics.</span>"
|
||||
return
|
||||
|
||||
if(!(target in view(host)))
|
||||
src << "<b>You need to make eye-contact with the target.</b>"
|
||||
src << "<span class='warning'>You need to make eye-contact with the target.</span>"
|
||||
return
|
||||
if(!(target in indoctrinated))
|
||||
src << "<b>You need to attune the target first.</b>"
|
||||
src << "<span class='warning'>You need to attune the target first.</span>"
|
||||
return
|
||||
|
||||
src.exit_host()
|
||||
src.enter_host(target)
|
||||
|
||||
usr << "<b>You successfully jumped to [target].</b>"
|
||||
usr << "<span class='notice'>You successfully jumped to [target].</span>"
|
||||
|
||||
log_admin("[src.key] has jumped to [target]",ckey=key_name(src))
|
||||
message_admins("[src.key] has jumped to [target]")
|
||||
@@ -474,16 +484,22 @@ var/controlling
|
||||
set desc = "Change the host's brain structure, making it easier for you to manipulate him."
|
||||
|
||||
if(host in src.indoctrinated)
|
||||
usr << "<b>You have already attuned this host.</b>"
|
||||
usr << "<span class='notice'>You have already attuned this host.</span>"
|
||||
return
|
||||
|
||||
if(!host) return
|
||||
|
||||
for (var/obj/item/weapon/implant/loyalty/I in host)
|
||||
if (I.implanted)
|
||||
src << "<span class='warning'>Your host's mind is shielded!</span>"
|
||||
return
|
||||
|
||||
if(!use_points(400)) return
|
||||
|
||||
src.indoctrinated.Add(host)
|
||||
|
||||
usr << "<b>You successfully indoctrinated [host].</b>"
|
||||
host << "\red Your head feels a bit roomier.."
|
||||
usr << "<span class='notice'>You successfully indoctrinated [host].</span>"
|
||||
host << "<span class='danger'>Your head feels a bit roomier...</span>"
|
||||
|
||||
log_admin("[src.key] has attuned [host]",ckey=key_name(src))
|
||||
message_admins("[src.key] has attuned [host]")
|
||||
@@ -496,16 +512,16 @@ var/controlling
|
||||
|
||||
if(!host) return
|
||||
if(!(host in indoctrinated))
|
||||
usr << "\red You need to attune the host first."
|
||||
usr << "<span class='warning'>You need to attune the host first.</span>"
|
||||
return
|
||||
if(!use_points(500)) return
|
||||
|
||||
usr << "<b>You inject drugs into [host].</b>"
|
||||
host << "\red You feel your body strengthen and your pain subside.."
|
||||
usr << "<span class='notice'>You inject drugs into [host].</span>"
|
||||
host << "<span class='danger'>You feel your body strengthen and your pain subside.</span>"
|
||||
host.analgesic = 60
|
||||
while(host.analgesic > 0)
|
||||
sleep(60)
|
||||
host << "\red The dizziness wears off, and you can feel pain again.."
|
||||
host << "<span class='notice'>The dizziness wears off, and you can feel pain again.</span>"
|
||||
|
||||
|
||||
/mob/proc/clearHUD()
|
||||
@@ -518,17 +534,22 @@ var/controlling
|
||||
set name = "Possession(500)"
|
||||
set desc = "Take direct control of the host for a while."
|
||||
|
||||
if(!use_points(500)) return
|
||||
if(!host)
|
||||
src << "You have discovered a severe bug - NO HOST. CONTACT DEVELOPER."
|
||||
return
|
||||
|
||||
if(src.stat)
|
||||
src << "You cannot do that in your current state."
|
||||
src << "<span class='warning'>You cannot do that in your current state.</span>"
|
||||
return
|
||||
|
||||
for (var/obj/item/weapon/implant/loyalty/I in host)
|
||||
if (I.implanted)
|
||||
src << "<span class='warning'>Your host's mind is shielded!</span>"
|
||||
return
|
||||
|
||||
src << "You assume direct control..."
|
||||
if(!use_points(500)) return
|
||||
|
||||
src << "<span class='danger'>You assume direct control!</span>"
|
||||
|
||||
spawn()
|
||||
|
||||
@@ -536,8 +557,8 @@ var/controlling
|
||||
return
|
||||
else
|
||||
|
||||
src << "\red <B>You shroud your hosts brain, assuming control</B>"
|
||||
host << "\red <B>You can feel thoughts that arent your own begin to dictate your body's actions.</B>"
|
||||
src << "<span class='warning'>You shroud your hosts brain, assuming control!</span>"
|
||||
host << "<span class='danger'>You can feel thoughts that arent your own begin to dictate your body's actions.</span>"
|
||||
|
||||
// host -> brain
|
||||
var/h2b_id = host.computer_id
|
||||
@@ -635,7 +656,7 @@ var/controlling
|
||||
if(!host) return
|
||||
if(!use_points(100)) return
|
||||
|
||||
usr << "<b>You enter dormant mode.. You won't be able to take action until all your points have recharged.</b>"
|
||||
usr << "<span class='warning'>You enter dormant mode.You won't be able to take action until all your points have recharged.</span>"
|
||||
|
||||
dormant = 1
|
||||
|
||||
@@ -644,7 +665,7 @@ var/controlling
|
||||
|
||||
dormant = 0
|
||||
|
||||
usr << "\red You have regained all points and exited dormant mode!"
|
||||
usr << "<span class='danger'>You have regained all points and exited dormant mode!</span>"
|
||||
|
||||
/mob/living/parasite/meme/verb/Show_Points()
|
||||
set category = "Meme"
|
||||
|
||||
@@ -31,3 +31,6 @@
|
||||
|
||||
/mob/living/parasite/captive_brain/emote(var/message)
|
||||
return
|
||||
|
||||
/mob/living/parasite/captive_brain/send_emote()
|
||||
return
|
||||
@@ -18,6 +18,8 @@
|
||||
attacktext = "nipped"
|
||||
friendly = "prods"
|
||||
wander = 0
|
||||
maxHealth = 40
|
||||
health = 40
|
||||
pass_flags = PASSTABLE
|
||||
universal_understand = 1
|
||||
holder_type = /obj/item/weapon/holder/borer
|
||||
|
||||
@@ -81,6 +81,10 @@
|
||||
src << "\The [H] does not seem to have an ear canal to breach."
|
||||
return
|
||||
|
||||
if(H.isSynthetic())
|
||||
src << "<span class='warning'>You can't affect synthetics.</span>"
|
||||
return
|
||||
|
||||
if(H.check_head_coverage())
|
||||
src << "You cannot get through that host's protective gear."
|
||||
return
|
||||
@@ -257,6 +261,10 @@
|
||||
|
||||
if(!M || !src) return
|
||||
|
||||
if(M.isSynthetic())
|
||||
src << "<span class='warning'>You can't affect synthetics.</span>"
|
||||
return
|
||||
|
||||
if(M.has_brain_worms())
|
||||
src << "You cannot infest someone who is already infested!"
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user