dedf5f5ed9
* Virus antagonist initial commit * Updated disease code * Sentient virus improvements * Renamed /mob/living/var/viruses to diseases, and /mob/living/var/resistances to disease_resistances * Added sentient virus event * Renamed VIRUS defines to DISEASE defines * Fixed bugs in rewritten disease code * Fixed advanced disease Copy() * Finalized disease antagonist * Made cooldown buttons stop processing if they are removed from an owner. Made sentient disease active sneeze and cough not available if the host is unconscious. Made sentient disease menu refresh when adaptations are ready or hosts are added or removed. Made sentient disease following use movement signals instead of fastprocess. * Added better icons to sentient disease abilities
118 lines
3.8 KiB
Plaintext
118 lines
3.8 KiB
Plaintext
/datum/disease/wizarditis
|
|
name = "Wizarditis"
|
|
max_stages = 4
|
|
spread_text = "Airborne"
|
|
cure_text = "The Manly Dorf"
|
|
cures = list("manlydorf")
|
|
cure_chance = 100
|
|
agent = "Rincewindus Vulgaris"
|
|
viable_mobtypes = list(/mob/living/carbon/human)
|
|
disease_flags = CAN_CARRY|CAN_RESIST|CURABLE
|
|
permeability_mod = 0.75
|
|
desc = "Some speculate that this virus is the cause of the Space Wizard Federation's existence. Subjects affected show the signs of mental retardation, yelling obscure sentences or total gibberish. On late stages subjects sometime express the feelings of inner power, and, cite, 'the ability to control the forces of cosmos themselves!' A gulp of strong, manly spirits usually reverts them to normal, humanlike, condition."
|
|
severity = DISEASE_SEVERITY_HARMFUL
|
|
required_organs = list(/obj/item/bodypart/head)
|
|
|
|
/*
|
|
BIRUZ BENNAR
|
|
SCYAR NILA - teleport
|
|
NEC CANTIO - dis techno
|
|
EI NATH - shocking grasp
|
|
AULIE OXIN FIERA - knock
|
|
TARCOL MINTI ZHERI - forcewall
|
|
STI KALY - blind
|
|
*/
|
|
|
|
/datum/disease/wizarditis/stage_act()
|
|
..()
|
|
|
|
switch(stage)
|
|
if(2)
|
|
if(prob(1)&&prob(50))
|
|
affected_mob.say(pick("You shall not pass!", "Expeliarmus!", "By Merlins beard!", "Feel the power of the Dark Side!"))
|
|
if(prob(1)&&prob(50))
|
|
to_chat(affected_mob, "<span class='danger'>You feel [pick("that you don't have enough mana", "that the winds of magic are gone", "an urge to summon familiar")].</span>")
|
|
|
|
|
|
if(3)
|
|
if(prob(1)&&prob(50))
|
|
affected_mob.say(pick("NEC CANTIO!","AULIE OXIN FIERA!", "STI KALY!", "TARCOL MINTI ZHERI!"))
|
|
if(prob(1)&&prob(50))
|
|
to_chat(affected_mob, "<span class='danger'>You feel [pick("the magic bubbling in your veins","that this location gives you a +1 to INT","an urge to summon familiar")].</span>")
|
|
|
|
if(4)
|
|
|
|
if(prob(1))
|
|
affected_mob.say(pick("NEC CANTIO!","AULIE OXIN FIERA!","STI KALY!","EI NATH!"))
|
|
return
|
|
if(prob(1)&&prob(50))
|
|
to_chat(affected_mob, "<span class='danger'>You feel [pick("the tidal wave of raw power building inside","that this location gives you a +2 to INT and +1 to WIS","an urge to teleport")].</span>")
|
|
spawn_wizard_clothes(50)
|
|
if(prob(1)&&prob(1))
|
|
teleport()
|
|
return
|
|
|
|
|
|
|
|
/datum/disease/wizarditis/proc/spawn_wizard_clothes(chance = 0)
|
|
if(ishuman(affected_mob))
|
|
var/mob/living/carbon/human/H = affected_mob
|
|
if(prob(chance))
|
|
if(!istype(H.head, /obj/item/clothing/head/wizard))
|
|
if(!H.dropItemToGround(H.head))
|
|
qdel(H.head)
|
|
H.equip_to_slot_or_del(new /obj/item/clothing/head/wizard(H), slot_head)
|
|
return
|
|
if(prob(chance))
|
|
if(!istype(H.wear_suit, /obj/item/clothing/suit/wizrobe))
|
|
if(!H.dropItemToGround(H.wear_suit))
|
|
qdel(H.wear_suit)
|
|
H.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe(H), slot_wear_suit)
|
|
return
|
|
if(prob(chance))
|
|
if(!istype(H.shoes, /obj/item/clothing/shoes/sandal/magic))
|
|
if(!H.dropItemToGround(H.shoes))
|
|
qdel(H.shoes)
|
|
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal/magic(H), slot_shoes)
|
|
return
|
|
else
|
|
var/mob/living/carbon/H = affected_mob
|
|
if(prob(chance))
|
|
var/obj/item/staff/S = new(H)
|
|
if(!H.put_in_hands(S))
|
|
qdel(S)
|
|
|
|
|
|
/datum/disease/wizarditis/proc/teleport()
|
|
var/list/theareas = get_areas_in_range(80, affected_mob)
|
|
for(var/area/space/S in theareas)
|
|
theareas -= S
|
|
|
|
if(!theareas||!theareas.len)
|
|
return
|
|
|
|
var/area/thearea = pick(theareas)
|
|
|
|
var/list/L = list()
|
|
for(var/turf/T in get_area_turfs(thearea.type))
|
|
if(T.z != affected_mob.z)
|
|
continue
|
|
if(T.name == "space")
|
|
continue
|
|
if(!T.density)
|
|
var/clear = 1
|
|
for(var/obj/O in T)
|
|
if(O.density)
|
|
clear = 0
|
|
break
|
|
if(clear)
|
|
L+=T
|
|
|
|
if(!L)
|
|
return
|
|
|
|
affected_mob.say("SCYAR NILA [uppertext(thearea.name)]!")
|
|
affected_mob.forceMove(pick(L))
|
|
|
|
return
|