Skip to content

Commit 3e3059c

Browse files
committed
Cooldown system. Elemental spirits, Dreary cell
1 parent 8242506 commit 3e3059c

27 files changed

Lines changed: 115 additions & 154 deletions

code/game/gamemodes/wizard/_config.dm

Lines changed: 5 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -6,109 +6,55 @@
66
#define WIZARD_MANA_REGEN_GROWTH 1
77
#define WIZARD_MANA_REGEN_TRESHOLD 10
88

9+
910
#define DEFAULT_DELAY 0
1011

1112

12-
#define SOULSPARK_MANACOST 550
1313
#define SOULSPARK_BASE_DAMAGE 15
1414
#define SOULSPARK_EXPLOSION_POWER 2
1515

1616

17-
#define FORCEWALL_MANACOST 300
1817
#define FORCEWALL_LIFESPAN 300
1918

2019

21-
#define WATERSPHERE_MANACOST 400
22-
#define WATERSPHERE_DAMAGE 5
2320
#define WATERSPHERE_AMOUNT_OF_LIQUID 2500
2421
#define WATERSPHERE_WEAKEN_TIME 3
2522
#define WATERSPHERE_WATERBLAST_RANGE 1
2623

2724

28-
#define LIGHTNING_STORM_MANACOST 1500
29-
#define LIGHTNING_STORM_DELAY 20
3025
#define LIGHTNING_STORM_POWER 18000
3126
#define LIGHTNING_STORM_AMOUNT_OF_LIGHTNINGS 5
3227
#define LIGHTNING_STORM_RANGE 5
3328
#define LIGHTNING_STORM_JUMP_RANGE 3
3429

3530

36-
#define BRAINROT_MANACOST 750
37-
#define BRAINROT_STUN_REDUCTION 5
38-
#define BRAINROT_HALLOSS_REDUCTION 50
39-
#define BRAINROT_PAIN_REDUCTION 35
4031
#define BRAINROT_BLIND 25
4132
#define BRAINROT_DEAF 25
42-
#define BRAINROT_PAIN 102
4333
#define BRAINROT_SILENCE 30
44-
#define BRAINROT_BRAIN_DAMAGE 15
45-
4634

47-
#define ILLUSION_MANACOST 200
4835
#define ILLUSION_LIFESPAN 1200
4936

5037

51-
#define TEMP_SHIFT_DELAY 10
52-
#define TEMP_SHIFT_MANACOST 650
53-
#define TEMP_SHIFT_WEAK_HEAT 50
54-
#define TEMP_SHIFT_STRONG_HEAT 500
55-
#define TEMP_SHIFT_WEAK_COLD -50
56-
#define TEMP_SHIFT_STRONG_COLD -500
57-
#define TEMP_SHIFT_WEAK_HEAT_ATMOS 500000
58-
#define TEMP_SHIFT_STRONG_HEAT_ATMOS 10000000
59-
#define TEMP_SHIFT_WEAK_COLD_ATMOS -500000
60-
#define TEMP_SHIFT_STRONG_COLD_ATMOS -10000000
61-
6238
#define CHAOS_BOLT_MANACOST 450
6339
#define CHAOS_BOLT_DAMAGE 25
6440

65-
#define POLYMORPH_DELAY 15
66-
#define POLYMORPH_MANACOST 1200
41+
6742
#define POLYMORPH_TIME 600
6843

69-
#define SNARE_MANACOST 300
44+
7045
#define SNARE_LIFESPAN 600
7146

72-
#define HAZE_MANACOST 1500
73-
#define HAZE_DELAY 15
47+
7448
#define HAZE_DAMAGE_MULT 4
7549
#define HAZE_LINGER_TIME 150
7650

77-
#define LASH_MANACOST 750
78-
#define LASH_BASE_DAMAGE 10
7951

80-
#define ARCHITECT_MANACOST 1100
81-
#define ARCHITECT_DELAY 50
52+
#define LASH_BASE_DAMAGE 10
8253

83-
#define CREATION_MANACOST 850
84-
#define CREATION_DELAY 20
8554

86-
#define FOREST_MANACOST 1000
87-
#define FOREST_DELAY 25
8855
#define FOREST_AMOUNT_OF_TREES 8
8956
#define FOREST_TREE_LIFESPAN 600
9057

91-
#define GRAVITY_MANACOST 700
92-
#define GRAVITY_PUSH_FORCE 5
93-
94-
#define RECALL_MANACOST 200
9558

96-
#define PORTAL_MANACOST 1250
97-
#define PORTAL_DELAY 35
9859
#define PORTAL_LIFESPAN 200
9960

100-
#define CANDELA_MANACOST 100
101-
#define CANDELA_LIGHT_POWER 6
102-
#define CANDELA_LIFESPAN 3000
103-
104-
#define EXCHANGE_MANACOST 1350
105-
#define EXCHANGE_DELAY 40
106-
107-
#define DETERIORATE_MANACOST 900
108-
109-
#define REVIVE_DELAY 50
110-
#define REVIVE_MANACOST 1600
111-
112-
#define BLINK_MANACOST 350
113-
114-
#define DANCE_MANACOST 1250

code/game/gamemodes/wizard/wizard_system/spells/click.dm

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@
4040
return
4141

4242

43+
// isbusy()
44+
45+
4346
/obj/effect/proc_holder/magic/click_on/proc/handle_targeted_cast(atom/spell_target)
4447
if(!can_cast())
4548
return
@@ -54,9 +57,13 @@
5457
if(owner.current.busy_with_action)
5558
return
5659
to_chat(owner.current, "<font color='purple'><i>I start to cast [name]!</i></font>") //proc for delay stuff
57-
owner.current.visible_message("<span class = 'danger'>[owner.current] starts to chant something!</span>")
58-
if(!do_after(owner.current,delay, needhand = FALSE, target = spell_target))
59-
return
60+
if(spell_target == owner.current || target_type != "mob")
61+
owner.current.visible_message("<span class = 'danger'>[owner.current] starts to chant something!</span>")
62+
else
63+
owner.current.visible_message("<span class = 'danger'>[owner.current] starts to chant something, actively poiting at [spell_target]!</span>")
64+
if(!do_after(owner.current,delay, needhand = FALSE, target = owner.current)) //They can move, we can not
65+
if(get_dist(owner.current, spell_target) > world.view)
66+
return
6067
if(!can_cast())
6168
return
6269

@@ -78,6 +85,8 @@
7885
else
7986
return
8087

88+
if(cooldown > 0)
89+
cooldown_left = 0
8190
owner.wizard_power_system.spend_mana(mana_cost)
8291

8392
/obj/effect/proc_holder/magic/click_on/proc/cast_on_mob(mob/living/target)
@@ -116,6 +125,8 @@
116125
playsound(owner.current, shootsound, 50)
117126
var/obj/item/projectile/P = new projectile(owner.current.loc)
118127
P.Fire(target, owner.current)
128+
if(cooldown > 0)
129+
cooldown_left = 0
119130
owner.wizard_power_system.spend_mana(mana_cost)
120131

121132

code/game/gamemodes/wizard/wizard_system/spells/spell.dm

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,32 @@ var/list/magic_spells = typesof(/obj/effect/proc_holder/magic)
1010
var/req_stat = CONSCIOUS // Can this spell be cast when you are incapacitated/dead?
1111
var/robeless = FALSE
1212
var/datum/mind/owner //Owner mind of the spell. Honestly, not sure if this is good idea, to use owner.current instead of user. And owner instead of user.mind.
13+
var/cooldown = 0 //In seconds
14+
var/cooldown_left
1315
var/list/required_schools = list()
1416

17+
/obj/effect/proc_holder/magic/atom_init()
18+
cooldown_left = cooldown
19+
START_PROCESSING(SSobj, src)
20+
21+
/obj/effect/proc_holder/magic/process()
22+
if(cooldown_left < cooldown)
23+
++cooldown_left
24+
1525
/obj/effect/proc_holder/magic/Destroy()
1626
owner = null
27+
STOP_PROCESSING(SSobj, src)
1728
return ..()
1829

1930
/obj/effect/proc_holder/magic/proc/can_cast() //Nondirect spells have NO target
2031
if(!iswizard(owner.current))
2132
return FALSE
2233

34+
if(cooldown_left < cooldown)
35+
to_chat(owner.current, "<font color='purple'><i>I can't cast this spell so frequently!</i></font>")
36+
owner.current << sound('sound/magic/magicfail.ogg')
37+
return FALSE
38+
2339
if(owner.wizard_power_system.mana < mana_cost)
2440
to_chat(owner.current, "<font color='purple'><i>I have not enough mana!</i></font>")
2541
owner.current << sound('sound/magic/magicfail.ogg')
@@ -48,6 +64,9 @@ var/list/magic_spells = typesof(/obj/effect/proc_holder/magic)
4864
if(spell_specific_checks())
4965
return
5066

67+
// if(user.is_busy()) return
68+
69+
5170
if(delay) //Multicast delay spells
5271
if(owner.current.busy_with_action == TRUE)
5372
return
@@ -60,6 +79,8 @@ var/list/magic_spells = typesof(/obj/effect/proc_holder/magic)
6079

6180
if(!cast()) //Negative so I do not have to post . = ..() everywhere
6281
owner.wizard_power_system.spend_mana(mana_cost)
82+
if(cooldown > 0)
83+
cooldown_left = 0
6384
else
6485
owner.current << sound('sound/magic/magicfail.ogg')
6586

code/game/gamemodes/wizard/wizard_system/spells/spell_list/arch_hand.dm

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
/obj/effect/proc_holder/magic/click_on/architect
22
name = "Architect's hand"
33
desc = ""
4-
delay = ARCHITECT_DELAY
5-
mana_cost = ARCHITECT_MANACOST
4+
delay = 40
5+
mana_cost = 0
66
types_to_click = list("turfs", "objects")
77
closerange = TRUE
88

code/game/gamemodes/wizard/wizard_system/spells/spell_list/brainrot.dm

Lines changed: 10 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
/obj/effect/proc_holder/magic/click_on/brainrot
2-
name = "Brainrot"
2+
name = "Brainrot" //Change name
33
desc = ""
4-
mana_cost = BRAINROT_MANACOST
4+
mana_cost = 0
5+
cooldown = 30
56
types_to_click = list("mobs")
67

78

@@ -17,35 +18,13 @@
1718
to_chat(owner.current, "<font color = 'purple'><span class = 'bold'>Something prevents my magic to affect this creature's brain!</span></font>")
1819
return
1920

20-
switch(owner.current.a_intent)
21-
if("help")
22-
target.AdjustStunned(-BRAINROT_STUN_REDUCTION)
23-
target.AdjustWeakened(-BRAINROT_STUN_REDUCTION)
24-
target.AdjustParalysis(-BRAINROT_STUN_REDUCTION)
25-
target.halloss = max(target.halloss - BRAINROT_HALLOSS_REDUCTION, 0)
26-
target.shock_stage = max(target.shock_stage - BRAINROT_PAIN_REDUCTION, 0)
27-
to_chat(target, "<font color = 'blue'>You suddenly feel a strange surge of vigor!</font>")
28-
message_admins("[usr] ([usr.ckey]) reduced stuns on [target] ([target.ckey]) using [src.name] spell.(<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[target.x];Y=[target.y];Z=[target.z]'>JMP</a>)")
29-
log_game("[usr] ([usr.ckey]) reduced stuns on [target] ([target.ckey]) using [src.name] spell.")
30-
if("disarm")
31-
if(!target.eye_blind || !target.ear_deaf)
32-
to_chat(target, "<font color = 'red'>Suddenly, you vision becomes darker and darker. All sounds become more and more distant...</font>")
33-
target.eye_blind += BRAINROT_BLIND
34-
target.ear_deaf += BRAINROT_DEAF
35-
message_admins("[usr] ([usr.ckey]) blinded and deafened [target] ([target.ckey]) using [src.name] spell.(<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[target.x];Y=[target.y];Z=[target.z]'>JMP</a>)")
36-
log_game("[usr] ([usr.ckey]) blinded and deafened [target] ([target.ckey]) using [src.name] spell.")
37-
if("hurt")
38-
target.apply_effect(BRAINROT_PAIN, AGONY)
39-
target.flash_weak_pain()
40-
target.emote("scream",,, 1)
41-
to_chat(target, "\red <font size=5>You feel excrutiating pain all over your body!</font>")
42-
message_admins("[usr] ([usr.ckey]) inflicted agony on [target] ([target.ckey]) using [src.name] spell.(<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[target.x];Y=[target.y];Z=[target.z]'>JMP</a>)")
43-
log_game("[usr] ([usr.ckey]) inflicted agony on [target] ([target.ckey]) using [src.name] spell.")
44-
if("grab")
45-
target.silent += BRAINROT_SILENCE
46-
message_admins("[usr] ([usr.ckey]) silenced [target] ([target.ckey]) using [src.name] spell.(<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[target.x];Y=[target.y];Z=[target.z]'>JMP</a>)")
47-
log_game("[usr] ([usr.ckey]) silenced [target] ([target.ckey]) using [src.name] spell.")
48-
target.adjustBrainLoss(BRAINROT_BRAIN_DAMAGE)
21+
if(!target.eye_blind || !target.ear_deaf)
22+
to_chat(target, "<font color = 'red'>Suddenly, you vision becomes darker and darker. All sounds are becoming more and more distant...</font>")
23+
target.eye_blind += BRAINROT_BLIND
24+
target.ear_deaf += BRAINROT_DEAF
25+
target.silent += BRAINROT_SILENCE
26+
message_admins("[usr] ([usr.ckey]) blinded, deafened and silenced[target] ([target.ckey]) using [src.name] spell.(<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[target.x];Y=[target.y];Z=[target.z]'>JMP</a>)")
27+
log_game("[usr] ([usr.ckey]) blinded, deafened and silenced [target] ([target.ckey]) using [src.name] spell.")
4928

5029

5130
#undef BRAINROT_DELAY

code/game/gamemodes/wizard/wizard_system/spells/spell_list/chaos_bolt.dm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/obj/effect/proc_holder/magic/click_on/shoot/chaos_bolt
22
name = "Arrow of darkness"
33
desc = ""
4-
mana_cost = CHAOS_BOLT_MANACOST
4+
mana_cost = 0
55
projectile = /obj/item/projectile/magic/chaos_bolt
66
shootsound = 'sound/effects/dark_blast.ogg'
77

code/game/gamemodes/wizard/wizard_system/spells/spell_list/creation.dm

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
/obj/effect/proc_holder/magic/click_on/creation
22
name = "Esoteric creation"
33
desc = ""
4-
mana_cost = CREATION_MANACOST
5-
delay = CREATION_DELAY
4+
mana_cost = 0
5+
delay = 50
6+
cooldown = 20
67
types_to_click = list("turfs")
78
closerange = TRUE
89

code/game/gamemodes/wizard/wizard_system/spells/spell_list/elemental_snare.dm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/obj/effect/proc_holder/magic/click_on/elemental_snare
22
name = "Elemental snare"
33
desc = ""
4-
mana_cost = SNARE_MANACOST
4+
mana_cost = 0
55
types_to_click = list("turfs")
66

77
/obj/effect/proc_holder/magic/click_on/elemental_snare/check_turf_cast(turf/target)

code/game/gamemodes/wizard/wizard_system/spells/spell_list/fair_exchange.dm

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
/obj/effect/proc_holder/magic/nondirect/fair_exchange
22
name = "Fair exchange"
33
desc = ""
4-
mana_cost = EXCHANGE_MANACOST
5-
delay = EXCHANGE_DELAY
4+
mana_cost = 0
65
var/obj/item/item_to_transform
76

7+
//Messages if no item
8+
89

910
/obj/effect/proc_holder/magic/nondirect/fair_exchange/spell_specific_checks()
1011
var/obj/item/old_item = owner.current.get_active_hand()

code/game/gamemodes/wizard/wizard_system/spells/spell_list/forcewall.dm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/obj/effect/proc_holder/magic/click_on/forcewall
22
name = "Forcewall"
33
desc = ""
4-
mana_cost = FORCEWALL_MANACOST
4+
mana_cost = 0
55
types_to_click = list("turfs")
66

77

0 commit comments

Comments
 (0)