mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-12 19:22:56 +00:00
Replaced every l_hand = and r_hand = and all that if(hand) crap to use standardised procs. This means we can use procs like Dropped() reliably as they will always be called when things are dropped. Thorough documentation to come. But generally, if you want a mob's icons to update after deleting something in the inventory...use drop_from_inventory(the_thing_you_wanna_drop) just before deleting it. If you wanna put something in a mob's hands use put_in_hands() (or one of the variants). It'll try putting it in active hand first, then inactive, then the floor. They handle layers, overlays, screenlocs calling various procs such as dropped() etc for you. Easy mob.equipped() is now mob.get_active_hand() because there was another totally unrelated proc named equipped() and stuff was confusing. Weakening was made instantaneous. Minor optimisations for human/handle_regular_status_updates(). I'll port these changes over to the other mobs next. Basically it should stop it constantly incrementing every status effect even after death. umm... bunch of overlays related fixes... I think that's everything. :/ git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3900 316c924e-a436-60f5-8080-3fe189b3f50e
123 lines
3.6 KiB
Plaintext
123 lines
3.6 KiB
Plaintext
/datum/disease/wizarditis
|
|
name = "Wizarditis"
|
|
max_stages = 4
|
|
spread = "Airborne"
|
|
cure = "The Manly Dorf"
|
|
cure_id = "manlydorf"
|
|
cure_chance = 100
|
|
agent = "Rincewindus Vulgaris"
|
|
affected_species = list("Human")
|
|
curable = 1
|
|
permeability_mod = 0.75
|
|
desc = "Some speculate, that this virus is the cause of Wizard Federation existance. 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 = "Major"
|
|
|
|
|
|
/*
|
|
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))
|
|
affected_mob << "\red You feel [pick("that you don't have enough mana.", "that the winds of magic are gone.", "an urge to summon familiar.")]"
|
|
|
|
|
|
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))
|
|
affected_mob << "\red You feel [pick("the magic bubbling in your veins","that this location gives you a +1 to INT","an urge to summon familiar.")]."
|
|
|
|
if(4)
|
|
|
|
if(prob(1))
|
|
affected_mob.say(pick("NEC CANTIO!","AULIE OXIN FIERA!","STI KALY!","EI NATH!"))
|
|
return
|
|
if(prob(1)&&prob(50))
|
|
affected_mob << "\red 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")]."
|
|
spawn_wizard_clothes(50)
|
|
if(prob(1)&&prob(1))
|
|
teleport()
|
|
return
|
|
|
|
|
|
|
|
/datum/disease/wizarditis/proc/spawn_wizard_clothes(var/chance = 0)
|
|
if(istype(affected_mob, /mob/living/carbon/human))
|
|
var/mob/living/carbon/human/H = affected_mob
|
|
if(prob(chance))
|
|
if(!istype(H.head, /obj/item/clothing/head/wizard))
|
|
if(H.head)
|
|
H.drop_from_inventory(H.head)
|
|
H.head = new /obj/item/clothing/head/wizard(H)
|
|
H.head.layer = 20
|
|
return
|
|
if(prob(chance))
|
|
if(!istype(H.wear_suit, /obj/item/clothing/suit/wizrobe))
|
|
if(H.wear_suit)
|
|
H.drop_from_inventory(H.wear_suit)
|
|
H.wear_suit = new /obj/item/clothing/suit/wizrobe(H)
|
|
H.wear_suit.layer = 20
|
|
return
|
|
if(prob(chance))
|
|
if(!istype(H.shoes, /obj/item/clothing/shoes/sandal))
|
|
if(H.shoes)
|
|
H.drop_from_inventory(H.shoes)
|
|
H.shoes = new /obj/item/clothing/shoes/sandal(H)
|
|
H.shoes.layer = 20
|
|
return
|
|
else
|
|
var/mob/living/carbon/H = affected_mob
|
|
if(prob(chance))
|
|
if(!istype(H.r_hand, /obj/item/weapon/staff))
|
|
H.drop_r_hand()
|
|
H.put_in_r_hand( new /obj/item/weapon/staff(H) )
|
|
return
|
|
return
|
|
|
|
|
|
|
|
/datum/disease/wizarditis/proc/teleport()
|
|
var/list/theareas = new/list()
|
|
for(var/area/AR in orange(80, affected_mob))
|
|
if(theareas.Find(AR) || AR.name == "Space") continue
|
|
theareas += AR
|
|
|
|
if(!theareas)
|
|
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.loc = pick(L)
|
|
|
|
return
|