From 68c26a3e9d31dcf2f0e7287ccaa1dd696afa06ca Mon Sep 17 00:00:00 2001 From: Shifty Date: Sat, 26 Apr 2025 09:55:17 +0100 Subject: [PATCH 1/7] Spell code docs: spell.dm --- code/modules/spells/spell_code.dm | 294 +++++++++++++++++++++--------- tgui/public/tgui-say.bundle.css | 1 + tgui/public/tgui-say.bundle.js | 1 + 3 files changed, 206 insertions(+), 90 deletions(-) create mode 100644 tgui/public/tgui-say.bundle.css create mode 100644 tgui/public/tgui-say.bundle.js diff --git a/code/modules/spells/spell_code.dm b/code/modules/spells/spell_code.dm index 78bdc25b4211..a1cf2882dbfa 100644 --- a/code/modules/spells/spell_code.dm +++ b/code/modules/spells/spell_code.dm @@ -2,37 +2,58 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now /spell var/name = "Spell" - var/abbreviation = "" //Used for feedback gathering + /// Used for feedback gathering. Not implemented + var/abbreviation = "" var/desc = "A spell." parent_type = /datum - var/panel = "Spells"//What panel the proc holder needs to go on. - - var/school = "evocation" //not relevant at now, but may be important later if there are changes to how spells work. the ones I used for now will probably be changed... maybe spell presets? lacking flexibility but with some other benefit? - var/user_type = USER_TYPE_NOUSER // What kind of mob uses this spell - var/specialization //Used for what list they belong to in the spellbook. SSOFFENSIVE, SSDEFENSIVE, SSUTILITY - - var/charge_type = Sp_RECHARGE //can be recharge or charges, see charge_max and charge_counter descriptions; can also be based on the holder's vars now, use "holder_var" for that; can ALSO be made to gradually drain the charge with Sp_GRADUAL - //The following are allowed: Sp_RECHARGE (Recharges), Sp_CHARGES (Limited uses), Sp_GRADUAL (Gradually lose charges), Sp_PASSIVE (Does not cast) - - var/initial_charge_max = 100 //Used to calculate cooldown reduction - var/charge_max = 100 //recharge time in deciseconds if charge_type = Sp_RECHARGE or starting charges if charge_type = Sp_CHARGES - var/charge_counter = 0 //can only cast spells if it equals recharge, ++ each decisecond if charge_type = Sp_RECHARGE or -- each cast if charge_type = Sp_CHARGES - var/minimum_charge = 0 //if set, the minimum charge_counter necessary to cast Sp_GRADUAL spells + /// What panel the proc holder needs to go on. + var/panel = "Spells" + + /// Fluff. Unimplemented. + var/school = "evocation" + /// What kind of mob uses this spell. See 'spell_defines.dm'. Form: USER_TYPE_WIZARD, etc. + var/user_type = USER_TYPE_NOUSER + /// Used for what list they belong to in the spellbook. SSOFFENSIVE, SSDEFENSIVE, SSUTILITY + var/specialization + + ///can be recharge or charges, see charge_max and charge_counter descriptions; can also be based on the holder's vars now, use "holder_var" for that; can ALSO be made to gradually drain the charge with Sp_GRADUAL + ///The following are allowed: Sp_RECHARGE (Recharges), Sp_CHARGES (Limited uses), Sp_GRADUAL (Gradually lose charges), Sp_PASSIVE (Does not cast) + var/charge_type = Sp_RECHARGE + + /// Used to calculate cooldown reduction + var/initial_charge_max = 10 SECONDS + /// recharge time in deciseconds if charge_type = Sp_RECHARGE or starting charges if charge_type = Sp_CHARGES + var/charge_max = 10 SECONDS + /// can only cast spells if it equals recharge, ++ each decisecond if charge_type = Sp_RECHARGE or -- each cast if charge_type = Sp_CHARGES + var/charge_counter = 0 + /// if set, the minimum charge_counter necessary to cast Sp_GRADUAL spells + var/minimum_charge = 0 + /// Message to display if spell is recharging. var/still_recharging_msg = "The spell is still recharging." - var/silenced = 0 //not a binary (though it seems that it is at the moment) - the length of time we can't cast this for, set by the spell_master silence_spells() - - var/price = Sp_BASE_PRICE //How much does it cost to buy this spell from a spellbook - var/quicken_price = Sp_BASE_PRICE * 0.5 //How much lowering the spell cooldown costs in the spellbook - var/refund_price = 0 //If 0, non-refundable - - var/holder_var_type = "bruteloss" //only used if charge_type equals to "holder_var" - var/holder_var_amount = 20 //Amount to adjust var when spell is used, THIS VALUE IS SUBTRACTED - var/holder_var_name //Name of the holder var on the UI. - var/insufficient_holder_msg //Override for still recharging msg for holder variables - var/datum/special_var_holder //if a holder var is stored on a different object or a datum - + // Time in ticks until you can't cast a spell anymore. See spell_master silence_spells() + var/silenced = 0 + + /// How much does it cost to buy this spell from a spellbook + var/price = Sp_BASE_PRICE + /// How much lowering the spell cooldown costs in the spellbook + var/quicken_price = Sp_BASE_PRICE * 0.5 + /// If 0, non-refundable + var/refund_price = 0 + + /// Type of dmg dealt. only used if charge_type equals to "holder_var" + var/holder_var_type = "bruteloss" + /// Amount to adjust var when spell is used, THIS VALUE IS SUBTRACTED. + var/holder_var_amount = 20 + /// Name of the holder var on the UI. + var/holder_var_name + /// Override for still recharging msg for holder variables + var/insufficient_holder_msg + /// if a holder var is stored on a different object or a datum + var/datum/special_var_holder + + /// See var definition for potential flags spells. var/spell_flags = NEEDSCLOTHES //Possible spell flags: //GHOSTCAST to make ghosts be able to cast this @@ -52,26 +73,42 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now //IGNOREDENSE to ignore dense turfs in selection //IGNORESPACE to ignore space turfs in selection + /// See var definition for possible spells. Implemented for golems. var/autocast_flags //Flags for making AI-controlled spellcasters' life easier //Possible flags: //AUTOCAST_NOTARGET means that the AI can't pick a target for this spell by itself - a target must be given to it - var/invocation = "HURP DURP" //what is uttered when the wizard casts the spell - var/invocation_type = SpI_NONE //can be none, whisper, shout, and emote - var/range = 7 //the range of the spell; outer radius for aoe spells - var/message = "" //whatever it says to the guy affected by it - var/selection_type = "view" //can be "range" or "view" - var/atom/movable/holder //where the spell is. Normally the user, can be an item - var/duration = 0 //how long the spell lasts + /// what is uttered when the wizard casts the spell + var/invocation = "HURP DURP" + /// can be none, whisper, shout, and emote + var/invocation_type = SpI_NONE + /// the range of the spell; outer radius for aoe spells + var/range = 7 + /// whatever it says to the guy affected by it + var/message = "" + /// can be "range" or "view" + var/selection_type = "view" + /// where the spell is. Normally the user, can be an item + var/atom/movable/holder + /// how long the spell lasts + var/duration = 0 + /// Valid targets list. Can be overriden var/list/valid_targets = list(/mob/living) - var/list/spell_levels = list(Sp_SPEED = 0, Sp_POWER = 0) //the current spell levels - total spell levels can be obtained by just adding the two values - var/list/level_max = list(Sp_TOTAL = 4, Sp_SPEED = 4, Sp_POWER = 0) //maximum possible levels in each category. Total does cover both. - var/cooldown_reduc = 0 //If set, defines how much charge_max drops by every speed upgrade + /// the current spell levels - total spell levels can be obtained by just adding the two values + var/list/spell_levels = list(Sp_SPEED = 0, Sp_POWER = 0) + /// maximum possible levels in each category. Total does cover both. + var/list/level_max = list(Sp_TOTAL = 4, Sp_SPEED = 4, Sp_POWER = 0) + /// If set, defines how much charge_max drops by every speed upgrade + var/cooldown_reduc = 0 + /// For channelled spells (cast_delay > 0), reduces the delay before the spell is active. var/delay_reduc = 0 - var/cooldown_min = 0 //minimum possible cooldown for a charging spell + /// minimum possible cooldown for a charging spell + var/cooldown_min = 0 + // Nb: currently, this does nothing, and probably hasn't since this line was written. + /// Flags for what this spell is 'based' upon, for interacting with other spells var/spell_aspect_flags //Flags for what this spell is 'based' upon, for interacting with other spells //For instance, a fire-based spell would have the FIRE flag @@ -81,35 +118,55 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now var/overlay_icon_state = "spell" var/overlay_lifespan = 0 + /// If sparks caused by this spell spread. var/sparks_spread = 0 - var/sparks_amt = 0 //cropped at 10 - var/smoke_spread = 0 //1 - harmless, 2 - harmful - var/smoke_amt = 0 //cropped at 10 - + /// cropped at 10 + var/sparks_amt = 0 + /// 1 - harmless, 2 - harmful + var/smoke_spread = 0 + /// cropped at 10 + var/smoke_amt = 0 + + /// probability (0-100) to call critfail() var/critfailchance = 0 + /// Delay before cast var/cast_delay = 1 + /// Soundfile for cast. var/cast_sound = "" + /// Progress bar for longer cast sells. var/use_progress_bar = FALSE - var/hud_state = "" //name of the icon used in generating the spell hud object + ///name of the icon-state used in generating the spell hud icon. + var/hud_state = "" + /// icon used for the hud. var/override_icon = "" + /// Background colour used in the HUD var/override_base = "" + /// Dir used var/icon_direction = SOUTH //Needs override_icon to be not null + /// Button atom to cast the spell var/obj/abstract/screen/spell/connected_button + /// Is the spell being cast right now, or waiting a target for WAIT_CLICK var/currently_channeled = 0 - var/gradual_casting = FALSE //equals TRUE while a Sp_GRADUAL spell is actively being cast - - var/list/holiday_required = list() // The holiday this spell is restricted to ! Leave empty if none. - var/block = 0//prevents some spells from being spamed + /// equals TRUE while a Sp_GRADUAL spell is actively being cast + var/gradual_casting = FALSE + + /// The holiday this spell is restricted to ! Leave empty if none. + var/list/holiday_required = list() + /// prevents some spells from being spamed + var/block = 0 + /// The animation atom to be created during the cast var/obj/delay_animation = null - var/user_dir //Used by NO_TURNING to memorize the user's direction and turn them around + /// Used by NO_TURNING to memorize the user's direction and turn them around + var/user_dir /////////////////////// ///SETUP AND PROCESS/// /////////////////////// +/// Constructor proc /spell/New() ..() @@ -117,11 +174,13 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now charge_counter = charge_max initial_charge_max = charge_max //Let's not add charge_max_initial to roughly 80 (at the time of this comment) spells +/// Private: internal sanity check for setting holder /spell/proc/set_holder(var/new_holder) if(holder == new_holder) world.log << "[src] is trying to set its holder to the same holder!" holder = new_holder +/// Private: master proc for channelled spells, recharging cooldown, etc. /spell/proc/process() spawn while(charge_counter < charge_max) if(holder && !holder.timestopped) @@ -150,12 +209,17 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now /////CASTING///// ///////////////// +/// Public: what happens when you right-click on the spell icon in the HUD (example: set different targetting mode) /spell/proc/on_right_click(mob/user) return +/// Public: returns the list of things the spell will use in invocation() +/// Already implemented for targetted, aoe_turf, etc. Can be overriden for special target selection by the spell. /spell/proc/choose_targets(mob/user = usr) //depends on subtype - see targeted.dm, aoe_turf.dm, dumbfire.dm, or code in general folder return +/// Public: helper proc for checking if a target is valid. +/// Call in `choose_targets`. Automatically called by targetted/aoe_turf spells. /spell/proc/is_valid_target(atom/target, mob/user, options, bypass_range = 0) if(ismob(target)) var/mob/M = target @@ -169,6 +233,8 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now return (target in options) return ((target in view_or_range(range, user, selection_type)) && is_type_in_list(target, valid_targets)) +/// Private: master proc for the full spellcode +/// Selects target, does the channel check, animate, casts the spell, etc. /spell/proc/perform(mob/user = usr, skipcharge = 0, list/target_override) if(!holder) set_holder(user) //just in case @@ -225,7 +291,7 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now take_charge(user, skipcharge) after_cast(targets) //generates the sparks, smoke, target messages etc. -//This is used with the wait_for_click spell flag to prepare spells to be cast on your next click +/// Private: This is used with the wait_for_click spell flag to prepare spells to be cast on your next click /spell/proc/channel_spell(mob/user = usr, skipcharge = 0, force_remove = 0) if(!holder) set_holder(user) //just in case @@ -250,17 +316,19 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now connected_button.name = name return 1 -//Used by NO_TURNING to turn the user around -//Due to the way the code is structured (/event/uattack happens after the user has turned around) -//we have to check for the only thing that happens before turning, /event/clickon. -//but since that has no way of directly interfering with face_atom() we instead memorize the direction of the user at the time -//and then flip them around at the start of proper spellcasting. -//Unfortunately this means that the user is still technically turning around. -//The only viable solution would be restructuring click.dm code to support not turning around but that might break too many things. +/// Used by NO_TURNING to turn the user around +/// Due to the way the code is structured (/event/uattack happens after the user has turned around) +/// we have to check for the only thing that happens before turning, /event/clickon. +/// but since that has no way of directly interfering with face_atom() we instead memorize the direction of the user at the time +/// and then flip them around at the start of proper spellcasting. +/// Unfortunately this means that the user is still technically turning around. +/// The only viable solution would be restructuring click.dm code to support not turning around but that might break too many things. +/// (Private) /spell/proc/memorize_user_direction(mob/user, list/modifiers, atom/target) if(holder) user_dir = holder.dir +/// Private: internal master proc for channelled spells. /spell/proc/channeled_spell(atom/atom, bypassrange = 0) var/list/target = list(atom) var/mob/user = holder @@ -288,24 +356,33 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now return 1 return 0 +/// Public: automatically called in the master proc for channelled spells. /spell/proc/before_channel(mob/user) return +/// Public: automatically called in the spell before selecting targets. /spell/proc/before_target(mob/user) return -/spell/proc/cast(list/targets, mob/user) //the actual meat of the spell +/// Public: the actual meat of the spell +/spell/proc/cast(list/targets, mob/user) return +/// Public: Automatically called for channelled spells when they're no longer being cast. +/// Should be manually called for wizard death, etc. /spell/proc/stop_casting(list/targets, mob/user) if(gradual_casting) gradual_casting = FALSE return -/spell/proc/critfail(list/targets, mob/user) //the wizman has fucked up somehow +/// Public: the wizman has fucked up somehow +/// Currently unimplemented asider from vampire code +/spell/proc/critfail(list/targets, mob/user) return -/spell/proc/adjust_var(mob/living/target = usr, varname, amount) //handles the adjustment of the var when the spell is used. has some hardcoded types +/// Private: handles the adjustment of the var when the spell is used. has some hardcoded types +/// Should PROBABLY be reworked............. +/spell/proc/adjust_var(mob/living/target = usr, varname, amount) // if(!(varname in target.vars)) world.log << "Spell [varname] of user [usr] adjusting non-numeric value on [target], aborting" return @@ -333,6 +410,8 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now /////CASTING WRAPPERS////// /////////////////////////// +/// Public: wrapper before casting the spell. Default behaviour is to scan view/range, check everything for `is_valid_target` +/// And then return the list of targets: /spell/proc/before_cast(list/targets, user, bypass_range = 0) var/list/valid_targets = list() var/list/options = view_or_range(range,user,selection_type) @@ -357,6 +436,8 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now QDEL_NULL(spell) return valid_targets +/// Public: wrapper AFTER casting the spell. +/// Default behaviour: send `message` var, apply sparks, apply smoke /spell/proc/after_cast(list/targets) for(var/atom/target in targets) var/location = get_turf(target) @@ -379,6 +460,8 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now ///////////////////// /*Checkers, cost takers, message makers, etc*/ +/// Public: check if spell can be cast. +/// Default behaviour handles cooldown, z-level check, etc. /spell/proc/cast_check(skipcharge = 0,mob/user = usr) //checks if the spell can be cast based on its settings; skipcharge is used when an additional cast_check is called inside the spell if(!(src in user.spell_list) && holder == user) to_chat(user, "You shouldn't have this spell! Something's wrong.") @@ -441,11 +524,13 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now return 1 +/// Private: simple helper to check if the spell is typically used by wizards /spell/proc/is_wizard_spell() if(user_type == USER_TYPE_WIZARD || USER_TYPE_SPELLBOOK) return TRUE return FALSE +/// Semi-private: checks cooldown, charges, gradual. /spell/proc/check_charge(var/skipcharge, mob/user) //Arcane golems have no cooldowns on their spells if(istype(user, /mob/living/simple_animal/hostile/arcane_golem)) @@ -482,11 +567,14 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now return 0 return 1 +/// Semi-private: what is sent to the user if a spell needs recharging. +/// Default behaviour uses the spell `still_recharging_msg` and `insufficient_holder_msg` /spell/proc/holder_var_recharging_msg() if(insufficient_holder_msg) return insufficient_holder_msg return still_recharging_msg +/// Private: takes spell charges and apply cooldown /spell/proc/take_charge(mob/user = user, var/skipcharge) if(!skipcharge) if(charge_type & Sp_RECHARGE) @@ -506,7 +594,8 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now if(charge_type & Sp_PASSIVE) process() - +/// Semi-private: wrapper for shouting out the invocation +/// Applying the spell cast, etc. /spell/proc/invocation(mob/user = usr, var/list/targets) //spelling the spell out and setting it on recharge/reducing charges amount @@ -528,6 +617,8 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now ///UPGRADING PROCS/// ///////////////////// +/// Public: checks if the spell can be improved +/// Default behaviour: checks with `spell_levels` and `level_max` /spell/proc/can_improve(var/upgrade_type) if(level_max[Sp_TOTAL] <= ( spell_levels[Sp_SPEED] + spell_levels[Sp_POWER] )) //too many levels, can't do it return 0 @@ -538,9 +629,12 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now return 1 +/// Public: proc to be called when purchasing `SP_POWER` upgrade /spell/proc/empower_spell() return +/// Public: proc to be called when purchasing `SP_SPEED` upgrade +/// Default behaviour is to make it quicker (duh) /spell/proc/quicken_spell() if(!can_improve(Sp_SPEED)) return 0 @@ -578,7 +672,9 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now return temp -/spell/proc/spell_do_after(var/mob/user as mob, delay as num, var/numticks = 5) +/// Private: proc displays a progress bar and acts as a `do_after` check (mob stays still, target in range, etc) +/// Automatically called if the spell has a `cast_delay`. +/spell/proc/spell_do_after(var/mob/user, delay, var/numticks = 5) if(!user || isnull(user)) return 0 if(numticks == 0) @@ -626,7 +722,7 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now progbar.loc = null return 1 -//UPGRADES +/// Private: calls the relevant upgrade proc /spell/proc/apply_upgrade(upgrade_type) switch(upgrade_type) if(Sp_SPEED) @@ -634,6 +730,8 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now if(Sp_POWER) return empower_spell() +/// Public: how much spell points it costs to upgrade the spell +/// Can override if you want a finer control over balance. Default behaviour uses `quicken_price` and `price` /spell/proc/get_upgrade_price(upgrade_type) if(upgrade_type == Sp_SPEED) return quicken_price @@ -641,6 +739,8 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now ///INFO +/// Public: return texts to be displayed in the spellbook for upgrade +/// Should override to have better explanation for `SP_POWER` upgrades. /spell/proc/get_upgrade_info(upgrade_type) switch(upgrade_type) if(Sp_SPEED) @@ -657,22 +757,63 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now return "The spell can't be made any more powerful than this!" return "Increase this spell's power." -//Return a string that gets appended to the spell on the scoreboard +/// Atomizes what data the spell shows, that way different spells such as pulse demon and vampire spells can have their own descriptions. +/spell/proc/generate_tooltip(var/previous_data = "") + var/dat = previous_data //In case you want to put some text at the top instead of bottom + if(charge_type & Sp_RECHARGE) + dat += "
Cooldown: [charge_max/10] second\s" + if(charge_type & Sp_CHARGES) + dat += "
Has [charge_counter] charge\s left" + if(charge_type & Sp_HOLDVAR) + dat += "
Requires [charge_type & Sp_GRADUAL ? "" : "[holder_var_amount]"] " + if(holder_var_name) + dat += "[holder_var_name]" + else + dat += "[holder_var_type]" + if(charge_type & Sp_GRADUAL) + dat += " to sustain" + switch(range) + if(1) + dat += "
Range: Adjacency" + if(2 to INFINITY) + dat += "
Range: [range]" + if(GLOBALCAST) + dat += "
Range: Global" + if(SELFCAST) + dat += "
Range: Self" + if(desc) + dat += "
Desc: [desc]" + return dat + +/// Public: return a string that gets appended to the spell on the scoreboard /spell/proc/get_scoreboard_suffix() return + +//////////////////// +// EVENTS // +//////////////////// + +/// Public: called by event when the mob gets the spell /spell/proc/on_added(mob/user) return +/// Public: called by event when the mob loses the spell /spell/proc/on_removed(mob/user) return +/// Public: called by event when the mob fucking dies /spell/proc/on_holder_death(mob/user) return +/// Public: called by event when the mob switches minds /spell/proc/on_transfer(mob/user) return +//////////////////// +//WIZARD MOB PROCS// +//////////////////// + //To batch-remove wizard spells. Linked to mind.dm. /mob/proc/spellremove(var/mob/M as mob) for(var/spell/spell_to_remove in src.spell_list) @@ -716,6 +857,7 @@ Made a proc so this is not repeated 14 (or more) times.*/ return 1 */ +/// Mob wears clothing that prevents him from casting spells. /mob/proc/is_gentled() for(var/V in get_equipped_items()) if(isclothing(V)) @@ -724,31 +866,3 @@ Made a proc so this is not repeated 14 (or more) times.*/ to_chat(src, "You feel too humble to do that.") return TRUE return FALSE - -//Atomizes what data the spell shows, that way different spells such as pulse demon and vampire spells can have their own descriptions. -/spell/proc/generate_tooltip(var/previous_data = "") - var/dat = previous_data //In case you want to put some text at the top instead of bottom - if(charge_type & Sp_RECHARGE) - dat += "
Cooldown: [charge_max/10] second\s" - if(charge_type & Sp_CHARGES) - dat += "
Has [charge_counter] charge\s left" - if(charge_type & Sp_HOLDVAR) - dat += "
Requires [charge_type & Sp_GRADUAL ? "" : "[holder_var_amount]"] " - if(holder_var_name) - dat += "[holder_var_name]" - else - dat += "[holder_var_type]" - if(charge_type & Sp_GRADUAL) - dat += " to sustain" - switch(range) - if(1) - dat += "
Range: Adjacency" - if(2 to INFINITY) - dat += "
Range: [range]" - if(GLOBALCAST) - dat += "
Range: Global" - if(SELFCAST) - dat += "
Range: Self" - if(desc) - dat += "
Desc: [desc]" - return dat diff --git a/tgui/public/tgui-say.bundle.css b/tgui/public/tgui-say.bundle.css new file mode 100644 index 000000000000..83293a499c5c --- /dev/null +++ b/tgui/public/tgui-say.bundle.css @@ -0,0 +1 @@ +html,body{box-sizing:border-box;height:100%;font-size:var(--font-size,12px);color:var(--color-text,#fff);scrollbar-color:var(--color-scrollbar-thumb)var(--color-scrollbar-base);margin:0}html{cursor:var(--cursor-default,default);overflow:hidden}body{font-family:var(--font-family,Verdana,Geneva,sans-serif);overflow:auto}*,:before,:after{box-sizing:inherit}h1,h2,h3,h4,h5,h6{padding:var(--space-m,6px)0;padding:var(--space-m,.5rem)0;margin:0;display:block}h1{font-size:1.5rem}h2{font-size:1.333rem}h3{font-size:1.167rem}h4{font-size:1rem}td,th{vertical-align:baseline;text-align:left}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-baseline{text-align:baseline}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-pre{white-space:pre}.text-bold{font-weight:700}.text-italic{font-style:italic}.text-underline{text-decoration:underline}.Input{width:10em;padding:0 var(--space-sm);margin-right:var(--space-xs);background-color:var(--input-background);color:var(--input-color);border:var(--border-thickness-tiny)solid var(--input-border-color);border-radius:var(--input-border-radius);line-height:1.41667em;display:inline-block;position:relative;overflow:visible}.Input:focus-within{border-color:var(--input-border-color-focus)}.Input--fluid{width:auto;display:block}.Input__baseline{color:transparent;display:inline-block}.Input__input{width:100%;height:1.41667em;padding:0 var(--space-m);font-size:1em;line-height:1.41667em;font-family:var(--input-font-family);color:inherit;background-color:transparent;border:0;outline:0;margin:0;display:block;position:absolute;top:0;bottom:0;left:0;right:0}.Input__input::-webkit-input-placeholder{color:var(--input-color-placeholder);font-style:italic}.Input__input::-ms-input-placeholder{color:var(--input-color-placeholder);font-style:italic}.Input__input::placeholder{color:var(--input-color-placeholder);font-style:italic}.Input--monospace .Input__input{font-family:var(--input-font-family-mono)}.TextArea{background-color:var(--input-background);border-radius:var(--input-border-radius);border:var(--border-thickness-tiny)solid var(--input-border-color);box-sizing:border-box;width:100%;margin-right:.166667em;line-height:1.41667em;display:inline-block;position:relative}.TextArea:focus-within{border-color:var(--input-border-color-focus)}.TextArea--fluid{width:auto;height:auto;display:block}.TextArea--noborder{border:0}.TextArea__textarea.TextArea__textarea--scrollable{overflow-x:hidden;overflow-y:auto}.TextArea__textarea{box-sizing:border-box;color:var(--input-color);height:100%;min-height:1.41667em;padding:0 var(--space-m);resize:none;word-wrap:break-word;background-color:transparent;border:0;outline:0;width:100%;margin:0;font-family:inherit;font-size:1em;line-height:1.41667em;display:block;position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.TextArea__textarea::-webkit-input-placeholder{color:var(--input-color-placeholder);font-style:italic}.TextArea__textarea::-ms-input-placeholder{color:var(--input-color-placeholder);font-style:italic}.TextArea__textarea::placeholder{color:var(--input-color-placeholder);font-style:italic}.TextArea__textarea_custom{white-space:pre-wrap;overflow:visible}.TextArea__nowrap{overflow-wrap:normal;white-space:nowrap;overflow-x:scroll}.TextArea__value-container{width:100%;height:100%;position:absolute;overflow:hidden}.window{background-color:#000;position:relative;overflow:hidden}@keyframes shine{0%{transform:rotate(0)}50%{transform:rotate(270deg)}to{transform:rotate(360deg)}}.shine{background-size:150% 150%;animation:15s linear infinite shine;position:absolute;top:0;bottom:0;left:0;right:0}.window-lightMode{background-color:#fff}.window-30{height:30px}.window-50{height:50px}.window-70{height:70px}.content{font:"tgfont";background-color:#000;grid-template-columns:3.5rem 1fr;padding:2px;display:grid;position:absolute;top:2px;bottom:2px;left:2px;right:2px;overflow:hidden}.content-lightMode{background-color:#fff}.button{text-align:center;text-overflow:ellipsis;white-space:nowrap;background-color:#1f1f1f;border:none;border-radius:.3rem;outline:none;width:100%;padding:.1rem .2rem;font-family:inherit;font-size:11px;font-weight:700;overflow:hidden}.button:hover{background-color:#393939}.button-lightMode{color:#000;background-color:#bbb;border:none}.button-lightMode:hover{background-color:#eaeaea}.textarea{resize:none;scrollbar-width:thin;scrollbar-color:#4c4c4c transparent;background:0 0;border:none;outline:none;margin:.1rem 0 0 .4rem;font-family:inherit;font-size:1.1rem}.button-Admin{color:#fbf;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-color:#f8f}.button-Admin:hover{color:#ffd5ff;border-color:#fef}.textarea-Admin{color:#fbf}.window-Admin{background-color:#fbf}.shine-Admin{background:radial-gradient(circle,#ffd5ff,#ff6fff,#fff,#ff6fff,#ffd5ff)}.button-AI{color:#d65d95;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-color:#cc347a}.button-AI:hover{color:#db71a2;border-color:#e086b0}.textarea-AI{color:#d65d95}.window-AI{background-color:#d65d95}.shine-AI{background:radial-gradient(circle,#db71a2,#b82f6e,#e59abd,#b82f6e,#db71a2)}.button-CCom{color:#2681a5;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-color:#1c617c}.button-CCom:hover{color:#2b91ba;border-color:#2fa1ce}.textarea-CCom{color:#2681a5}.window-CCom{background-color:#2681a5}.shine-CCom{background:radial-gradient(circle,#2b91ba,#185067,#44abd4,#185067,#2b91ba)}.button-Cling{color:#4c701f;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-color:#314814}.button-Cling:hover{color:#598425;border-color:#67982a}.textarea-Cling{color:#4c701f}.window-Cling{background-color:#4c701f}.shine-Cling{background:radial-gradient(circle,#598425,#23340e,#74ac30,#23340e,#598425)}.button-Cmd{color:#fcdf03;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-color:#cab202}.button-Cmd:hover{color:#fce21c;border-color:#fde535}.textarea-Cmd{color:#fcdf03}.window-Cmd{background-color:#fcdf03}.shine-Cmd{background:radial-gradient(circle,#fce21c,#b09c02,#fde94f,#b09c02,#fce21c)}.button-Engi{color:#f37746;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-color:#f05416}.button-Engi:hover{color:#f5895e;border-color:#f69a76}.textarea-Engi{color:#f37746}.window-Engi{background-color:#f37746}.shine-Engi{background:radial-gradient(circle,#f5895e,#de490e,#f8ac8e,#de490e,#f5895e)}.button-Hive{color:#855d85;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-color:#674867}.button-Hive:hover{color:#946794;border-color:#9f769f}.textarea-Hive{color:#855d85}.window-Hive{background-color:#855d85}.shine-Hive{background:radial-gradient(circle,#946794,#583d58,#aa85aa,#583d58,#946794)}.button-io{color:#1e90ff;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-color:#0077ea}.button-io:hover{color:#389dff;border-color:#51a9ff}.textarea-io{color:#1e90ff}.window-io{background-color:#1e90ff}.shine-io{background:radial-gradient(circle,#389dff,#006ad1,#6bb6ff,#006ad1,#389dff)}.button-Me{color:#5975da;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-color:#2f52d1}.button-Me:hover{color:#6e86df;border-color:#8398e3}.textarea-Me{color:#5975da}.window-Me{background-color:#5975da}.shine-Me{background:radial-gradient(circle,#6e86df,#2a4abc,#98a9e8,#2a4abc,#6e86df)}.button-Med{color:#57b8f0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-color:#28a4ec}.button-Med:hover{color:#6ec2f2;border-color:#86ccf4}.textarea-Med{color:#57b8f0}.window-Med{background-color:#57b8f0}.shine-Med{background:radial-gradient(circle,#6ec2f2,#1599e6,#9dd6f6,#1599e6,#6ec2f2)}.button-OOC{color:#cca300;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-color:#997a00}.button-OOC:hover{color:#e6b700;border-color:#fc0}.textarea-OOC{color:#cca300}.window-OOC{background-color:#cca300}.shine-OOC{background:radial-gradient(circle,#e6b700,#806600,#ffd11a,#806600,#e6b700)}.button-Ent{color:#5c8a87;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-color:#486b69}.button-Ent:hover{color:#669996;border-color:#76a3a0}.textarea-Ent{color:#5c8a87}.window-Ent{background-color:#5c8a87}.shine-Ent{background:radial-gradient(circle,#669996,#3d5c5a,#85aeab,#3d5c5a,#669996)}.button-Radio{color:#1ecc43;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-color:#17a034}.button-Radio:hover{color:#25df4c;border-color:#3be25f}.textarea-Radio{color:#1ecc43}.window-Radio{background-color:#1ecc43}.shine-Radio{background:radial-gradient(circle,#25df4c,#14892d,#51e571,#14892d,#25df4c)}.button-Say{color:#a4bad6;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-color:#819fc6}.button-Say:hover{color:#b6c7de;border-color:#c7d5e6}.textarea-Say{color:#a4bad6}.window-Say{background-color:#a4bad6}.shine-Say{background:radial-gradient(circle,#b6c7de,#6f92be,#d9e2ee,#6f92be,#b6c7de)}.button-Sci{color:#c68cfa;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-color:#ae5bf8}.button-Sci:hover{color:#d2a5fb;border-color:#debdfc}.textarea-Sci{color:#c68cfa}.window-Sci{background-color:#c68cfa}.shine-Sci{background:radial-gradient(circle,#d2a5fb,#a243f7,#ead5fd,#a243f7,#d2a5fb)}.button-Sec{color:#dd3535;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-color:#bf2020}.button-Sec:hover{color:#e14b4b;border-color:#e46161}.textarea-Sec{color:#dd3535}.window-Sec{background-color:#dd3535}.shine-Sec{background:radial-gradient(circle,#e14b4b,#a91c1c,#e87676,#a91c1c,#e14b4b)}.button-Supp{color:#b88646;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-color:#936b38}.button-Supp:hover{color:#bf9258;border-color:#c79e6a}.textarea-Supp{color:#b88646}.window-Supp{background-color:#b88646}.shine-Supp{background:radial-gradient(circle,#bf9258,#815e31,#ceaa7d,#815e31,#bf9258)}.button-Svc{color:#6ca729;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-color:#527e1f}.button-Svc:hover{color:#79bc2e;border-color:#86ce36}.textarea-Svc{color:#6ca729}.window-Svc{background-color:#6ca729}.shine-Svc{background:radial-gradient(circle,#79bc2e,#446a1a,#93d34a,#446a1a,#79bc2e)}.button-Synd{color:#8f4a4b;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-color:#6d3939}.button-Synd:hover{color:#a05354;border-color:#ac5f61}.textarea-Synd{color:#8f4a4b}.window-Synd{background-color:#8f4a4b}.shine-Synd{background:radial-gradient(circle,#a05354,#5c3030,#b57071,#5c3030,#a05354)} \ No newline at end of file diff --git a/tgui/public/tgui-say.bundle.js b/tgui/public/tgui-say.bundle.js new file mode 100644 index 000000000000..ff30d3338dc8 --- /dev/null +++ b/tgui/public/tgui-say.bundle.js @@ -0,0 +1 @@ +(()=>{"use strict";var e={3579:function(e,n,t){function r(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}var l,a=t(1171),o=t(2778),i=t(9807);function u(e){var n="https://react.dev/errors/"+e;if(1F||(e.current=R[F],R[F]=null,F--)}function U(e,n){R[++F]=e.current,e.current=n}var H=I(null),B=I(null),$=I(null),V=I(null);function W(e,n){switch(U($,n),U(B,e),U(H,null),n.nodeType){case 9:case 11:e=(e=n.documentElement)&&(e=e.namespaceURI)?so(e):0;break;default:if(e=n.tagName,n=n.namespaceURI)e=si(n=so(n),e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}j(H),U(H,e)}function Q(){j(H),j(B),j($)}function q(e){null!==e.memoizedState&&U(V,e);var n=H.current,t=si(n,e.type);n!==t&&(U(B,e),U(H,t))}function K(e){B.current===e&&(j(H),j(B)),V.current===e&&(j(V),sX._currentValue=D)}var Y=Object.prototype.hasOwnProperty,X=a.unstable_scheduleCallback,G=a.unstable_cancelCallback,J=a.unstable_shouldYield,Z=a.unstable_requestPaint,ee=a.unstable_now,en=a.unstable_getCurrentPriorityLevel,et=a.unstable_ImmediatePriority,er=a.unstable_UserBlockingPriority,el=a.unstable_NormalPriority,ea=a.unstable_LowPriority,eo=a.unstable_IdlePriority,ei=a.log,eu=a.unstable_setDisableYieldValue,es=null,ec=null;function ef(e){if("function"==typeof ei&&eu(e),ec&&"function"==typeof ec.setStrictMode)try{ec.setStrictMode(es,e)}catch(e){}}var ed=Math.clz32?Math.clz32:function(e){return 0==(e>>>=0)?32:31-(ep(e)/eh|0)|0},ep=Math.log,eh=Math.LN2,em=256,eg=4194304;function ev(e){var n=42&e;if(0!==n)return n;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194048&e;case 4194304:case 8388608:case 0x1000000:case 0x2000000:return 0x3c00000&e;case 0x4000000:return 0x4000000;case 0x8000000:return 0x8000000;case 0x10000000:return 0x10000000;case 0x20000000:return 0x20000000;case 0x40000000:return 0;default:return e}}function ey(e,n,t){var r=e.pendingLanes;if(0===r)return 0;var l=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var i=0x7ffffff&r;return 0!==i?0!=(r=i&~a)?l=ev(r):0!=(o&=i)?l=ev(o):t||0!=(t=i&~e)&&(l=ev(t)):0!=(i=r&~a)?l=ev(i):0!==o?l=ev(o):t||0!=(t=r&~e)&&(l=ev(t)),0===l?0:0!==n&&n!==l&&0==(n&a)&&((a=l&-l)>=(t=n&-n)||32===a&&0!=(4194048&t))?n:l}function eb(e,n){return 0==(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&n)}function ek(){var e=em;return 0==(4194048&(em<<=1))&&(em=256),e}function ew(){var e=eg;return 0==(0x3c00000&(eg<<=1))&&(eg=4194304),e}function eS(e){for(var n=[],t=0;31>t;t++)n.push(e);return n}function ex(e,n){e.pendingLanes|=n,0x10000000!==n&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function eE(e,n,t){e.pendingLanes|=n,e.suspendedLanes&=~n;var r=31-ed(n);e.entangledLanes|=n,e.entanglements[r]=0x40000000|e.entanglements[r]|4194090&t}function eC(e,n){var t=e.entangledLanes|=n;for(e=e.entanglements;t;){var r=31-ed(t),l=1<)":-1a||s[l]!==c[a]){var f="\n"+s[l].replace(" at new "," at ");return e.displayName&&f.includes("")&&(f=f.replace("",e.displayName)),f}while(1<=l&&0<=a);break}}}finally{e1=!1,Error.prepareStackTrace=t}return(t=e?e.displayName||e.name:"")?e0(t):""}function e3(e){try{var n="";do n+=function(e){switch(e.tag){case 26:case 27:case 5:return e0(e.type);case 16:return e0("Lazy");case 13:return e0("Suspense");case 19:return e0("SuspenseList");case 0:case 15:return e2(e.type,!1);case 11:return e2(e.type.render,!1);case 1:return e2(e.type,!0);case 31:return e0("Activity");default:return""}}(e),e=e.return;while(e);return n}catch(e){return"\nError generating stack: "+e.message+"\n"+e.stack}}function e4(e){switch(void 0===e?"undefined":r(e)){case"bigint":case"boolean":case"number":case"string":case"undefined":case"object":return e;default:return""}}function e8(e){var n=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===n||"radio"===n)}function e6(e){e._valueTracker||(e._valueTracker=function(e){var n=e8(e)?"checked":"value",t=Object.getOwnPropertyDescriptor(e.constructor.prototype,n),r=""+e[n];if(!e.hasOwnProperty(n)&&void 0!==t&&"function"==typeof t.get&&"function"==typeof t.set){var l=t.get,a=t.set;return Object.defineProperty(e,n,{configurable:!0,get:function(){return l.call(this)},set:function(e){r=""+e,a.call(this,e)}}),Object.defineProperty(e,n,{enumerable:t.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[n]}}}}(e))}function e5(e){if(!e)return!1;var n=e._valueTracker;if(!n)return!0;var t=n.getValue(),r="";return e&&(r=e8(e)?e.checked?"true":"false":e.value),(e=r)!==t&&(n.setValue(e),!0)}function e9(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(n){return e.body}}var e7=/[\n"\\]/g;function ne(e){return e.replace(e7,function(e){return"\\"+e.charCodeAt(0).toString(16)+" "})}function nn(e,n,t,l,a,o,i,u){e.name="",null!=i&&"function"!=typeof i&&"symbol"!==(void 0===i?"undefined":r(i))&&"boolean"!=typeof i?e.type=i:e.removeAttribute("type"),null!=n?"number"===i?(0===n&&""===e.value||e.value!=n)&&(e.value=""+e4(n)):e.value!==""+e4(n)&&(e.value=""+e4(n)):"submit"!==i&&"reset"!==i||e.removeAttribute("value"),null!=n?nr(e,i,e4(n)):null!=t?nr(e,i,e4(t)):null!=l&&e.removeAttribute("value"),null==a&&null!=o&&(e.defaultChecked=!!o),null!=a&&(e.checked=a&&"function"!=typeof a&&"symbol"!==(void 0===a?"undefined":r(a))),null!=u&&"function"!=typeof u&&"symbol"!==(void 0===u?"undefined":r(u))&&"boolean"!=typeof u?e.name=""+e4(u):e.removeAttribute("name")}function nt(e,n,t,l,a,o,i,u){if(null!=o&&"function"!=typeof o&&"symbol"!==(void 0===o?"undefined":r(o))&&"boolean"!=typeof o&&(e.type=o),null!=n||null!=t){if(("submit"===o||"reset"===o)&&null==n)return;t=null!=t?""+e4(t):"",n=null!=n?""+e4(n):t,u||n===e.value||(e.value=n),e.defaultValue=n}l="function"!=typeof(l=null!=l?l:a)&&"symbol"!==(void 0===l?"undefined":r(l))&&!!l,e.checked=u?e.checked:!!l,e.defaultChecked=!!l,null!=i&&"function"!=typeof i&&"symbol"!==(void 0===i?"undefined":r(i))&&"boolean"!=typeof i&&(e.name=i)}function nr(e,n,t){"number"===n&&e9(e.ownerDocument)===e||e.defaultValue===""+t||(e.defaultValue=""+t)}function nl(e,n,t,r){if(e=e.options,n){n={};for(var l=0;l=n7),tt=!1;function tr(e,n){switch(e){case"keyup":return -1!==n5.indexOf(n.keyCode);case"keydown":return 229!==n.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function tl(e){return"object"===(void 0===(e=e.detail)?"undefined":r(e))&&"data"in e?e.data:null}var ta=!1,to={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function ti(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===n?!!to[e.type]:"textarea"===n}function tu(e,n,t,r){nv?ny?ny.push(r):ny=[r]:nv=r,0<(n=u2(n,"onChange")).length&&(t=new nU("onChange","change",null,t,r),e.push({event:t,listeners:n}))}var ts=null,tc=null;function tf(e){uK(e,0)}function td(e){if(e5(eH(e)))return e}function tp(e,n){if("change"===e)return n}var th=!1;if(nx){if(nx){var tm="oninput"in document;if(!tm){var tg=document.createElement("div");tg.setAttribute("oninput","return;"),tm="function"==typeof tg.oninput}l=tm}else l=!1;th=l&&(!document.documentMode||9=n)return{node:r,offset:n-e};e=t}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=tC(r)}}function t_(e){var n,t;e=null!=e&&null!=e.ownerDocument&&null!=e.ownerDocument.defaultView?e.ownerDocument.defaultView:window;for(var r=e9(e.document);n=r,null!=(t=e.HTMLIFrameElement)&&"undefined"!=typeof Symbol&&t[Symbol.hasInstance]?!!t[Symbol.hasInstance](n):n instanceof t;){try{var l="string"==typeof r.contentWindow.location.href}catch(e){l=!1}if(l)e=r.contentWindow;else break;r=e9(e.document)}return r}function tz(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return n&&("input"===n&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===n||"true"===e.contentEditable)}var tN=nx&&"documentMode"in document&&11>=document.documentMode,tT=null,tL=null,tA=null,tO=!1;function tM(e,n,t){var r=t.window===t?t.document:9===t.nodeType?t:t.ownerDocument;tO||null==tT||tT!==e9(r)||(r="selectionStart"in(r=tT)&&tz(r)?{start:r.selectionStart,end:r.selectionEnd}:{anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},tA&&tE(tA,r)||(tA=r,0<(r=u2(tL,"onSelect")).length&&(n=new nU("onSelect","select",null,n,t),e.push({event:n,listeners:r}),n.target=tT)))}function tD(e,n){var t={};return t[e.toLowerCase()]=n.toLowerCase(),t["Webkit"+e]="webkit"+n,t["Moz"+e]="moz"+n,t}var tR={animationend:tD("Animation","AnimationEnd"),animationiteration:tD("Animation","AnimationIteration"),animationstart:tD("Animation","AnimationStart"),transitionrun:tD("Transition","TransitionRun"),transitionstart:tD("Transition","TransitionStart"),transitioncancel:tD("Transition","TransitionCancel"),transitionend:tD("Transition","TransitionEnd")},tF={},tI={};function tj(e){if(tF[e])return tF[e];if(!tR[e])return e;var n,t=tR[e];for(n in t)if(t.hasOwnProperty(n)&&n in tI)return tF[e]=t[n];return e}nx&&(tI=document.createElement("div").style,"AnimationEvent"in window||(delete tR.animationend.animation,delete tR.animationiteration.animation,delete tR.animationstart.animation),"TransitionEvent"in window||delete tR.transitionend.transition);var tU=tj("animationend"),tH=tj("animationiteration"),tB=tj("animationstart"),t$=tj("transitionrun"),tV=tj("transitionstart"),tW=tj("transitioncancel"),tQ=tj("transitionend"),tq=new Map,tK="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function tY(e,n){tq.set(e,n),eQ(n,[e])}tK.push("scrollEnd");var tX=new WeakMap;function tG(e,n){if("object"===(void 0===e?"undefined":r(e))&&null!==e){var t=tX.get(e);return void 0!==t?t:(n={value:e,source:n,stack:e3(n)},tX.set(e,n),n)}return{value:e,source:n,stack:e3(n)}}var tJ=[],tZ=0,t0=0;function t1(){for(var e=tZ,n=t0=tZ=0;n>=o,l-=o,rh=1<<32-ed(n)+l|t<o?o:8;var i=O.T,u={};O.T=u,aj(e,!1,n,t);try{var s=a(),c=O.S;if(null!==c&&c(u,s),null!==s&&"object"===(void 0===s?"undefined":r(s))&&"function"==typeof s.then){var f,d,p=(f=[],d={status:"pending",value:null,reason:null,then:function(e){f.push(e)}},s.then(function(){d.status="fulfilled",d.value=l;for(var e=0;ed?(h=f,f=null):h=f.sibling;var m=v(r,f,i[d],u);if(null===m){null===f&&(f=h);break}e&&f&&null===m.alternate&&n(r,f),a=o(m,a,d),null===c?s=m:c.sibling=m,c=m,f=h}if(d===i.length)return t(r,f),rS&&rg(r,d),s;if(null===f){for(;dh?(m=d,d=null):m=d.sibling;var b=v(r,d,g.value,s);if(null===b){null===d&&(d=m);break}e&&d&&null===b.alternate&&n(r,d),a=o(b,a,h),null===f?c=b:f.sibling=b,f=b,d=m}if(g.done)return t(r,d),rS&&rg(r,h),c;if(null===d){for(;!g.done;h++,g=i.next())null!==(g=p(r,g.value,s))&&(a=o(g,a,h),null===f?c=g:f.sibling=g,f=g);return rS&&rg(r,h),c}for(d=l(d);!g.done;h++,g=i.next())null!==(g=y(d,r,h,g.value,s))&&(e&&null!==g.alternate&&d.delete(null===g.key?h:g.key),a=o(g,a,h),null===f?c=g:f.sibling=g,f=g);return e&&d.forEach(function(e){return n(r,e)}),rS&&rg(r,h),c}(c,f,d=k.call(d),b)}if("function"==typeof d.then)return s(c,f,aY(d),b);if(d.$$typeof===w)return s(c,f,rV(c,d),b);aG(c,d)}return"string"==typeof d&&""!==d||"number"==typeof d||"bigint"===(void 0===d?"undefined":r(d))?(d=""+d,null!==f&&6===f.tag?(t(c,f.sibling),(b=a(f,d)).return=c):(t(c,f),(b=ra(d,c.mode,b)).return=c),i(c=b)):t(c,f)}(s,c,f,d);return aq=null,b}catch(e){if(e===r9||e===le)throw e;var k=t7(29,e,null,s.mode);return k.lanes=d,k.return=s,k}finally{}}}var a0=aZ(!0),a1=aZ(!1),a2=I(null),a3=null;function a4(e){var n=e.alternate;U(a9,1&a9.current),U(a2,e),null===a3&&(null===n||null!==lk.current?a3=e:null!==n.memoizedState&&(a3=e))}function a8(e){if(22===e.tag){if(U(a9,a9.current),U(a2,e),null===a3){var n=e.alternate;null!==n&&null!==n.memoizedState&&(a3=e)}}else a6(e)}function a6(){U(a9,a9.current),U(a2,a2.current)}function a5(e){j(a2),a3===e&&(a3=null),j(a9)}var a9=I(0);function a7(e){for(var n=e;null!==n;){if(13===n.tag){var t=n.memoizedState;if(null!==t&&(null===(t=t.dehydrated)||"$?"===t.data||sy(t)))return n}else if(19===n.tag&&void 0!==n.memoizedProps.revealOrder){if(0!=(128&n.flags))return n}else if(null!==n.child){n.child.return=n,n=n.child;continue}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return null;n=n.return}n.sibling.return=n.return,n=n.sibling}return null}function oe(e,n,t,r){t=null==(t=t(r,n=e.memoizedState))?n:d({},n,t),e.memoizedState=t,0===e.lanes&&(e.updateQueue.baseState=t)}var on={enqueueSetState:function(e,n,t){e=e._reactInternals;var r=i8(),l=lf(r);l.payload=n,null!=t&&(l.callback=t),null!==(n=ld(e,l,r))&&(i5(n,e,r),lp(n,e,r))},enqueueReplaceState:function(e,n,t){e=e._reactInternals;var r=i8(),l=lf(r);l.tag=1,l.payload=n,null!=t&&(l.callback=t),null!==(n=ld(e,l,r))&&(i5(n,e,r),lp(n,e,r))},enqueueForceUpdate:function(e,n){e=e._reactInternals;var t=i8(),r=lf(t);r.tag=2,null!=n&&(r.callback=n),null!==(n=ld(e,r,t))&&(i5(n,e,t),lp(n,e,t))}};function ot(e,n,t,r,l,a,o){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,a,o):!n.prototype||!n.prototype.isPureReactComponent||!tE(t,r)||!tE(l,a)}function or(e,n,t,r){e=n.state,"function"==typeof n.componentWillReceiveProps&&n.componentWillReceiveProps(t,r),"function"==typeof n.UNSAFE_componentWillReceiveProps&&n.UNSAFE_componentWillReceiveProps(t,r),n.state!==e&&on.enqueueReplaceState(n,n.state,null)}function ol(e,n){var t=n;if("ref"in n)for(var r in t={},n)"ref"!==r&&(t[r]=n[r]);if(e=e.defaultProps)for(var l in t===n&&(t=d({},t)),e)void 0===t[l]&&(t[l]=e[l]);return t}var oa="function"==typeof reportError?reportError:function(e){if("object"===("undefined"==typeof window?"undefined":r(window))&&"function"==typeof window.ErrorEvent){var n=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"===(void 0===e?"undefined":r(e))&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(n))return}else if("object"===("undefined"==typeof process?"undefined":r(process))&&"function"==typeof process.emit)return void process.emit("uncaughtException",e);console.error(e)};function oo(e){oa(e)}function oi(e){console.error(e)}function ou(e){oa(e)}function os(e,n){try{(0,e.onUncaughtError)(n.value,{componentStack:n.stack})}catch(e){setTimeout(function(){throw e})}}function oc(e,n,t){try{(0,e.onCaughtError)(t.value,{componentStack:t.stack,errorBoundary:1===n.tag?n.stateNode:null})}catch(e){setTimeout(function(){throw e})}}function of(e,n,t){return(t=lf(t)).tag=3,t.payload={element:null},t.callback=function(){os(e,n)},t}function od(e){return(e=lf(e)).tag=3,e}function op(e,n,t,r){var l=t.type.getDerivedStateFromError;if("function"==typeof l){var a=r.value;e.payload=function(){return l(a)},e.callback=function(){oc(n,t,r)}}var o=t.stateNode;null!==o&&"function"==typeof o.componentDidCatch&&(e.callback=function(){oc(n,t,r),"function"!=typeof l&&(null===iY?iY=new Set([this]):iY.add(this));var e=r.stack;this.componentDidCatch(r.value,{componentStack:null!==e?e:""})})}var oh=Error(u(461)),om=!1;function og(e,n,t,r){n.child=null===e?a1(n,null,t,r):a0(n,e.child,t,r)}function ov(e,n,t,r,l){t=t.render;var a=n.ref;if("ref"in r){var o={};for(var i in r)"ref"!==i&&(o[i]=r[i])}else o=r;return(rB(n),r=lI(e,n,t,o,a,l),i=lB(),null===e||om)?(rS&&i&&ry(n),n.flags|=1,og(e,n,r,l),n.child):(l$(e,n,l),oF(e,n,l))}function oy(e,n,t,r,l){if(null===e){var a=t.type;return"function"!=typeof a||re(a)||void 0!==a.defaultProps||null!==t.compare?((e=rr(t.type,null,r,n,n.mode,l)).ref=n.ref,e.return=n,n.child=e):(n.tag=15,n.type=a,ob(e,n,a,r,l))}if(a=e.child,!oI(e,l)){var o=a.memoizedProps;if((t=null!==(t=t.compare)?t:tE)(o,r)&&e.ref===n.ref)return oF(e,n,l)}return n.flags|=1,(e=rn(a,r)).ref=n.ref,e.return=n,n.child=e}function ob(e,n,t,r,l){if(null!==e){var a=e.memoizedProps;if(tE(a,r)&&e.ref===n.ref)if(om=!1,n.pendingProps=r=a,!oI(e,l))return n.lanes=e.lanes,oF(e,n,l);else 0!=(131072&e.flags)&&(om=!0)}return ox(e,n,t,r,l)}function ok(e,n,t){var r=n.pendingProps,l=r.children,a=null!==e?e.memoizedState:null;if("hidden"===r.mode){if(0!=(128&n.flags)){if(r=null!==a?a.baseLanes|t:t,null!==e){for(a=0,l=n.child=e.child;null!==l;)a=a|l.lanes|l.childLanes,l=l.sibling;n.childLanes=a&~r}else n.childLanes=0,n.child=null;return ow(e,n,r,t)}if(0==(0x20000000&t))return n.lanes=n.childLanes=0x20000000,ow(e,n,null!==a?a.baseLanes|t:t,t);n.memoizedState={baseLanes:0,cachePool:null},null!==e&&r6(n,null!==a?a.cachePool:null),null!==a?lS(n,a):lx(),a8(n)}else null!==a?(r6(n,a.cachePool),lS(n,a),a6(n),n.memoizedState=null):(null!==e&&r6(n,null),lx(),a6(n));return og(e,n,l,t),n.child}function ow(e,n,t,r){var l=r8();return n.memoizedState={baseLanes:t,cachePool:l=null===l?null:{parent:rY._currentValue,pool:l}},null!==e&&r6(n,null),lx(),a8(n),null!==e&&rU(e,n,r,!0),null}function oS(e,n){var t=n.ref;if(null===t)null!==e&&null!==e.ref&&(n.flags|=4194816);else{if("function"!=typeof t&&"object"!==(void 0===t?"undefined":r(t)))throw Error(u(284));(null===e||e.ref!==t)&&(n.flags|=4194816)}}function ox(e,n,t,r,l){return(rB(n),t=lI(e,n,t,r,void 0,l),r=lB(),null===e||om)?(rS&&r&&ry(n),n.flags|=1,og(e,n,t,l),n.child):(l$(e,n,l),oF(e,n,l))}function oE(e,n,t,r,l,a){return(rB(n),n.updateQueue=null,t=lU(n,r,t,l),lj(e),r=lB(),null===e||om)?(rS&&r&&ry(n),n.flags|=1,og(e,n,t,a),n.child):(l$(e,n,a),oF(e,n,a))}function oC(e,n,t,l,a){if(rB(n),null===n.stateNode){var o=t5,i=t.contextType;"object"===(void 0===i?"undefined":r(i))&&null!==i&&(o=r$(i)),n.memoizedState=null!==(o=new t(l,o)).state&&void 0!==o.state?o.state:null,o.updater=on,n.stateNode=o,o._reactInternals=n,(o=n.stateNode).props=l,o.state=n.memoizedState,o.refs={},ls(n),i=t.contextType,o.context="object"===(void 0===i?"undefined":r(i))&&null!==i?r$(i):t5,o.state=n.memoizedState,"function"==typeof(i=t.getDerivedStateFromProps)&&(oe(n,t,i,l),o.state=n.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof o.getSnapshotBeforeUpdate||"function"!=typeof o.UNSAFE_componentWillMount&&"function"!=typeof o.componentWillMount||(i=o.state,"function"==typeof o.componentWillMount&&o.componentWillMount(),"function"==typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount(),i!==o.state&&on.enqueueReplaceState(o,o.state,null),lv(n,l,o,a),lg(),o.state=n.memoizedState),"function"==typeof o.componentDidMount&&(n.flags|=4194308),l=!0}else if(null===e){o=n.stateNode;var u=n.memoizedProps,s=ol(t,u);o.props=s;var c=o.context,f=t.contextType;i=t5,"object"===(void 0===f?"undefined":r(f))&&null!==f&&(i=r$(f));var d=t.getDerivedStateFromProps;f="function"==typeof d||"function"==typeof o.getSnapshotBeforeUpdate,u=n.pendingProps!==u,f||"function"!=typeof o.UNSAFE_componentWillReceiveProps&&"function"!=typeof o.componentWillReceiveProps||(u||c!==i)&&or(n,o,l,i),lu=!1;var p=n.memoizedState;o.state=p,lv(n,l,o,a),lg(),c=n.memoizedState,u||p!==c||lu?("function"==typeof d&&(oe(n,t,d,l),c=n.memoizedState),(s=lu||ot(n,t,s,l,p,c,i))?(f||"function"!=typeof o.UNSAFE_componentWillMount&&"function"!=typeof o.componentWillMount||("function"==typeof o.componentWillMount&&o.componentWillMount(),"function"==typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount()),"function"==typeof o.componentDidMount&&(n.flags|=4194308)):("function"==typeof o.componentDidMount&&(n.flags|=4194308),n.memoizedProps=l,n.memoizedState=c),o.props=l,o.state=c,o.context=i,l=s):("function"==typeof o.componentDidMount&&(n.flags|=4194308),l=!1)}else{o=n.stateNode,lc(e,n),f=ol(t,i=n.memoizedProps),o.props=f,d=n.pendingProps,p=o.context,c=t.contextType,s=t5,"object"===(void 0===c?"undefined":r(c))&&null!==c&&(s=r$(c)),(c="function"==typeof(u=t.getDerivedStateFromProps)||"function"==typeof o.getSnapshotBeforeUpdate)||"function"!=typeof o.UNSAFE_componentWillReceiveProps&&"function"!=typeof o.componentWillReceiveProps||(i!==d||p!==s)&&or(n,o,l,s),lu=!1,p=n.memoizedState,o.state=p,lv(n,l,o,a),lg();var h=n.memoizedState;i!==d||p!==h||lu||null!==e&&null!==e.dependencies&&rH(e.dependencies)?("function"==typeof u&&(oe(n,t,u,l),h=n.memoizedState),(f=lu||ot(n,t,f,l,p,h,s)||null!==e&&null!==e.dependencies&&rH(e.dependencies))?(c||"function"!=typeof o.UNSAFE_componentWillUpdate&&"function"!=typeof o.componentWillUpdate||("function"==typeof o.componentWillUpdate&&o.componentWillUpdate(l,h,s),"function"==typeof o.UNSAFE_componentWillUpdate&&o.UNSAFE_componentWillUpdate(l,h,s)),"function"==typeof o.componentDidUpdate&&(n.flags|=4),"function"==typeof o.getSnapshotBeforeUpdate&&(n.flags|=1024)):("function"!=typeof o.componentDidUpdate||i===e.memoizedProps&&p===e.memoizedState||(n.flags|=4),"function"!=typeof o.getSnapshotBeforeUpdate||i===e.memoizedProps&&p===e.memoizedState||(n.flags|=1024),n.memoizedProps=l,n.memoizedState=h),o.props=l,o.state=h,o.context=s,l=f):("function"!=typeof o.componentDidUpdate||i===e.memoizedProps&&p===e.memoizedState||(n.flags|=4),"function"!=typeof o.getSnapshotBeforeUpdate||i===e.memoizedProps&&p===e.memoizedState||(n.flags|=1024),l=!1)}return o=l,oS(e,n),l=0!=(128&n.flags),o||l?(o=n.stateNode,t=l&&"function"!=typeof t.getDerivedStateFromError?null:o.render(),n.flags|=1,null!==e&&l?(n.child=a0(n,e.child,null,a),n.child=a0(n,null,t,a)):og(e,n,t,a),n.memoizedState=o.state,e=n.child):e=oF(e,n,a),e}function oP(e,n,t,r){return rT(),n.flags|=256,og(e,n,t,r),n.child}var o_={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function oz(e){return{baseLanes:e,cachePool:r5()}}function oN(e,n,t){return e=null!==e?e.childLanes&~t:0,n&&(e|=iH),e}function oT(e,n,t){var r,l=n.pendingProps,a=!1,o=0!=(128&n.flags);if((r=o)||(r=(null===e||null!==e.memoizedState)&&0!=(2&a9.current)),r&&(a=!0,n.flags&=-129),r=0!=(32&n.flags),n.flags&=-33,null===e){if(rS){if(a?a4(n):a6(n),rS){var i,s=rw;if(i=s){t:{for(i=s,s=rE;8!==i.nodeType;)if(!s||null===(i=sb(i.nextSibling))){s=null;break t}s=i}null!==s?(n.memoizedState={dehydrated:s,treeContext:null!==rp?{id:rh,overflow:rm}:null,retryLane:0x20000000,hydrationErrors:null},(i=t7(18,null,null,0)).stateNode=s,i.return=n,n.child=i,rk=n,rw=null,i=!0):i=!1}i||rP(n)}if(null!==(s=n.memoizedState)&&null!==(s=s.dehydrated))return sy(s)?n.lanes=32:n.lanes=0x20000000,null;a5(n)}return(s=l.children,l=l.fallback,a)?(a6(n),s=oA({mode:"hidden",children:s},a=n.mode),l=rl(l,a,t,null),s.return=n,l.return=n,s.sibling=l,n.child=s,(a=n.child).memoizedState=oz(t),a.childLanes=oN(e,r,t),n.memoizedState=o_,l):(a4(n),oL(n,s))}if(null!==(i=e.memoizedState)&&null!==(s=i.dehydrated)){if(o)256&n.flags?(a4(n),n.flags&=-257,n=oO(e,n,t)):null!==n.memoizedState?(a6(n),n.child=e.child,n.flags|=128,n=null):(a6(n),a=l.fallback,s=n.mode,l=oA({mode:"visible",children:l.children},s),a=rl(a,s,t,null),a.flags|=2,l.return=n,a.return=n,l.sibling=a,n.child=l,a0(n,e.child,null,t),(l=n.child).memoizedState=oz(t),l.childLanes=oN(e,r,t),n.memoizedState=o_,n=a);else if(a4(n),sy(s)){if(r=s.nextSibling&&s.nextSibling.dataset)var c=r.dgst;r=c,(l=Error(u(419))).stack="",l.digest=r,rA({value:l,source:null,stack:null}),n=oO(e,n,t)}else if(om||rU(e,n,t,!1),r=0!=(t&e.childLanes),om||r){if(null!==(r=iz)&&0!==(l=0!=((l=0!=(42&(l=t&-t))?1:eP(l))&(r.suspendedLanes|t))?0:l)&&l!==i.retryLane)throw i.retryLane=l,t4(e,l),i5(r,e,l),oh;"$?"===s.data||ui(),n=oO(e,n,t)}else"$?"===s.data?(n.flags|=192,n.child=e.child,n=null):(e=i.treeContext,rw=sb(s.nextSibling),rk=n,rS=!0,rx=null,rE=!1,null!==e&&(rf[rd++]=rh,rf[rd++]=rm,rf[rd++]=rp,rh=e.id,rm=e.overflow,rp=n),n=oL(n,l.children),n.flags|=4096);return n}return a?(a6(n),a=l.fallback,s=n.mode,c=(i=e.child).sibling,(l=rn(i,{mode:"hidden",children:l.children})).subtreeFlags=0x3e00000&i.subtreeFlags,null!==c?a=rn(c,a):(a=rl(a,s,t,null),a.flags|=2),a.return=n,l.return=n,l.sibling=a,n.child=l,l=a,a=n.child,null===(s=e.child.memoizedState)?s=oz(t):(null!==(i=s.cachePool)?(c=rY._currentValue,i=i.parent!==c?{parent:c,pool:c}:i):i=r5(),s={baseLanes:s.baseLanes|t,cachePool:i}),a.memoizedState=s,a.childLanes=oN(e,r,t),n.memoizedState=o_,l):(a4(n),e=(t=e.child).sibling,(t=rn(t,{mode:"visible",children:l.children})).return=n,t.sibling=null,null!==e&&(null===(r=n.deletions)?(n.deletions=[e],n.flags|=16):r.push(e)),n.child=t,n.memoizedState=null,t)}function oL(e,n){return(n=oA({mode:"visible",children:n},e.mode)).return=e,e.child=n}function oA(e,n){return(e=t7(22,e,null,n)).lanes=0,e.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null},e}function oO(e,n,t){return a0(n,e.child,null,t),e=oL(n,n.pendingProps.children),e.flags|=2,n.memoizedState=null,e}function oM(e,n,t){e.lanes|=n;var r=e.alternate;null!==r&&(r.lanes|=n),rI(e.return,n,t)}function oD(e,n,t,r,l){var a=e.memoizedState;null===a?e.memoizedState={isBackwards:n,rendering:null,renderingStartTime:0,last:r,tail:t,tailMode:l}:(a.isBackwards=n,a.rendering=null,a.renderingStartTime=0,a.last=r,a.tail=t,a.tailMode=l)}function oR(e,n,t){var r=n.pendingProps,l=r.revealOrder,a=r.tail;if(og(e,n,r.children,t),0!=(2&(r=a9.current)))r=1&r|2,n.flags|=128;else{if(null!==e&&0!=(128&e.flags))e:for(e=n.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&oM(e,t,n);else if(19===e.tag)oM(e,t,n);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===n)break;for(;null===e.sibling;){if(null===e.return||e.return===n)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}switch(U(a9,r),l){case"forwards":for(l=null,t=n.child;null!==t;)null!==(e=t.alternate)&&null===a7(e)&&(l=t),t=t.sibling;null===(t=l)?(l=n.child,n.child=null):(l=t.sibling,t.sibling=null),oD(n,!1,l,t,a);break;case"backwards":for(t=null,l=n.child,n.child=null;null!==l;){if(null!==(e=l.alternate)&&null===a7(e)){n.child=l;break}e=l.sibling,l.sibling=t,t=l,l=e}oD(n,!0,t,null,a);break;case"together":oD(n,!1,null,null,void 0);break;default:n.memoizedState=null}return n.child}function oF(e,n,t){if(null!==e&&(n.dependencies=e.dependencies),iI|=n.lanes,0==(t&n.childLanes)){if(null===e)return null;else if(rU(e,n,t,!1),0==(t&n.childLanes))return null}if(null!==e&&n.child!==e.child)throw Error(u(153));if(null!==n.child){for(t=rn(e=n.child,e.pendingProps),n.child=t,t.return=n;null!==e.sibling;)e=e.sibling,(t=t.sibling=rn(e,e.pendingProps)).return=n;t.sibling=null}return n.child}function oI(e,n){return 0!=(e.lanes&n)||!!(null!==(e=e.dependencies)&&rH(e))}function oj(e,n,t){if(null!==e)if(e.memoizedProps!==n.pendingProps)om=!0;else{if(!oI(e,t)&&0==(128&n.flags))return om=!1,function(e,n,t){switch(n.tag){case 3:W(n,n.stateNode.containerInfo),rR(n,rY,e.memoizedState.cache),rT();break;case 27:case 5:q(n);break;case 4:W(n,n.stateNode.containerInfo);break;case 10:rR(n,n.type,n.memoizedProps.value);break;case 13:var r=n.memoizedState;if(null!==r){if(null!==r.dehydrated)return a4(n),n.flags|=128,null;if(0!=(t&n.child.childLanes))return oT(e,n,t);return a4(n),null!==(e=oF(e,n,t))?e.sibling:null}a4(n);break;case 19:var l=0!=(128&e.flags);if((r=0!=(t&n.childLanes))||(rU(e,n,t,!1),r=0!=(t&n.childLanes)),l){if(r)return oR(e,n,t);n.flags|=128}if(null!==(l=n.memoizedState)&&(l.rendering=null,l.tail=null,l.lastEffect=null),U(a9,a9.current),!r)return null;break;case 22:case 23:return n.lanes=0,ok(e,n,t);case 24:rR(n,rY,e.memoizedState.cache)}return oF(e,n,t)}(e,n,t);om=0!=(131072&e.flags)}else om=!1,rS&&0!=(1048576&n.flags)&&rv(n,rc,n.index);switch(n.lanes=0,n.tag){case 16:e:{e=n.pendingProps;var l=n.elementType,a=l._init;if(l=a(l._payload),n.type=l,"function"==typeof l)re(l)?(e=ol(l,e),n.tag=1,n=oC(null,n,l,e,t)):(n.tag=0,n=ox(null,n,l,e,t));else{if(null!=l){if((a=l.$$typeof)===S){n.tag=11,n=ov(null,n,l,e,t);break e}else if(a===C){n.tag=14,n=oy(null,n,l,e,t);break e}}throw Error(u(306,n=function e(n){if(null==n)return null;if("function"==typeof n)return n.$$typeof===L?null:n.displayName||n.name||null;if("string"==typeof n)return n;switch(n){case g:return"Fragment";case y:return"Profiler";case v:return"StrictMode";case x:return"Suspense";case E:return"SuspenseList";case _:return"Activity"}if("object"===(void 0===n?"undefined":r(n)))switch(n.$$typeof){case m:return"Portal";case w:return(n.displayName||"Context")+".Provider";case k:return(n._context.displayName||"Context")+".Consumer";case S:var t=n.render;return(n=n.displayName)||(n=""!==(n=t.displayName||t.name||"")?"ForwardRef("+n+")":"ForwardRef"),n;case C:return null!==(t=n.displayName||null)?t:e(n.type)||"Memo";case P:t=n._payload,n=n._init;try{return e(n(t))}catch(e){}}return null}(l)||l,""))}}return n;case 0:return ox(e,n,n.type,n.pendingProps,t);case 1:return a=ol(l=n.type,n.pendingProps),oC(e,n,l,a,t);case 3:e:{if(W(n,n.stateNode.containerInfo),null===e)throw Error(u(387));l=n.pendingProps;var o=n.memoizedState;a=o.element,lc(e,n),lv(n,l,null,t);var i=n.memoizedState;if(rR(n,rY,l=i.cache),l!==o.cache&&rj(n,[rY],t,!0),lg(),l=i.element,o.isDehydrated)if(o={element:l,isDehydrated:!1,cache:i.cache},n.updateQueue.baseState=o,n.memoizedState=o,256&n.flags){n=oP(e,n,l,t);break e}else if(l!==a){rA(a=tG(Error(u(424)),n)),n=oP(e,n,l,t);break e}else for(rw=sb((e=9===(e=n.stateNode.containerInfo).nodeType?e.body:"HTML"===e.nodeName?e.ownerDocument.body:e).firstChild),rk=n,rS=!0,rx=null,rE=!0,t=a1(n,null,l,t),n.child=t;t;)t.flags=-3&t.flags|4096,t=t.sibling;else{if(rT(),l===a){n=oF(e,n,t);break e}og(e,n,l,t)}n=n.child}return n;case 26:return oS(e,n),null===e?(t=sT(n.type,null,n.pendingProps,null))?n.memoizedState=t:rS||(t=n.type,e=n.pendingProps,(l=sa($.current).createElement(t))[eT]=n,l[eL]=e,st(l,t,e),e$(l),n.stateNode=l):n.memoizedState=sT(n.type,e.memoizedProps,n.pendingProps,e.memoizedState),null;case 27:return q(n),null===e&&rS&&(l=n.stateNode=sS(n.type,n.pendingProps,$.current),rk=n,rE=!0,a=rw,sm(n.type)?(sk=a,rw=sb(l.firstChild)):rw=a),og(e,n,n.pendingProps.children,t),oS(e,n),null===e&&(n.flags|=4194304),n.child;case 5:return null===e&&rS&&((a=l=rw)&&(null!==(l=function(e,n,t,r){for(;1===e.nodeType;){if(e.nodeName.toLowerCase()!==n.toLowerCase()){if(!r&&("INPUT"!==e.nodeName||"hidden"!==e.type))break}else if(r){if(!e[eF])switch(n){case"meta":if(!e.hasAttribute("itemprop"))break;return e;case"link":if("stylesheet"===(l=e.getAttribute("rel"))&&e.hasAttribute("data-precedence")||l!==t.rel||e.getAttribute("href")!==(null==t.href||""===t.href?null:t.href)||e.getAttribute("crossorigin")!==(null==t.crossOrigin?null:t.crossOrigin)||e.getAttribute("title")!==(null==t.title?null:t.title))break;return e;case"style":if(e.hasAttribute("data-precedence"))break;return e;case"script":if(((l=e.getAttribute("src"))!==(null==t.src?null:t.src)||e.getAttribute("type")!==(null==t.type?null:t.type)||e.getAttribute("crossorigin")!==(null==t.crossOrigin?null:t.crossOrigin))&&l&&e.hasAttribute("async")&&!e.hasAttribute("itemprop"))break;return e;default:return e}}else{if("input"!==n||"hidden"!==e.type)return e;var l=null==t.name?null:""+t.name;if("hidden"===t.type&&e.getAttribute("name")===l)return e}if(null===(e=sb(e.nextSibling)))break}return null}(l,n.type,n.pendingProps,rE))?(n.stateNode=l,rk=n,rw=sb(l.firstChild),rE=!1,a=!0):a=!1),a||rP(n)),q(n),a=n.type,o=n.pendingProps,i=null!==e?e.memoizedProps:null,l=o.children,su(a,o)?l=null:null!==i&&su(a,i)&&(n.flags|=32),null!==n.memoizedState&&(sX._currentValue=a=lI(e,n,lH,null,null,t)),oS(e,n),og(e,n,l,t),n.child;case 6:return null===e&&rS&&((e=t=rw)&&(null!==(t=function(e,n,t){if(""===n)return null;for(;3!==e.nodeType;)if((1!==e.nodeType||"INPUT"!==e.nodeName||"hidden"!==e.type)&&!t||null===(e=sb(e.nextSibling)))return null;return e}(t,n.pendingProps,rE))?(n.stateNode=t,rk=n,rw=null,e=!0):e=!1),e||rP(n)),null;case 13:return oT(e,n,t);case 4:return W(n,n.stateNode.containerInfo),l=n.pendingProps,null===e?n.child=a0(n,null,l,t):og(e,n,l,t),n.child;case 11:return ov(e,n,n.type,n.pendingProps,t);case 7:return og(e,n,n.pendingProps,t),n.child;case 8:case 12:return og(e,n,n.pendingProps.children,t),n.child;case 10:return l=n.pendingProps,rR(n,n.type,l.value),og(e,n,l.children,t),n.child;case 9:return a=n.type._context,l=n.pendingProps.children,rB(n),l=l(a=r$(a)),n.flags|=1,og(e,n,l,t),n.child;case 14:return oy(e,n,n.type,n.pendingProps,t);case 15:return ob(e,n,n.type,n.pendingProps,t);case 19:return oR(e,n,t);case 31:return l=n.pendingProps,t=n.mode,l={mode:l.mode,children:l.children},null===e?(t=oA(l,t)).ref=n.ref:(t=rn(e.child,l)).ref=n.ref,n.child=t,t.return=n,n=t;case 22:return ok(e,n,t);case 24:return rB(n),l=r$(rY),null===e?(null===(a=r8())&&(a=iz,o=rX(),a.pooledCache=o,o.refCount++,null!==o&&(a.pooledCacheLanes|=t),a=o),n.memoizedState={parent:l,cache:a},ls(n),rR(n,rY,a)):(0!=(e.lanes&t)&&(lc(e,n),lv(n,null,null,t),lg()),a=e.memoizedState,o=n.memoizedState,a.parent!==l?(a={parent:l,cache:l},n.memoizedState=a,0===n.lanes&&(n.memoizedState=n.updateQueue.baseState=a),rR(n,rY,l)):(rR(n,rY,l=o.cache),l!==a.cache&&rj(n,[rY],t,!0))),og(e,n,n.pendingProps.children,t),n.child;case 29:throw n.pendingProps}throw Error(u(156,n.tag))}function oU(e){e.flags|=4}function oH(e,n){if("stylesheet"!==n.type||0!=(4&n.state.loading))e.flags&=-0x1000001;else if(e.flags|=0x1000000,!s$(n)){if(null!==(n=a2.current)&&((4194048&iT)===iT?null!==a3:(0x3c00000&iT)!==iT&&0==(0x20000000&iT)||n!==a3))throw la=ln,r7;e.flags|=8192}}function oB(e,n){null!==n&&(e.flags|=4),16384&e.flags&&(n=22!==e.tag?ew():0x20000000,e.lanes|=n,iB|=n)}function o$(e,n){if(!rS)switch(e.tailMode){case"hidden":n=e.tail;for(var t=null;null!==n;)null!==n.alternate&&(t=n),n=n.sibling;null===t?e.tail=null:t.sibling=null;break;case"collapsed":t=e.tail;for(var r=null;null!==t;)null!==t.alternate&&(r=t),t=t.sibling;null===r?n||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function oV(e){var n=null!==e.alternate&&e.alternate.child===e.child,t=0,r=0;if(n)for(var l=e.child;null!==l;)t|=l.lanes|l.childLanes,r|=0x3e00000&l.subtreeFlags,r|=0x3e00000&l.flags,l.return=e,l=l.sibling;else for(l=e.child;null!==l;)t|=l.lanes|l.childLanes,r|=l.subtreeFlags,r|=l.flags,l.return=e,l=l.sibling;return e.subtreeFlags|=r,e.childLanes=t,n}function oW(e,n){switch(rb(n),n.tag){case 3:rF(rY),Q();break;case 26:case 27:case 5:K(n);break;case 4:Q();break;case 13:a5(n);break;case 19:j(a9);break;case 10:rF(n.type);break;case 22:case 23:a5(n),lE(),null!==e&&j(r4);break;case 24:rF(rY)}}function oQ(e,n){try{var t=n.updateQueue,r=null!==t?t.lastEffect:null;if(null!==r){var l=r.next;t=l;do{if((t.tag&e)===e){r=void 0;var a=t.create;t.inst.destroy=r=a()}t=t.next}while(t!==l)}}catch(e){uS(n,n.return,e)}}function oq(e,n,t){try{var r=n.updateQueue,l=null!==r?r.lastEffect:null;if(null!==l){var a=l.next;r=a;do{if((r.tag&e)===e){var o=r.inst,i=o.destroy;if(void 0!==i){o.destroy=void 0,l=n;try{i()}catch(e){uS(l,t,e)}}}r=r.next}while(r!==a)}}catch(e){uS(n,n.return,e)}}function oK(e){var n=e.updateQueue;if(null!==n){var t=e.stateNode;try{lb(n,t)}catch(n){uS(e,e.return,n)}}}function oY(e,n,t){t.props=ol(e.type,e.memoizedProps),t.state=e.memoizedState;try{t.componentWillUnmount()}catch(t){uS(e,n,t)}}function oX(e,n){try{var t=e.ref;if(null!==t){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;default:r=e.stateNode}"function"==typeof t?e.refCleanup=t(r):t.current=r}}catch(t){uS(e,n,t)}}function oG(e,n){var t=e.ref,r=e.refCleanup;if(null!==t)if("function"==typeof r)try{r()}catch(t){uS(e,n,t)}finally{e.refCleanup=null,null!=(e=e.alternate)&&(e.refCleanup=null)}else if("function"==typeof t)try{t(null)}catch(t){uS(e,n,t)}else t.current=null}function oJ(e){var n=e.type,t=e.memoizedProps,r=e.stateNode;try{switch(n){case"button":case"input":case"select":case"textarea":t.autoFocus&&r.focus();break;case"img":t.src?r.src=t.src:t.srcSet&&(r.srcset=t.srcSet)}}catch(n){uS(e,e.return,n)}}function oZ(e,n,t){try{var l=e.stateNode;(function(e,n,t,l){switch(n){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var a=null,o=null,i=null,s=null,c=null,f=null,d=null;for(m in t){var p=t[m];if(t.hasOwnProperty(m)&&null!=p)switch(m){case"checked":case"value":break;case"defaultValue":c=p;default:l.hasOwnProperty(m)||se(e,n,m,null,l,p)}}for(var h in l){var m=l[h];if(p=t[h],l.hasOwnProperty(h)&&(null!=m||null!=p))switch(h){case"type":o=m;break;case"name":a=m;break;case"checked":f=m;break;case"defaultChecked":d=m;break;case"value":i=m;break;case"defaultValue":s=m;break;case"children":case"dangerouslySetInnerHTML":if(null!=m)throw Error(u(137,n));break;default:m!==p&&se(e,n,h,m,l,p)}}nn(e,i,s,c,f,d,o,a);return;case"select":for(o in m=i=s=h=null,t)if(c=t[o],t.hasOwnProperty(o)&&null!=c)switch(o){case"value":break;case"multiple":m=c;default:l.hasOwnProperty(o)||se(e,n,o,null,l,c)}for(a in l)if(o=l[a],c=t[a],l.hasOwnProperty(a)&&(null!=o||null!=c))switch(a){case"value":h=o;break;case"defaultValue":s=o;break;case"multiple":i=o;default:o!==c&&se(e,n,a,o,l,c)}n=s,t=i,l=m,null!=h?nl(e,!!t,h,!1):!!l!=!!t&&(null!=n?nl(e,!!t,n,!0):nl(e,!!t,t?[]:"",!1));return;case"textarea":for(s in m=h=null,t)if(a=t[s],t.hasOwnProperty(s)&&null!=a&&!l.hasOwnProperty(s))switch(s){case"value":case"children":break;default:se(e,n,s,null,l,a)}for(i in l)if(a=l[i],o=t[i],l.hasOwnProperty(i)&&(null!=a||null!=o))switch(i){case"value":h=a;break;case"defaultValue":m=a;break;case"children":break;case"dangerouslySetInnerHTML":if(null!=a)throw Error(u(91));break;default:a!==o&&se(e,n,i,a,l,o)}na(e,h,m);return;case"option":for(var g in t)h=t[g],t.hasOwnProperty(g)&&null!=h&&!l.hasOwnProperty(g)&&("selected"===g?e.selected=!1:se(e,n,g,null,l,h));for(c in l)h=l[c],m=t[c],l.hasOwnProperty(c)&&h!==m&&(null!=h||null!=m)&&("selected"===c?e.selected=h&&"function"!=typeof h&&"symbol"!==(void 0===h?"undefined":r(h)):se(e,n,c,h,l,m));return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var v in t)h=t[v],t.hasOwnProperty(v)&&null!=h&&!l.hasOwnProperty(v)&&se(e,n,v,null,l,h);for(f in l)if(h=l[f],m=t[f],l.hasOwnProperty(f)&&h!==m&&(null!=h||null!=m))switch(f){case"children":case"dangerouslySetInnerHTML":if(null!=h)throw Error(u(137,n));break;default:se(e,n,f,h,l,m)}return;default:if(nf(n)){for(var y in t)h=t[y],t.hasOwnProperty(y)&&void 0!==h&&!l.hasOwnProperty(y)&&sn(e,n,y,void 0,l,h);for(d in l)h=l[d],m=t[d],l.hasOwnProperty(d)&&h!==m&&(void 0!==h||void 0!==m)&&sn(e,n,d,h,l,m);return}}for(var b in t)h=t[b],t.hasOwnProperty(b)&&null!=h&&!l.hasOwnProperty(b)&&se(e,n,b,null,l,h);for(p in l)h=l[p],m=t[p],l.hasOwnProperty(p)&&h!==m&&(null!=h||null!=m)&&se(e,n,p,h,l,m)})(l,e.type,t,n),l[eL]=n}catch(n){uS(e,e.return,n)}}function o0(e){return 5===e.tag||3===e.tag||26===e.tag||27===e.tag&&sm(e.type)||4===e.tag}function o1(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||o0(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(27===e.tag&&sm(e.type)||2&e.flags||null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function o2(e,n,t){var r=e.tag;if(5===r||6===r)e=e.stateNode,n?t.insertBefore(e,n):t.appendChild(e);else if(4!==r&&(27===r&&sm(e.type)&&(t=e.stateNode),null!==(e=e.child)))for(o2(e,n,t),e=e.sibling;null!==e;)o2(e,n,t),e=e.sibling}function o3(e){var n=e.stateNode,t=e.memoizedProps;try{for(var r=e.type,l=n.attributes;l.length;)n.removeAttributeNode(l[0]);st(n,r,t),n[eT]=e,n[eL]=t}catch(n){uS(e,e.return,n)}}var o4=!1,o8=!1,o6=!1,o5="function"==typeof WeakSet?WeakSet:Set,o9=null;function o7(e,n,t){var r=t.flags;switch(t.tag){case 0:case 11:case 15:id(e,t),4&r&&oQ(5,t);break;case 1:if(id(e,t),4&r)if(e=t.stateNode,null===n)try{e.componentDidMount()}catch(e){uS(t,t.return,e)}else{var l=ol(t.type,n.memoizedProps);n=n.memoizedState;try{e.componentDidUpdate(l,n,e.__reactInternalSnapshotBeforeUpdate)}catch(e){uS(t,t.return,e)}}64&r&&oK(t),512&r&&oX(t,t.return);break;case 3:if(id(e,t),64&r&&null!==(e=t.updateQueue)){if(n=null,null!==t.child)switch(t.child.tag){case 27:case 5:case 1:n=t.child.stateNode}try{lb(e,n)}catch(e){uS(t,t.return,e)}}break;case 27:null===n&&4&r&&o3(t);case 26:case 5:id(e,t),null===n&&4&r&&oJ(t),512&r&&oX(t,t.return);break;case 12:default:id(e,t);break;case 13:id(e,t),4&r&&ia(e,t),64&r&&null!==(e=t.memoizedState)&&null!==(e=e.dehydrated)&&function(e,n){var t=e.ownerDocument;if("$?"!==e.data||"complete"===t.readyState)n();else{var r=function(){n(),t.removeEventListener("DOMContentLoaded",r)};t.addEventListener("DOMContentLoaded",r),e._reactRetry=r}}(e,t=uP.bind(null,t));break;case 22:if(!(r=null!==t.memoizedState||o4)){n=null!==n&&null!==n.memoizedState||o8,l=o4;var a=o8;o4=r,(o8=n)&&!a?function e(n,t,r){for(r=r&&0!=(8772&t.subtreeFlags),t=t.child;null!==t;){var l=t.alternate,a=n,o=t,i=o.flags;switch(o.tag){case 0:case 11:case 15:e(a,o,r),oQ(4,o);break;case 1:if(e(a,o,r),"function"==typeof(a=(l=o).stateNode).componentDidMount)try{a.componentDidMount()}catch(e){uS(l,l.return,e)}if(null!==(a=(l=o).updateQueue)){var u=l.stateNode;try{var s=a.shared.hiddenCallbacks;if(null!==s)for(a.shared.hiddenCallbacks=null,a=0;a title"))),st(a,r,t),a[eT]=e,e$(a),r=a;break e;case"link":var o=sH("link","href",l).get(r+(t.href||""));if(o){for(var i=0;i<\/script>",e=e.removeChild(e.firstChild);break;case"select":e="string"==typeof r.is?l.createElement("select",{is:r.is}):l.createElement("select"),r.multiple?e.multiple=!0:r.size&&(e.size=r.size);break;default:e="string"==typeof r.is?l.createElement(t,{is:r.is}):l.createElement(t)}}e[eT]=n,e[eL]=r;e:for(l=n.child;null!==l;){if(5===l.tag||6===l.tag)e.appendChild(l.stateNode);else if(4!==l.tag&&27!==l.tag&&null!==l.child){l.child.return=l,l=l.child;continue}if(l===n)break;for(;null===l.sibling;){if(null===l.return||l.return===n)break e;l=l.return}l.sibling.return=l.return,l=l.sibling}switch(n.stateNode=e,st(e,t,r),t){case"button":case"input":case"select":case"textarea":e=!!r.autoFocus;break;case"img":e=!0;break;default:e=!1}e&&oU(n)}}return oV(n),n.flags&=-0x1000001,null;case 6:if(e&&null!=n.stateNode)e.memoizedProps!==r&&oU(n);else{if("string"!=typeof r&&null===n.stateNode)throw Error(u(166));if(e=$.current,rN(n)){if(e=n.stateNode,t=n.memoizedProps,r=null,null!==(l=rk))switch(l.tag){case 27:case 5:r=l.memoizedProps}e[eT]=n,(e=!!(e.nodeValue===t||null!==r&&!0===r.suppressHydrationWarning||u9(e.nodeValue,t)))||rP(n)}else(e=sa(e).createTextNode(r))[eT]=n,n.stateNode=e}return oV(n),null;case 13:if(r=n.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(l=rN(n),null!==r&&null!==r.dehydrated){if(null===e){if(!l)throw Error(u(318));if(!(l=null!==(l=n.memoizedState)?l.dehydrated:null))throw Error(u(317));l[eT]=n}else rT(),0==(128&n.flags)&&(n.memoizedState=null),n.flags|=4;oV(n),l=!1}else l=rL(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=l),l=!0;if(!l){if(256&n.flags)return a5(n),n;return a5(n),null}}if(a5(n),0!=(128&n.flags))return n.lanes=t,n;if(t=null!==r,e=null!==e&&null!==e.memoizedState,t){r=n.child,l=null,null!==r.alternate&&null!==r.alternate.memoizedState&&null!==r.alternate.memoizedState.cachePool&&(l=r.alternate.memoizedState.cachePool.pool);var a=null;null!==r.memoizedState&&null!==r.memoizedState.cachePool&&(a=r.memoizedState.cachePool.pool),a!==l&&(r.flags|=2048)}return t!==e&&t&&(n.child.flags|=8192),oB(n,n.updateQueue),oV(n),null;case 4:return Q(),null===e&&uJ(n.stateNode.containerInfo),oV(n),null;case 10:return rF(n.type),oV(n),null;case 19:if(j(a9),null===(l=n.memoizedState))return oV(n),null;if(r=0!=(128&n.flags),null===(a=l.rendering))if(r)o$(l,!1);else{if(0!==iF||null!==e&&0!=(128&e.flags))for(e=n.child;null!==e;){if(null!==(a=a7(e))){for(n.flags|=128,o$(l,!1),e=a.updateQueue,n.updateQueue=e,oB(n,e),n.subtreeFlags=0,e=t,t=n.child;null!==t;)rt(t,e),t=t.sibling;return U(a9,1&a9.current|2),n.child}e=e.sibling}null!==l.tail&&ee()>iq&&(n.flags|=128,r=!0,o$(l,!1),n.lanes=4194304)}else{if(!r)if(null!==(e=a7(a))){if(n.flags|=128,r=!0,e=e.updateQueue,n.updateQueue=e,oB(n,e),o$(l,!0),null===l.tail&&"hidden"===l.tailMode&&!a.alternate&&!rS)return oV(n),null}else 2*ee()-l.renderingStartTime>iq&&0x20000000!==t&&(n.flags|=128,r=!0,o$(l,!1),n.lanes=4194304);l.isBackwards?(a.sibling=n.child,n.child=a):(null!==(e=l.last)?e.sibling=a:n.child=a,l.last=a)}if(null!==l.tail)return n=l.tail,l.rendering=n,l.tail=n.sibling,l.renderingStartTime=ee(),n.sibling=null,e=a9.current,U(a9,r?1&e|2:1&e),n;return oV(n),null;case 22:case 23:return a5(n),lE(),r=null!==n.memoizedState,null!==e?null!==e.memoizedState!==r&&(n.flags|=8192):r&&(n.flags|=8192),r?0!=(0x20000000&t)&&0==(128&n.flags)&&(oV(n),6&n.subtreeFlags&&(n.flags|=8192)):oV(n),null!==(t=n.updateQueue)&&oB(n,t.retryQueue),t=null,null!==e&&null!==e.memoizedState&&null!==e.memoizedState.cachePool&&(t=e.memoizedState.cachePool.pool),r=null,null!==n.memoizedState&&null!==n.memoizedState.cachePool&&(r=n.memoizedState.cachePool.pool),r!==t&&(n.flags|=2048),null!==e&&j(r4),null;case 24:return t=null,null!==e&&(t=e.memoizedState.cache),n.memoizedState.cache!==t&&(n.flags|=2048),rF(rY),oV(n),null;case 25:case 30:return null}throw Error(u(156,n.tag))}(n.alternate,n,iR);if(null!==t){iN=t;return}if(null!==(n=n.sibling)){iN=n;return}iN=n=e}while(null!==n);0===iF&&(iF=5)}function up(e,n){do{var t=function(e,n){switch(rb(n),n.tag){case 1:return 65536&(e=n.flags)?(n.flags=-65537&e|128,n):null;case 3:return rF(rY),Q(),0!=(65536&(e=n.flags))&&0==(128&e)?(n.flags=-65537&e|128,n):null;case 26:case 27:case 5:return K(n),null;case 13:if(a5(n),null!==(e=n.memoizedState)&&null!==e.dehydrated){if(null===n.alternate)throw Error(u(340));rT()}return 65536&(e=n.flags)?(n.flags=-65537&e|128,n):null;case 19:return j(a9),null;case 4:return Q(),null;case 10:return rF(n.type),null;case 22:case 23:return a5(n),lE(),null!==e&&j(r4),65536&(e=n.flags)?(n.flags=-65537&e|128,n):null;case 24:return rF(rY),null;default:return null}}(e.alternate,e);if(null!==t){t.flags&=32767,iN=t;return}if(null!==(t=e.return)&&(t.flags|=32768,t.subtreeFlags=0,t.deletions=null),!n&&null!==(e=e.sibling)){iN=e;return}iN=e=t}while(null!==e);iF=6,iN=null}function uh(e,n,t,r,l,a,o,i,s){e.cancelPendingCommit=null;do ub();while(0!==iX);if(0!=(6&i_))throw Error(u(327));if(null!==n){if(n===e.current)throw Error(u(177));if(!function(e,n,t,r,l,a){var o=e.pendingLanes;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=t,e.entangledLanes&=t,e.errorRecoveryDisabledLanes&=t,e.shellSuspendCounter=0;var i=e.entanglements,u=e.expirationTimes,s=e.hiddenUpdates;for(t=o&~t;0g&&(o=g,g=m,m=o);var v=tP(i,m),y=tP(i,g);if(v&&y&&(1!==p.rangeCount||p.anchorNode!==v.node||p.anchorOffset!==v.offset||p.focusNode!==y.node||p.focusOffset!==y.offset)){var b=f.createRange();b.setStart(v.node,v.offset),p.removeAllRanges(),m>g?(p.addRange(b),p.extend(y.node,y.offset)):(b.setEnd(y.node,y.offset),p.addRange(b))}}}}for(f=[],p=i;p=p.parentNode;)1===p.nodeType&&f.push({element:p,left:p.scrollLeft,top:p.scrollTop});for("function"==typeof i.focus&&i.focus(),i=0;it?32:t,O.T=null,t=i1,i1=null;var a=iG,o=iZ;if(iX=0,iJ=iG=null,iZ=0,0!=(6&i_))throw Error(u(331));var i=i_;if(i_|=4,ix(a.current),ig(a,a.current,o,t),i_=i,uD(0,!1),ec&&"function"==typeof ec.onPostCommitFiberRoot)try{ec.onPostCommitFiberRoot(es,a)}catch(e){}return!0}finally{M.p=l,O.T=r,uy(e,n)}}function uw(e,n,t){n=tG(t,n),n=of(e.stateNode,n,2),null!==(e=ld(e,n,2))&&(ex(e,2),uM(e))}function uS(e,n,t){if(3===e.tag)uw(e,e,t);else for(;null!==n;){if(3===n.tag){uw(n,e,t);break}if(1===n.tag){var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===iY||!iY.has(r))){e=tG(t,e),null!==(r=ld(n,t=od(2),2))&&(op(t,r,n,e),ex(r,2),uM(r));break}}n=n.return}}function ux(e,n,t){var r=e.pingCache;if(null===r){r=e.pingCache=new iP;var l=new Set;r.set(n,l)}else void 0===(l=r.get(n))&&(l=new Set,r.set(n,l));l.has(t)||(iD=!0,l.add(t),e=uE.bind(null,e,n,t),n.then(e,e))}function uE(e,n,t){var r=e.pingCache;null!==r&&r.delete(n),e.pingedLanes|=e.suspendedLanes&t,e.warmLanes&=~t,iz===e&&(iT&t)===t&&(4===iF||3===iF&&(0x3c00000&iT)===iT&&300>ee()-iQ?0==(2&i_)&&ur(e,0):iU|=t,iB===iT&&(iB=0)),uM(e)}function uC(e,n){0===n&&(n=ew()),null!==(e=t4(e,n))&&(ex(e,n),uM(e))}function uP(e){var n=e.memoizedState,t=0;null!==n&&(t=n.retryLane),uC(e,t)}function u_(e,n){var t=0;switch(e.tag){case 13:var r=e.stateNode,l=e.memoizedState;null!==l&&(t=l.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(u(314))}null!==r&&r.delete(n),uC(e,t)}var uz=null,uN=null,uT=!1,uL=!1,uA=!1,uO=0;function uM(e){e!==uN&&null===e.next&&(null===uN?uz=uN=e:uN=uN.next=e),uL=!0,uT||(uT=!0,sp(function(){0!=(6&i_)?X(et,uR):uF()}))}function uD(e,n){if(!uA&&uL){uA=!0;do for(var t=!1,r=uz;null!==r;){if(!n)if(0!==e){var l=r.pendingLanes;if(0===l)var a=0;else{var o=r.suspendedLanes,i=r.pingedLanes;a=0xc000095&(a=(1<<31-ed(42|e)+1)-1&(l&~(o&~i)))?0xc000095&a|1:a?2|a:0}0!==a&&(t=!0,uU(r,a))}else a=iT,0==(3&(a=ey(r,r===iz?a:0,null!==r.cancelPendingCommit||-1!==r.timeoutHandle)))||eb(r,a)||(t=!0,uU(r,a));r=r.next}while(t);uA=!1}}function uR(){uF()}function uF(){uL=uT=!1;var e,n=0;0!==uO&&(((e=window.event)&&"popstate"===e.type?e===ss||(ss=e,0):(ss=null,1))||(n=uO),uO=0);for(var t=ee(),r=null,l=uz;null!==l;){var a=l.next,o=uI(l,t);0===o?(l.next=null,null===r?uz=a:r.next=a,null===a&&(uN=r)):(r=l,(0!==n||0!=(3&o))&&(uL=!0)),l=a}uD(n,!1)}function uI(e,n){for(var t=e.suspendedLanes,r=e.pingedLanes,l=e.expirationTimes,a=-0x3c00001&e.pendingLanes;0r){t=r;var o=e.ownerDocument;if(1&t&&sx(o.documentElement),2&t&&sx(o.body),4&t)for(sx(t=o.head),o=t.firstChild;o;){var i=o.nextSibling,u=o.nodeName;o[eF]||"SCRIPT"===u||"STYLE"===u||"LINK"===u&&"stylesheet"===o.rel.toLowerCase()||t.removeChild(o),o=i}}if(0===l){e.removeChild(a),cv(n);return}l--}else"$"===t||"$?"===t||"$!"===t?l++:r=t.charCodeAt(0)-48;else r=0;t=a}while(t);cv(n)}function sv(e){var n=e.firstChild;for(n&&10===n.nodeType&&(n=n.nextSibling);n;){var t=n;switch(n=n.nextSibling,t.nodeName){case"HTML":case"HEAD":case"BODY":sv(t),eI(t);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if("stylesheet"===t.rel.toLowerCase())continue}e.removeChild(t)}}function sy(e){return"$!"===e.data||"$?"===e.data&&"complete"===e.ownerDocument.readyState}function sb(e){for(;null!=e;e=e.nextSibling){var n=e.nodeType;if(1===n||3===n)break;if(8===n){if("$"===(n=e.data)||"$!"===n||"$?"===n||"F!"===n||"F"===n)break;if("/$"===n)return null}}return e}var sk=null;function sw(e){e=e.previousSibling;for(var n=0;e;){if(8===e.nodeType){var t=e.data;if("$"===t||"$!"===t||"$?"===t){if(0===n)return e;n--}else"/$"===t&&n++}e=e.previousSibling}return null}function sS(e,n,t){switch(n=sa(t),e){case"html":if(!(e=n.documentElement))throw Error(u(452));return e;case"head":if(!(e=n.head))throw Error(u(453));return e;case"body":if(!(e=n.body))throw Error(u(454));return e;default:throw Error(u(451))}}function sx(e){for(var n=e.attributes;n.length;)e.removeAttributeNode(n[0]);eI(e)}var sE=new Map,sC=new Set;function sP(e){return"function"==typeof e.getRootNode?e.getRootNode():9===e.nodeType?e:e.ownerDocument}var s_=M.d;M.d={f:function(){var e=s_.f(),n=un();return e||n},r:function(e){var n=eU(e);null!==n&&5===n.tag&&"form"===n.type?aL(n):s_.r(e)},D:function(e){s_.D(e),sN("dns-prefetch",e,null)},C:function(e,n){s_.C(e,n),sN("preconnect",e,n)},L:function(e,n,t){if(s_.L(e,n,t),sz&&e&&n){var r='link[rel="preload"][as="'+ne(n)+'"]';"image"===n&&t&&t.imageSrcSet?(r+='[imagesrcset="'+ne(t.imageSrcSet)+'"]',"string"==typeof t.imageSizes&&(r+='[imagesizes="'+ne(t.imageSizes)+'"]')):r+='[href="'+ne(e)+'"]';var l=r;switch(n){case"style":l=sL(e);break;case"script":l=sM(e)}sE.has(l)||(e=d({rel:"preload",href:"image"===n&&t&&t.imageSrcSet?void 0:e,as:n},t),sE.set(l,e),null!==sz.querySelector(r)||"style"===n&&sz.querySelector(sA(l))||"script"===n&&sz.querySelector(sD(l))||(st(n=sz.createElement("link"),"link",e),e$(n),sz.head.appendChild(n)))}},m:function(e,n){if(s_.m(e,n),sz&&e){var t=n&&"string"==typeof n.as?n.as:"script",r='link[rel="modulepreload"][as="'+ne(t)+'"][href="'+ne(e)+'"]',l=r;switch(t){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":l=sM(e)}if(!sE.has(l)&&(e=d({rel:"modulepreload",href:e},n),sE.set(l,e),null===sz.querySelector(r))){switch(t){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(sz.querySelector(sD(l)))return}st(t=sz.createElement("link"),"link",e),e$(t),sz.head.appendChild(t)}}},X:function(e,n){if(s_.X(e,n),sz&&e){var t=eB(sz).hoistableScripts,r=sM(e),l=t.get(r);l||((l=sz.querySelector(sD(r)))||(e=d({src:e,async:!0},n),(n=sE.get(r))&&sj(e,n),e$(l=sz.createElement("script")),st(l,"link",e),sz.head.appendChild(l)),l={type:"script",instance:l,count:1,state:null},t.set(r,l))}},S:function(e,n,t){if(s_.S(e,n,t),sz&&e){var r=eB(sz).hoistableStyles,l=sL(e);n=n||"default";var a=r.get(l);if(!a){var o={loading:0,preload:null};if(a=sz.querySelector(sA(l)))o.loading=5;else{e=d({rel:"stylesheet",href:e,"data-precedence":n},t),(t=sE.get(l))&&sI(e,t);var i=a=sz.createElement("link");e$(i),st(i,"link",e),i._p=new Promise(function(e,n){i.onload=e,i.onerror=n}),i.addEventListener("load",function(){o.loading|=1}),i.addEventListener("error",function(){o.loading|=2}),o.loading|=4,sF(a,n,sz)}a={type:"stylesheet",instance:a,count:1,state:o},r.set(l,a)}}},M:function(e,n){if(s_.M(e,n),sz&&e){var t=eB(sz).hoistableScripts,r=sM(e),l=t.get(r);l||((l=sz.querySelector(sD(r)))||(e=d({src:e,async:!0,type:"module"},n),(n=sE.get(r))&&sj(e,n),e$(l=sz.createElement("script")),st(l,"link",e),sz.head.appendChild(l)),l={type:"script",instance:l,count:1,state:null},t.set(r,l))}}};var sz="undefined"==typeof document?null:document;function sN(e,n,t){if(sz&&"string"==typeof n&&n){var r=ne(n);r='link[rel="'+e+'"][href="'+r+'"]',"string"==typeof t&&(r+='[crossorigin="'+t+'"]'),sC.has(r)||(sC.add(r),e={rel:e,crossOrigin:t,href:n},null===sz.querySelector(r)&&(st(n=sz.createElement("link"),"link",e),e$(n),sz.head.appendChild(n)))}}function sT(e,n,t,l){var a=(a=$.current)?sP(a):null;if(!a)throw Error(u(446));switch(e){case"meta":case"title":return null;case"style":return"string"==typeof t.precedence&&"string"==typeof t.href?(n=sL(t.href),(l=(t=eB(a).hoistableStyles).get(n))||(l={type:"style",instance:null,count:0,state:null},t.set(n,l)),l):{type:"void",instance:null,count:0,state:null};case"link":if("stylesheet"===t.rel&&"string"==typeof t.href&&"string"==typeof t.precedence){e=sL(t.href);var o,i,s,c,f=eB(a).hoistableStyles,d=f.get(e);if(d||(a=a.ownerDocument||a,d={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},f.set(e,d),(f=a.querySelector(sA(e)))&&!f._p&&(d.instance=f,d.state.loading=5),sE.has(e)||(t={rel:"preload",as:"style",href:t.href,crossOrigin:t.crossOrigin,integrity:t.integrity,media:t.media,hrefLang:t.hrefLang,referrerPolicy:t.referrerPolicy},sE.set(e,t),f||(o=a,i=e,s=t,c=d.state,o.querySelector('link[rel="preload"][as="style"]['+i+"]")?c.loading=1:(c.preload=i=o.createElement("link"),i.addEventListener("load",function(){return c.loading|=1}),i.addEventListener("error",function(){return c.loading|=2}),st(i,"link",s),e$(i),o.head.appendChild(i))))),n&&null===l)throw Error(u(528,""));return d}if(n&&null!==l)throw Error(u(529,""));return null;case"script":return n=t.async,"string"==typeof(t=t.src)&&n&&"function"!=typeof n&&"symbol"!==(void 0===n?"undefined":r(n))?(n=sM(t),(l=(t=eB(a).hoistableScripts).get(n))||(l={type:"script",instance:null,count:0,state:null},t.set(n,l)),l):{type:"void",instance:null,count:0,state:null};default:throw Error(u(444,e))}}function sL(e){return'href="'+ne(e)+'"'}function sA(e){return'link[rel="stylesheet"]['+e+"]"}function sO(e){return d({},e,{"data-precedence":e.precedence,precedence:null})}function sM(e){return'[src="'+ne(e)+'"]'}function sD(e){return"script[async]"+e}function sR(e,n,t){if(n.count++,null===n.instance)switch(n.type){case"style":var r=e.querySelector('style[data-href~="'+ne(t.href)+'"]');if(r)return n.instance=r,e$(r),r;var l=d({},t,{"data-href":t.href,"data-precedence":t.precedence,href:null,precedence:null});return e$(r=(e.ownerDocument||e).createElement("style")),st(r,"style",l),sF(r,t.precedence,e),n.instance=r;case"stylesheet":l=sL(t.href);var a=e.querySelector(sA(l));if(a)return n.state.loading|=4,n.instance=a,e$(a),a;r=sO(t),(l=sE.get(l))&&sI(r,l),e$(a=(e.ownerDocument||e).createElement("link"));var o=a;return o._p=new Promise(function(e,n){o.onload=e,o.onerror=n}),st(a,"link",r),n.state.loading|=4,sF(a,t.precedence,e),n.instance=a;case"script":if(a=sM(t.src),l=e.querySelector(sD(a)))return n.instance=l,e$(l),l;return r=t,(l=sE.get(a))&&sj(r=d({},t),l),e$(l=(e=e.ownerDocument||e).createElement("script")),st(l,"link",r),e.head.appendChild(l),n.instance=l;case"void":return null;default:throw Error(u(443,n.type))}return"stylesheet"===n.type&&0==(4&n.state.loading)&&(r=n.instance,n.state.loading|=4,sF(r,t.precedence,e)),n.instance}function sF(e,n,t){for(var r=t.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),l=r.length?r[r.length-1]:null,a=l,o=0;o title"):null)}function s$(e){return"stylesheet"!==e.type||0!=(3&e.state.loading)}var sV=null;function sW(){}function sQ(){if(this.count--,0===this.count){if(this.stylesheets)sK(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var sq=null;function sK(e,n){e.stylesheets=null,null!==e.unsuspend&&(e.count++,sq=new Map,n.forEach(sY,e),sq=null,sQ.call(e))}function sY(e,n){if(!(4&n.state.loading)){var t=sq.get(e);if(t)var r=t.get(null);else{t=new Map,sq.set(e,t);for(var l=e.querySelectorAll("link[data-precedence],style[data-precedence]"),a=0;a>>1,l=e[r];if(0>>1;ro(u,t))so(c,u)?(e[r]=c,e[s]=t,r=s):(e[r]=u,e[i]=t,r=i);else if(so(c,t))e[r]=c,e[s]=t,r=s;else break}}return n}function o(e,n){var t=e.sortIndex-n.sortIndex;return 0!==t?t:e.id-n.id}if(n.unstable_now=void 0,"object"===("undefined"==typeof performance?"undefined":t(performance))&&"function"==typeof performance.now){var i,u=performance;n.unstable_now=function(){return u.now()}}else{var s=Date,c=s.now();n.unstable_now=function(){return s.now()-c}}var f=[],d=[],p=1,h=null,m=3,g=!1,v=!1,y=!1,b=!1,k="function"==typeof setTimeout?setTimeout:null,w="function"==typeof clearTimeout?clearTimeout:null,S="undefined"!=typeof setImmediate?setImmediate:null;function x(e){for(var n=l(d);null!==n;){if(null===n.callback)a(d);else if(n.startTime<=e)a(d),n.sortIndex=n.expirationTime,r(f,n);else break;n=l(d)}}function E(e){if(y=!1,x(e),!v)if(null!==l(f))v=!0,C||(C=!0,i());else{var n=l(d);null!==n&&O(E,n.startTime-e)}}var C=!1,P=-1,_=5,z=-1;function N(){return!!b||!(n.unstable_now()-z<_)}function T(){if(b=!1,C){var e=n.unstable_now();z=e;var t=!0;try{e:{v=!1,y&&(y=!1,w(P),P=-1),g=!0;var r=m;try{n:{for(x(e),h=l(f);null!==h&&!(h.expirationTime>e&&N());){var o=h.callback;if("function"==typeof o){h.callback=null,m=h.priorityLevel;var u=o(h.expirationTime<=e);if(e=n.unstable_now(),"function"==typeof u){h.callback=u,x(e),t=!0;break n}h===l(f)&&a(f),x(e)}else a(f);h=l(f)}if(null!==h)t=!0;else{var s=l(d);null!==s&&O(E,s.startTime-e),t=!1}}break e}finally{h=null,m=r,g=!1}}}finally{t?i():C=!1}}}if("function"==typeof S)i=function(){S(T)};else if("undefined"!=typeof MessageChannel){var L=new MessageChannel,A=L.port2;L.port1.onmessage=T,i=function(){A.postMessage(null)}}else i=function(){k(T,0)};function O(e,t){P=k(function(){e(n.unstable_now())},t)}n.unstable_IdlePriority=5,n.unstable_ImmediatePriority=1,n.unstable_LowPriority=4,n.unstable_NormalPriority=3,n.unstable_Profiling=null,n.unstable_UserBlockingPriority=2,n.unstable_cancelCallback=function(e){e.callback=null},n.unstable_forceFrameRate=function(e){0>e||125u?(e.sortIndex=o,r(d,e),null===l(f)&&e===l(d)&&(y?(w(P),P=-1):y=!0,O(E,o-u))):(e.sortIndex=s,r(f,e),v||g||(v=!0,C||(C=!0,i()))),e},n.unstable_shouldYield=N,n.unstable_wrapCallback=function(e){var n=m;return function(){var t=m;m=n;try{return e.apply(this,arguments)}finally{m=t}}}},1171:function(e,n,t){e.exports=t(9210)}},n={};function t(r){var l=n[r];if(void 0!==l)return l.exports;var a=n[r]={exports:{}};return e[r](a,a.exports,t),a.exports}t.rv=()=>"1.3.5",t.ruid="bundler=rspack@1.3.5",(()=>{var e=t(1557),n=t(1898),r=t(2778);function l(e,n,t,r,l,a,o){try{var i=e[a](o),u=i.value}catch(e){t(e);return}i.done?n(u):Promise.resolve(u).then(r,l)}function a(e){return function(){var n=this,t=arguments;return new Promise(function(r,a){var o=e.apply(n,t);function i(e){l(o,r,a,i,u,"next",e)}function u(e){l(o,r,a,i,u,"throw",e)}i(void 0)})}}function o(e,n){if(!(e instanceof n))throw TypeError("Cannot call a class as a function")}function i(e,n){for(var t=0;t0&&l[l.length-1])&&(6===u[0]||2===u[0])){o=0;continue}if(3===u[0]&&(!l||u[1]>l[0]&&u[1]e.length)&&(n=e.length);for(var t=0,r=Array(n);ti)return 1}return 0},b=function(e,n,t){var r,l,a=e.length;for(void 0===t?(r=1,l=e[0]):(r=0,l=t);re.length)&&(n=e.length);for(var t=0,r=Array(n);te.length)&&(n=e.length);for(var t=0,r=Array(n);t1&&void 0!==arguments[1]?arguments[1]:"Generic",t=arguments.length,r=Array(t>2?t-2:0),l=2;l=2){var a=[n].concat(N(r)).map(function(e){var n;return"string"==typeof e?e:(null!=(n=Error)&&"undefined"!=typeof Symbol&&n[Symbol.hasInstance]?!!n[Symbol.hasInstance](e):e instanceof n)?e.stack||String(e):JSON.stringify(e)}).filter(function(e){return e}).join(" ")+"\nUser Agent: "+navigator.userAgent;Byond.sendMessage({type:"log",ns:n,message:a})}},L=function(e){return{debug:function(){for(var n=arguments.length,t=Array(n),r=0;re.length)&&(n=e.length);for(var t=0,r=Array(n);t2&&void 0!==arguments[2]?arguments[2]:50,l=[n],a=0;a0&&l[l.length-1])&&(6===u[0]||2===u[0])){o=0;continue}if(3===u[0]&&(!l||u[1]>l[0]&&u[1]5&&this.messages.pop()}},{key:"getIndex",value:function(){return this.index+1}},{key:"getOlderMessage",value:function(){return 0===this.messages.length||this.index>=this.messages.length-1?null:(this.index++,this.messages[this.index])}},{key:"getNewerMessage",value:function(){return this.index<=0?(this.index=-1,null):(this.index--,this.messages[this.index])}},{key:"isAtLatest",value:function(){return -1===this.index}},{key:"saveTemp",value:function(e){this.temp=e}},{key:"getTemp",value:function(){var e=this.temp;return this.temp=null,e}},{key:"reset",value:function(){this.index=-1,this.temp=null}}],function(e,n){for(var t=0;te.length)&&(n=e.length);for(var t=0,r=Array(n);t2&&void 0!==arguments[2]&&arguments[2];return function(){for(var l=arguments.length,a=Array(l),o=0;o=n?(e.apply(void 0,ep(o)),t=u):r=setTimeout(function(){return l.apply(void 0,ep(o))},n-(u-(null!=t?t:0)))}}(function(){return Byond.sendMessage("typing")},4e3)};function eg(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=Array(n);teu.Medium?ei.Large:n<=eu.Medium&&n>eu.Small?ei.Medium:ei.Small)&&(m(e),function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ei.Small,n=arguments.length>1?arguments[1]:void 0,t=n?window.devicePixelRatio:1,r="".concat(ei.Width*t,"x").concat(e*t);Byond.winset(null,{"tgui_say.size":r,"tgui_say.browser.size":r})}(e,o.current))},[x]);var O=k&&"lightMode"||f&&es[f]||t.current.current();return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("div",{className:"window window-".concat(O," window-").concat(h),onMouseDown:J,children:!k&&(0,e.jsx)("div",{className:"shine shine-".concat(O)})}),(0,e.jsxs)("div",{className:function(e){for(var n="",t=0;t Date: Sat, 26 Apr 2025 09:56:55 +0100 Subject: [PATCH 2/7] Sp_ => SP_ --- code/_onclick/hud/spell_screen_objects.dm | 2 +- .../factions/bloodcult/bloodcult_spells.dm | 2 +- .../gamemode/factions/legacy_cult/runes.dm | 2 +- code/datums/gamemode/role/malf/malf_apcs.dm | 2 +- code/game/dna/genes/goon_disabilities.dm | 4 +- code/game/dna/genes/goon_powers.dm | 8 +- code/game/dna/genes/powers.dm | 4 +- code/game/dna/genes/vg_powers.dm | 4 +- code/game/gamemodes/wizard/artefact.dm | 2 +- code/game/gamemodes/wizard/artifacts.dm | 22 ++--- code/game/gamemodes/wizard/spellbook.dm | 56 ++++++------ code/game/mecha/mecha.dm | 2 +- code/modules/mob/dead/observer/spells.dm | 2 +- .../carbon/alien/humanoid/alien_powers.dm | 16 ++-- .../mob/living/carbon/species_powers.dm | 4 +- .../silicon/robot/robot_subtypes/starman.dm | 12 +-- .../simple_animal/hostile/arcane_golem.dm | 2 +- .../simple_animal/hostile/grue_powers.dm | 14 +-- .../hostile/pulse_demon/pulsedemon.dm | 4 +- .../hostile/pulse_demon/pulsedemon_powers.dm | 38 ++++---- .../mob/living/simple_animal/shade_powers.dm | 10 +-- code/modules/mob/mob.dm | 6 +- .../reagents/reagents/reagents_ethanol.dm | 4 +- code/modules/spells/aoe_turf/blink.dm | 2 +- .../spells/aoe_turf/conjure/arcane_golem.dm | 12 +-- .../spells/aoe_turf/conjure/doppelganger.dm | 4 +- .../spells/aoe_turf/conjure/forcewall.dm | 2 +- .../spells/aoe_turf/conjure/pitbulls.dm | 8 +- .../spells/aoe_turf/conjure/pontiac.dm | 4 +- .../modules/spells/aoe_turf/conjure/snakes.dm | 2 +- .../spells/aoe_turf/conjure/snowmobile.dm | 2 +- code/modules/spells/aoe_turf/fall.dm | 10 +-- code/modules/spells/aoe_turf/glare.dm | 2 +- code/modules/spells/aoe_turf/hangcurse.dm | 10 +-- code/modules/spells/aoe_turf/knock.dm | 2 +- code/modules/spells/aoe_turf/lightbulb.dm | 2 +- .../modules/spells/aoe_turf/magic_wardrobe.dm | 50 +++++------ code/modules/spells/aoe_turf/screech.dm | 2 +- .../spells/changeling/changeling_spell.dm | 2 +- code/modules/spells/general/cloak.dm | 2 +- code/modules/spells/general/lightning.dm | 30 +++---- code/modules/spells/general/rejuvenate.dm | 2 +- code/modules/spells/general/ring_of_fire.dm | 24 +++--- code/modules/spells/general/rune_write.dm | 2 +- code/modules/spells/general/shapeshift.dm | 2 +- code/modules/spells/general/silentbite.dm | 2 +- code/modules/spells/general/undeath.dm | 2 +- code/modules/spells/passive/no_clothes.dm | 2 +- code/modules/spells/passive/passive.dm | 4 +- code/modules/spells/spell_code.dm | 86 +++++++++---------- code/modules/spells/targeted/absorb.dm | 8 +- code/modules/spells/targeted/arcanetamper.dm | 16 ++-- .../spells/targeted/buttbots_revenge.dm | 6 +- code/modules/spells/targeted/card.dm | 2 +- code/modules/spells/targeted/disease.dm | 2 +- code/modules/spells/targeted/disorient.dm | 8 +- code/modules/spells/targeted/enthrall.dm | 2 +- .../spells/targeted/equip/horsemask.dm | 2 +- .../spells/targeted/equip/robesummon.dm | 8 +- .../modules/spells/targeted/ethereal_jaunt.dm | 8 +- code/modules/spells/targeted/fist.dm | 2 +- code/modules/spells/targeted/genetic.dm | 2 +- code/modules/spells/targeted/grease.dm | 12 +-- code/modules/spells/targeted/heal.dm | 30 +++---- code/modules/spells/targeted/hypnotise.dm | 2 +- .../modules/spells/targeted/invoke_emotion.dm | 34 ++++---- code/modules/spells/targeted/pacify.dm | 26 +++--- code/modules/spells/targeted/parrotmorph.dm | 2 +- .../spells/targeted/projectile/fireball.dm | 8 +- .../spells/targeted/projectile/firebreath.dm | 10 +-- .../spells/targeted/projectile/pie_throw.dm | 20 ++--- code/modules/spells/targeted/punch.dm | 6 +- code/modules/spells/targeted/push.dm | 2 +- code/modules/spells/targeted/recall.dm | 24 +++--- code/modules/spells/targeted/shoesnatch.dm | 8 +- .../modules/spells/targeted/street_alchemy.dm | 50 +++++------ code/modules/spells/targeted/summon_snacks.dm | 54 ++++++------ 77 files changed, 425 insertions(+), 425 deletions(-) diff --git a/code/_onclick/hud/spell_screen_objects.dm b/code/_onclick/hud/spell_screen_objects.dm index 101e7c90f4c9..c8fb1b7ae3c0 100644 --- a/code/_onclick/hud/spell_screen_objects.dm +++ b/code/_onclick/hud/spell_screen_objects.dm @@ -304,7 +304,7 @@ spell_icon = spell.hud_state overlays -= spell_icon - if((spell.charge_type & Sp_RECHARGE) || (spell.charge_type & Sp_CHARGES) || (spell.charge_type & Sp_GRADUAL)) + if((spell.charge_type & SP_RECHARGE) || (spell.charge_type & SP_CHARGES) || (spell.charge_type & SP_GRADUAL)) if(spell.charge_counter < spell.charge_max) icon_state = "[spell_base]_spell_base" if(spell.charge_counter > 0) diff --git a/code/datums/gamemode/factions/bloodcult/bloodcult_spells.dm b/code/datums/gamemode/factions/bloodcult/bloodcult_spells.dm index d44bf481378a..1e243b7d93f0 100644 --- a/code/datums/gamemode/factions/bloodcult/bloodcult_spells.dm +++ b/code/datums/gamemode/factions/bloodcult/bloodcult_spells.dm @@ -14,7 +14,7 @@ var/list/arcane_pockets = list() hud_state = "cult_pocket_empty" invocation_type = SpI_NONE - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 0 range = 0 spell_flags = null diff --git a/code/datums/gamemode/factions/legacy_cult/runes.dm b/code/datums/gamemode/factions/legacy_cult/runes.dm index ab71f153e518..29d75e2adb00 100644 --- a/code/datums/gamemode/factions/legacy_cult/runes.dm +++ b/code/datums/gamemode/factions/legacy_cult/runes.dm @@ -1450,7 +1450,7 @@ to_chat(C, "You are now an Artificer. You are incredibly weak and fragile, but you are able to construct new floors and walls, to break some walls apart, to repair allied constructs (by clicking on them), and most important of all create new constructs (Use your Artificer spell to summon a new construct shell and Summon Soulstone to create a new soulstone).") //ticker.mode.update_cult_icons_added(C.mind) for(var/spell/S in C.spell_list) - if(S.charge_type & Sp_RECHARGE) + if(S.charge_type & SP_RECHARGE) if(S.charge_counter == S.charge_max) //Spell is fully charged - let the proc handle everything S.take_charge() else //Spell is on cooldown and already recharging - there's no need to call S.process(), just reset charges to 0 diff --git a/code/datums/gamemode/role/malf/malf_apcs.dm b/code/datums/gamemode/role/malf/malf_apcs.dm index 0ccc0e60864e..6e3aa8fb82f3 100644 --- a/code/datums/gamemode/role/malf/malf_apcs.dm +++ b/code/datums/gamemode/role/malf/malf_apcs.dm @@ -114,7 +114,7 @@ /spell/aoe_turf/corereturn name = "Return to Core" panel = "Malfunction" - charge_type = Sp_CHARGES + charge_type = SP_CHARGES charge_max = 1 hud_state = "unshunt" diff --git a/code/game/dna/genes/goon_disabilities.dm b/code/game/dna/genes/goon_disabilities.dm index 399d3410c13e..fed895dd2882 100644 --- a/code/game/dna/genes/goon_disabilities.dm +++ b/code/game/dna/genes/goon_disabilities.dm @@ -256,7 +256,7 @@ panel = "Mutant Powers" user_type = USER_TYPE_GENETIC - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 600 spell_flags = INCLUDEUSER @@ -300,7 +300,7 @@ panel = "Mutant Powers" user_type = USER_TYPE_GENETIC - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 200 spell_flags = INCLUDEUSER | STATALLOWED diff --git a/code/game/dna/genes/goon_powers.dm b/code/game/dna/genes/goon_powers.dm index cc31bbe3ab72..85dddfcbeeba 100644 --- a/code/game/dna/genes/goon_powers.dm +++ b/code/game/dna/genes/goon_powers.dm @@ -146,7 +146,7 @@ desc = "Drops the body temperature of another person." panel = "Mutant Powers" - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 600 spell_flags = WAIT_FOR_CLICK @@ -212,7 +212,7 @@ user_type = USER_TYPE_GENETIC panel = "Mutant Powers" - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 300 invocation_type = SpI_NONE @@ -427,7 +427,7 @@ user_type = USER_TYPE_GENETIC range = SELFCAST - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 60 spell_flags = INCLUDEUSER @@ -602,7 +602,7 @@ spell_flags = SELECTABLE invocation_type = SpI_NONE - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 100 valid_targets = list(/mob/living/carbon) diff --git a/code/game/dna/genes/powers.dm b/code/game/dna/genes/powers.dm index bec225b4bdf4..899272cffb2b 100644 --- a/code/game/dna/genes/powers.dm +++ b/code/game/dna/genes/powers.dm @@ -37,7 +37,7 @@ desc = "Lets you see through the eyes of others." panel = "Mutant Powers" - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 50 invocation_type = SpI_NONE @@ -124,7 +124,7 @@ name = "Telepathy" desc = "Speak into the minds of others. You must either hear them speak or examine them to make contact." panel = "Mutant Powers" - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 0 invocation_type = SpI_NONE range = GLOBALCAST //the world diff --git a/code/game/dna/genes/vg_powers.dm b/code/game/dna/genes/vg_powers.dm index 2656fe0341ab..1abf46ac29f0 100644 --- a/code/game/dna/genes/vg_powers.dm +++ b/code/game/dna/genes/vg_powers.dm @@ -59,7 +59,7 @@ Obviously, requires DNA2. user_type = USER_TYPE_GENETIC range = SELFCAST - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = HULK_COOLDOWN duration = HULK_DURATION @@ -127,7 +127,7 @@ Obviously, requires DNA2. user_type = USER_TYPE_GENETIC panel = "Mutant Powers" range = SELFCAST - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 50 invocation_type = SpI_NONE spell_flags = INCLUDEUSER diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index 977b422af9d3..7b334c88b2ea 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -473,7 +473,7 @@ user_type = USER_TYPE_ARTIFACT - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 30 SECONDS invocation_type = SpI_SHOUT invocation = "FA'R N' AL'ENC'ED" diff --git a/code/game/gamemodes/wizard/artifacts.dm b/code/game/gamemodes/wizard/artifacts.dm index d024feccdbc3..454f26f6bf31 100644 --- a/code/game/gamemodes/wizard/artifacts.dm +++ b/code/game/gamemodes/wizard/artifacts.dm @@ -5,7 +5,7 @@ var/abbreviation //For feedback var/one_use = FALSE var/list/spawned_items = list() - var/price = Sp_BASE_PRICE + var/price = SP_BASE_PRICE /datum/spellbook_artifact/proc/purchased(mob/living/user) to_chat(user, "You have purchased [name].") @@ -24,7 +24,7 @@ name = "Staff of Change" desc = "An artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself." abbreviation = "ST" - price = 2 * Sp_BASE_PRICE + price = 2 * SP_BASE_PRICE spawned_items = list(/obj/item/weapon/gun/energy/staff/change) /datum/spellbook_artifact/staff_of_polymorph @@ -102,14 +102,14 @@ name = "Spellbook Bundle" desc = "Feeling adventurous? Buy this bundle and receive seven random spellbooks! Who knows what spells you will get? (Warning, each spell book may only be used once! No refunds)." abbreviation = "SB" - price = 4 * Sp_BASE_PRICE + price = 4 * SP_BASE_PRICE spawned_items = list(/obj/item/weapon/storage/box/spellbook) /datum/spellbook_artifact/potion_bundle name = "Potion bundle" desc = "As a dead wizard once said, life is a bag of potions. You never know what you're gonna get." abbreviation = "PB" - price = 4 * Sp_BASE_PRICE + price = 4 * SP_BASE_PRICE spawned_items = list(/obj/item/weapon/storage/bag/potion/bundle) /datum/spellbook_artifact/lesser_potion_bundle @@ -122,7 +122,7 @@ name = "Predicted potion bundle" desc = "Contains 40 potions. I like the blue ones myself." abbreviation = "LPB" - price = 4 * Sp_BASE_PRICE + price = 4 * SP_BASE_PRICE spawned_items = list(/obj/item/weapon/storage/bag/potion/predicted_potion_bundle) /datum/spellbook_artifact/lesser_predicted_potion_bundle @@ -232,7 +232,7 @@ name = "Summon Artifacts" desc = "Share the secrets of the ancient world and bring peace to the station. Or chaos." abbreviation = "SA" - price = Sp_BASE_PRICE*2 + price = SP_BASE_PRICE*2 /datum/spellbook_artifact/summon_artifacts/can_buy(var/mob/user) //Only roundstart wizards may summon guns, magic, blades, or artifacts @@ -280,7 +280,7 @@ /datum/spellbook_artifact/santa_bundle name = "Become Santa Claus" desc = "Guess which station is on the naughty list?" - price = 3 * Sp_BASE_PRICE + price = 3 * SP_BASE_PRICE /datum/spellbook_artifact/santa_bundle/purchased(mob/living/carbon/human/H) ..() @@ -333,7 +333,7 @@ abbreviation = "TS-D" desc = "Exploits the magic of futurescience, tapping into the unfortunate target station's APCs, allowing you to destroy the stations lighting en-masse." one_use = TRUE - price = 0.25*Sp_BASE_PRICE + price = 0.25*SP_BASE_PRICE spawned_items = list(/obj/item/clothing/head/pumpkinhead) /datum/spellbook_artifact/darkness/purchased(mob/living/carbon/human/H) @@ -347,7 +347,7 @@ name = "Prestidigitation Bundle" abbreviation = "PTDB" desc = "A group of spells for general utility." - price = Sp_BASE_PRICE + price = SP_BASE_PRICE /datum/spellbook_artifact/prestidigitation/purchased(mob/living/carbon/human/H) ..() @@ -364,14 +364,14 @@ name = "Boots of Blinding Speed" abbreviation = "BS" desc = "Makes you much faster, but blinds you while you move." - price = 0.75 * Sp_BASE_PRICE + price = 0.75 * SP_BASE_PRICE spawned_items = list(/obj/item/clothing/shoes/blindingspeed) /datum/spellbook_artifact/nogunallowed name = "No Gun Allowed" abbreviation = "NGA" desc = "Forgo the use of guns in exchange for magical power. Some within the Wizard Federation have lobbied to make this spell a legal obligation. Non-refundable." - price = -1 * Sp_BASE_PRICE + price = -1 * SP_BASE_PRICE one_use = TRUE /datum/spellbook_artifact/nogunallowed/can_buy(var/mob/user) diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index b22a1452af3e..462308ee9ef3 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -1,4 +1,4 @@ -#define STARTING_USES 5 * Sp_BASE_PRICE +#define STARTING_USES 5 * SP_BASE_PRICE /obj/item/weapon/spellbook name = "spell book" @@ -22,30 +22,30 @@ var/list/available_artifacts = list() var/static/list/available_potions = list( - /obj/item/potion/healing = Sp_BASE_PRICE, - /obj/item/potion/transform = Sp_BASE_PRICE*0.5, - /obj/item/potion/toxin = Sp_BASE_PRICE*0.75, - /obj/item/potion/mana = Sp_BASE_PRICE*0.5, - /obj/item/potion/invisibility/major = Sp_BASE_PRICE*0.5, - /obj/item/potion/stoneskin = Sp_BASE_PRICE*0.5, - /obj/item/potion/speed/major = Sp_BASE_PRICE*0.5, - /obj/item/potion/zombie = Sp_BASE_PRICE*0.5, - /obj/item/potion/mutation/truesight/major = Sp_BASE_PRICE*0.25, - /obj/item/potion/mutation/strength/major = Sp_BASE_PRICE*0.25, - /obj/item/potion/speed = Sp_BASE_PRICE*0.25, - /obj/item/potion/random = Sp_BASE_PRICE*0.2, - /obj/item/potion/sword = Sp_BASE_PRICE*0.1, - /obj/item/potion/deception = Sp_BASE_PRICE*0.1, - /obj/item/potion/levitation = Sp_BASE_PRICE*0.1, - /obj/item/potion/fireball = Sp_BASE_PRICE*0.1, - /obj/item/potion/invisibility = Sp_BASE_PRICE*0.1, - /obj/item/potion/light = Sp_BASE_PRICE*0.05, - /obj/item/potion/fullness = Sp_BASE_PRICE*0.05, - /obj/item/potion/transparency = Sp_BASE_PRICE*0.05, - /obj/item/potion/paralysis = Sp_BASE_PRICE*0.05, - /obj/item/potion/mutation/strength = Sp_BASE_PRICE*0.05, - /obj/item/potion/mutation/truesight = Sp_BASE_PRICE*0.05, - /obj/item/potion/teleport = Sp_BASE_PRICE*0.05) + /obj/item/potion/healing = SP_BASE_PRICE, + /obj/item/potion/transform = SP_BASE_PRICE*0.5, + /obj/item/potion/toxin = SP_BASE_PRICE*0.75, + /obj/item/potion/mana = SP_BASE_PRICE*0.5, + /obj/item/potion/invisibility/major = SP_BASE_PRICE*0.5, + /obj/item/potion/stoneskin = SP_BASE_PRICE*0.5, + /obj/item/potion/speed/major = SP_BASE_PRICE*0.5, + /obj/item/potion/zombie = SP_BASE_PRICE*0.5, + /obj/item/potion/mutation/truesight/major = SP_BASE_PRICE*0.25, + /obj/item/potion/mutation/strength/major = SP_BASE_PRICE*0.25, + /obj/item/potion/speed = SP_BASE_PRICE*0.25, + /obj/item/potion/random = SP_BASE_PRICE*0.2, + /obj/item/potion/sword = SP_BASE_PRICE*0.1, + /obj/item/potion/deception = SP_BASE_PRICE*0.1, + /obj/item/potion/levitation = SP_BASE_PRICE*0.1, + /obj/item/potion/fireball = SP_BASE_PRICE*0.1, + /obj/item/potion/invisibility = SP_BASE_PRICE*0.1, + /obj/item/potion/light = SP_BASE_PRICE*0.05, + /obj/item/potion/fullness = SP_BASE_PRICE*0.05, + /obj/item/potion/transparency = SP_BASE_PRICE*0.05, + /obj/item/potion/paralysis = SP_BASE_PRICE*0.05, + /obj/item/potion/mutation/strength = SP_BASE_PRICE*0.05, + /obj/item/potion/mutation/truesight = SP_BASE_PRICE*0.05, + /obj/item/potion/teleport = SP_BASE_PRICE*0.05) var/uses = STARTING_USES var/max_uses = STARTING_USES @@ -53,7 +53,7 @@ var/op = 1 /obj/item/weapon/spellbook/admin - uses = 30 * Sp_BASE_PRICE + uses = 30 * SP_BASE_PRICE op = 0 /obj/item/weapon/spellbook/New() @@ -258,9 +258,9 @@ return switch(charge_type) - if(Sp_CHARGES) + if(SP_CHARGES) return " - [charges] charge\s" - if(Sp_RECHARGE) + if(SP_RECHARGE) return " - cooldown: [(charges/10)]s" /obj/item/weapon/spellbook/proc/get_spell_range_string(var/range) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index fbfee907171b..0449d6063b47 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -2076,7 +2076,7 @@ invocation_type = SpI_NONE panel = "Mech Modules" spell_flags = null - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 0 charge_counter = 0 hud_state = "mecha_equip" diff --git a/code/modules/mob/dead/observer/spells.dm b/code/modules/mob/dead/observer/spells.dm index 5412b54441b1..516b543b9ca0 100644 --- a/code/modules/mob/dead/observer/spells.dm +++ b/code/modules/mob/dead/observer/spells.dm @@ -70,7 +70,7 @@ var/global/list/boo_phrases_silicon=list( spell_flags = STATALLOWED | GHOSTCAST | INCLUDEUSER school = "transmutation" - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 0 invocation = "" invocation_type = SpI_NONE diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm index 833910c54089..685bdcb55a0d 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm @@ -26,7 +26,7 @@ Doesn't work on other aliens/AI.*/ hud_state = "alien_weeds" override_base = "alien" - charge_type = Sp_HOLDVAR|Sp_RECHARGE + charge_type = SP_HOLDVAR|SP_RECHARGE holder_var_type = "plasma" holder_var_amount = 50 insufficient_holder_msg = "Not enough plasma stored." @@ -57,7 +57,7 @@ Doesn't work on other aliens/AI.*/ hud_state = "alien_whisper" override_base = "alien" - charge_type = Sp_HOLDVAR + charge_type = SP_HOLDVAR holder_var_type = "plasma" holder_var_amount = 10 insufficient_holder_msg = "Not enough plasma stored." @@ -105,7 +105,7 @@ Doesn't work on other aliens/AI.*/ hud_state = "alien_transfer" override_base = "alien" - charge_type = Sp_HOLDVAR + charge_type = SP_HOLDVAR holder_var_type = "plasma" insufficient_holder_msg = "Not enough plasma stored." @@ -135,7 +135,7 @@ Doesn't work on other aliens/AI.*/ hud_state = "alien_neurotoxin" override_base = "alien" - charge_type = Sp_HOLDVAR|Sp_RECHARGE + charge_type = SP_HOLDVAR|SP_RECHARGE holder_var_type = "plasma" holder_var_amount = 50 insufficient_holder_msg = "Not enough plasma stored." @@ -188,7 +188,7 @@ Doesn't work on other aliens/AI.*/ hud_state = "alien_resin" override_base = "alien" - charge_type = Sp_HOLDVAR + charge_type = SP_HOLDVAR holder_var_type = "plasma" holder_var_amount = 75 insufficient_holder_msg = "Not enough plasma stored." @@ -205,7 +205,7 @@ Doesn't work on other aliens/AI.*/ override_base = "alien" spell_flags = WAIT_FOR_CLICK - charge_type = Sp_HOLDVAR|Sp_RECHARGE + charge_type = SP_HOLDVAR|SP_RECHARGE charge_max = 8 SECONDS holder_var_type = "plasma" holder_var_amount = 200 @@ -256,7 +256,7 @@ Doesn't work on other aliens/AI.*/ hud_state = "alien_egg" override_base = "alien" - charge_type = Sp_HOLDVAR + charge_type = SP_HOLDVAR holder_var_type = "plasma" holder_var_amount = 75 insufficient_holder_msg = "Not enough plasma stored." @@ -283,7 +283,7 @@ Doesn't work on other aliens/AI.*/ hud_state = "alien_evolve" override_base = "alien" - charge_type = Sp_HOLDVAR + charge_type = SP_HOLDVAR insufficient_holder_msg = "You are not ready for this kind of evolution." cast_sound = 'sound/effects/evolve.ogg' diff --git a/code/modules/mob/living/carbon/species_powers.dm b/code/modules/mob/living/carbon/species_powers.dm index a4bc9532b3ed..a56930262c2b 100644 --- a/code/modules/mob/living/carbon/species_powers.dm +++ b/code/modules/mob/living/carbon/species_powers.dm @@ -8,7 +8,7 @@ user_type = USER_TYPE_GENETIC range = SELFCAST - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE spell_flags = INCLUDEUSER @@ -31,7 +31,7 @@ override_base = "racial" hud_state = "racial_regen_limbs" spell_flags = INCLUDEUSER - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 100 range = SELFCAST cast_sound = 'sound/effects/squelch1.ogg' diff --git a/code/modules/mob/living/silicon/robot/robot_subtypes/starman.dm b/code/modules/mob/living/silicon/robot/robot_subtypes/starman.dm index 8c9685ce51b1..e8d5722d0734 100644 --- a/code/modules/mob/living/silicon/robot/robot_subtypes/starman.dm +++ b/code/modules/mob/living/silicon/robot/robot_subtypes/starman.dm @@ -77,7 +77,7 @@ desc = "Forces the menacing tunes of the Starman into the minds of all your enemies. And you." hud_state = "time_future" invocation_type = SpI_NONE - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 10 var/list/starman_music = list('sound/music/battle_against_a_machine.ogg', 'sound/music/imbossible.ogg') @@ -105,7 +105,7 @@ desc = "Teleport to the targeted location." hud_state = "starman_warp" school = "evocation" - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 60 invocation_type = SpI_NONE range = 8 @@ -139,7 +139,7 @@ name = "Psi Lifeup Alpha" desc = "Slightly heal yourself." hud_state = "psi_lifeup_alpha" - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 250 invocation_type = SpI_NONE var/heal_amount = 30 @@ -174,7 +174,7 @@ desc = "Generates a psionic barrier in the given direction." hud_state = "psi_shield_beta" school = "evocation" - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 150 invocation_type = SpI_NONE range = 8 @@ -234,7 +234,7 @@ school = "conjuration" charge_max = 1800 - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE invocation_type = SpI_NONE duration = 100 @@ -285,7 +285,7 @@ school = "conjuration" charge_max = 300 - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE invocation_type = SpI_NONE duration = 100 diff --git a/code/modules/mob/living/simple_animal/hostile/arcane_golem.dm b/code/modules/mob/living/simple_animal/hostile/arcane_golem.dm index 6196af977a23..f63d86a19edd 100644 --- a/code/modules/mob/living/simple_animal/hostile/arcane_golem.dm +++ b/code/modules/mob/living/simple_animal/hostile/arcane_golem.dm @@ -98,7 +98,7 @@ if(istype(master)) to_chat(master, "As your golem is destroyed, your mana leaks away!") for(var/spell/S in master.spell_list) - if(S.charge_type & Sp_RECHARGE) + if(S.charge_type & SP_RECHARGE) if(S.charge_counter == S.charge_max) //Spell is fully charged - let the proc handle everything S.take_charge() else //Spell is on cooldown and already recharging - there's no need to call S.process(), just reset charges to 0 diff --git a/code/modules/mob/living/simple_animal/hostile/grue_powers.dm b/code/modules/mob/living/simple_animal/hostile/grue_powers.dm index f65503cc2da0..648789847455 100644 --- a/code/modules/mob/living/simple_animal/hostile/grue_powers.dm +++ b/code/modules/mob/living/simple_animal/hostile/grue_powers.dm @@ -7,7 +7,7 @@ override_base = "grue" spell_flags = WAIT_FOR_CLICK - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 0 SECONDS range = 1 valid_targets = list(/mob/living/carbon) @@ -33,7 +33,7 @@ hud_state = "grue_vent" override_base = "grue" range = 1 - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 0 /spell/aoe_turf/grue_ventcrawl/cast(list/targets, mob/living/simple_animal/hostile/grue/user) @@ -47,7 +47,7 @@ hud_state = "grue_hide" override_base = "grue" range = 0 - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 0 /spell/aoe_turf/grue_hide/cast(list/targets, mob/living/simple_animal/hostile/grue/user) @@ -61,7 +61,7 @@ hud_state = "grue_egg" override_base = "grue" range = 0 - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 0 /spell/aoe_turf/grue_egg/cast(list/targets, mob/living/simple_animal/hostile/grue/user) @@ -75,7 +75,7 @@ hud_state = "grue_moult" override_base = "grue" range = 0 - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 0 /spell/aoe_turf/grue_moult/cast(list/targets, mob/living/simple_animal/hostile/grue/user) @@ -89,7 +89,7 @@ panel = "Grue" override_base = "grue" range = 0 - charge_type = Sp_GRADUAL | Sp_HOLDVAR + charge_type = SP_GRADUAL | SP_HOLDVAR holder_var_type = "nutrienergy" holder_var_amount = 0.1 //Around 1 nutrienergy per second. holder_var_name = "nutritive energy" @@ -114,7 +114,7 @@ hud_state = "grue_blink" override_base = "grue" range = 0 - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 45 SECONDS still_recharging_msg = "You need to reorient yourself before doing that again." diff --git a/code/modules/mob/living/simple_animal/hostile/pulse_demon/pulsedemon.dm b/code/modules/mob/living/simple_animal/hostile/pulse_demon/pulsedemon.dm index 2531e8c61f94..48ce81f2a265 100644 --- a/code/modules/mob/living/simple_animal/hostile/pulse_demon/pulsedemon.dm +++ b/code/modules/mob/living/simple_animal/hostile/pulse_demon/pulsedemon.dm @@ -115,9 +115,9 @@ ..() for(var/spell/S in possible_spells) add_spell(S, "pulsedemon_spell_ready", /obj/abstract/screen/movable/spell_master/pulse_demon) - while(S.can_improve(Sp_POWER)) + while(S.can_improve(SP_POWER)) S.empower_spell() - while(S.can_improve(Sp_SPEED)) + while(S.can_improve(SP_SPEED)) S.quicken_spell() possible_spells -= S QDEL_LIST_CUT(possible_upgrades) diff --git a/code/modules/mob/living/simple_animal/hostile/pulse_demon/pulsedemon_powers.dm b/code/modules/mob/living/simple_animal/hostile/pulse_demon/pulsedemon_powers.dm index ffa4c6170bf1..b4d13ef26f10 100644 --- a/code/modules/mob/living/simple_animal/hostile/pulse_demon/pulsedemon_powers.dm +++ b/code/modules/mob/living/simple_animal/hostile/pulse_demon/pulsedemon_powers.dm @@ -133,8 +133,8 @@ if(!S.invisible) //Do not list abilities that aren't meant to be shown, like drain toggling or abilities var/icon/spellimg = icon('icons/mob/screen_spells.dmi', S.hud_state) dat += " [S.name] " - dat += "[S.can_improve(Sp_SPEED) ? "Quicken for [S.quicken_cost]W ([S.spell_levels[Sp_SPEED]]/[S.level_max[Sp_SPEED]])" : "Quicken (MAXED)"] " - dat += "[S.can_improve(Sp_POWER) ? "Empower for [S.empower_cost]W ([S.spell_levels[Sp_POWER]]/[S.level_max[Sp_POWER]])" : "Empower (MAXED)"]
" + dat += "[S.can_improve(SP_SPEED) ? "Quicken for [S.quicken_cost]W ([S.spell_levels[SP_SPEED]]/[S.level_max[SP_SPEED]])" : "Quicken (MAXED)"] " + dat += "[S.can_improve(SP_POWER) ? "Empower for [S.empower_cost]W ([S.spell_levels[SP_POWER]]/[S.level_max[SP_POWER]])" : "Empower (MAXED)"]
" if(show_desc) dat += "[S.desc]
" dat += "
" @@ -180,7 +180,7 @@ if(PDS.quicken_cost > charge) to_chat(src,"You cannot afford this upgrade.") return - if(PDS.spell_levels[Sp_SPEED] >= PDS.level_max[Sp_SPEED]) + if(PDS.spell_levels[SP_SPEED] >= PDS.level_max[SP_SPEED]) to_chat(src,"You cannot quicken this ability any further.") return @@ -194,7 +194,7 @@ if(PDS.empower_cost > charge) to_chat(src,"You cannot afford this upgrade.") return - if(PDS.spell_levels[Sp_POWER] >= PDS.level_max[Sp_POWER]) + if(PDS.spell_levels[SP_POWER] >= PDS.level_max[SP_POWER]) to_chat(src,"You cannot empower this ability any further.") return @@ -214,7 +214,7 @@ user_type = USER_TYPE_PULSEDEMON school = "pulse demon" spell_flags = 0 - level_max = list(Sp_TOTAL = 6, Sp_SPEED = 3, Sp_POWER = 3) + level_max = list(SP_TOTAL = 6, SP_SPEED = 3, SP_POWER = 3) override_base = "pulsedemon" hud_state = "pd_icon_base" @@ -252,9 +252,9 @@ to_chat(PD, "You use [charge_cost] to cast [name].") /spell/pulse_demon/empower_spell() // Makes spells use less charge - if(!can_improve(Sp_POWER)) + if(!can_improve(SP_POWER)) return 0 - spell_levels[Sp_POWER]++ + spell_levels[SP_POWER]++ var/new_name = generate_name() charge_cost = round(charge_cost/1.5, 1) // -33%/-56%/-70% charge cost . = "You have improved [name] into [new_name]. It now costs [charge_cost]W to cast." @@ -262,9 +262,9 @@ empower_cost = round(empower_cost * 1.5, 1) /spell/pulse_demon/quicken_spell() - if(!can_improve(Sp_SPEED)) + if(!can_improve(SP_SPEED)) return 0 - spell_levels[Sp_SPEED]++ + spell_levels[SP_SPEED]++ var/new_name = generate_name() charge_max = round(charge_max/1.5, 1) // -33%/-56%/-70% cooldown reduction . = "You have improved [name] into [new_name]. Its cooldown is now [round(charge_max/10, 1)] seconds." @@ -274,9 +274,9 @@ /spell/pulse_demon/proc/generate_name() var/original_name = initial(name) var/power_name = "" - var/power_level = level_max[Sp_POWER] - spell_levels[Sp_POWER] + var/power_level = level_max[SP_POWER] - spell_levels[SP_POWER] var/speed_name = "" - var/speed_level = level_max[Sp_SPEED] - spell_levels[Sp_SPEED] + var/speed_level = level_max[SP_SPEED] - spell_levels[SP_SPEED] if(power_level == 0 && speed_level == 0) //Spell is maxed out return "Perfected [original_name]" switch(power_level) //We add an extra space so that the words are properly separated in the name regardless of upgrade status. @@ -332,7 +332,7 @@ range = 10 spell_flags = WAIT_FOR_CLICK duration = 20 - level_max = list(Sp_TOTAL = 2, Sp_POWER = 0, Sp_SPEED = 2) + level_max = list(SP_TOTAL = 2, SP_POWER = 0, SP_SPEED = 2) hud_state = "pd_drain" charge_cost = 100 @@ -366,7 +366,7 @@ range = 5 spell_flags = WAIT_FOR_CLICK duration = 20 - level_max = list(Sp_TOTAL = 3, Sp_POWER = 0, Sp_SPEED = 3) + level_max = list(SP_TOTAL = 3, SP_POWER = 0, SP_SPEED = 3) hud_state = "pd_cablehop" charge_cost = 5000 @@ -436,7 +436,7 @@ range = 10 spell_flags = WAIT_FOR_CLICK duration = 0 //you need to wait through the APC hack timer so this doesn't need another cooldown - level_max = list(Sp_TOTAL = 0) + level_max = list(SP_TOTAL = 0) hud_state = "pd_hijack" charge_cost = 10000 @@ -469,7 +469,7 @@ range = 10 spell_flags = WAIT_FOR_CLICK duration = 20 - level_max = list(Sp_TOTAL = 2, Sp_POWER = 0, Sp_SPEED = 2) + level_max = list(SP_TOTAL = 2, SP_POWER = 0, SP_SPEED = 2) hud_state = "pd_emag" charge_cost = 20000 @@ -505,7 +505,7 @@ range = 10 spell_flags = WAIT_FOR_CLICK duration = 20 - level_max = list(Sp_TOTAL = 2, Sp_POWER = 0, Sp_SPEED = 2) + level_max = list(SP_TOTAL = 2, SP_POWER = 0, SP_SPEED = 2) hud_state = "wiz_tech" charge_cost = 10000 @@ -533,7 +533,7 @@ /spell/pulse_demon/sustaincharge - level_max = list(Sp_TOTAL = 2, Sp_SPEED = 0, Sp_POWER = 2) // Why would cooldown be here? + level_max = list(SP_TOTAL = 2, SP_SPEED = 0, SP_POWER = 2) // Why would cooldown be here? charge_max = 0 SECONDS // See? hud_state = "pd_cableleave" name = "Self-Sustaining Charge" @@ -563,7 +563,7 @@ var/temp = "" name = initial(name) - switch(level_max[Sp_POWER] - spell_levels[Sp_POWER]) + switch(level_max[SP_POWER] - spell_levels[SP_POWER]) if(2) temp = "You have improved [name] into Ambulatory [name]." name = "Ambulatory [name]" @@ -588,7 +588,7 @@ range = 10 spell_flags = WAIT_FOR_CLICK duration = 20 - level_max = list(Sp_TOTAL = 1, Sp_POWER = 0, Sp_SPEED = 1) + level_max = list(SP_TOTAL = 1, SP_POWER = 0, SP_SPEED = 1) hud_state = "overload" charge_cost = 50000 diff --git a/code/modules/mob/living/simple_animal/shade_powers.dm b/code/modules/mob/living/simple_animal/shade_powers.dm index 960d1edf81ef..838256da8101 100644 --- a/code/modules/mob/living/simple_animal/shade_powers.dm +++ b/code/modules/mob/living/simple_animal/shade_powers.dm @@ -96,7 +96,7 @@ hud_state = "souldblade_move" invocation_type = SpI_NONE - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 0 range = 0 spell_flags = null @@ -117,7 +117,7 @@ hud_state = "soulblade_spin" invocation_type = SpI_NONE - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 0 range = 0 spell_flags = null @@ -234,7 +234,7 @@ hud_state = "soulblade_perforate" invocation_type = SpI_NONE - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 40 range = 0 spell_flags = null @@ -309,7 +309,7 @@ hud_state = "soulblade_mend" invocation_type = SpI_NONE - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 20 range = 0 spell_flags = null @@ -361,7 +361,7 @@ hud_state = "soulblade_harm" invocation_type = SpI_NONE - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 20 range = 0 spell_flags = null diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 1f0a1b202cac..bae22e2ea982 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1476,11 +1476,11 @@ Use this proc preferably at the end of an equipment loadout if((!S.connected_button) || !statpanel(S.panel)) continue //Not showing the noclothes spell var/charge_type = S.charge_type - if(charge_type & Sp_HOLDVAR) + if(charge_type & SP_HOLDVAR) statpanel(S.panel,"Required [S.holder_var_type]: [S.holder_var_amount]",S.connected_button) - else if(charge_type & Sp_CHARGES) + else if(charge_type & SP_CHARGES) statpanel(S.panel,"[S.charge_max? "[S.charge_counter]/[S.charge_max] charges" : "Free"]",S.connected_button) - else if(charge_type & Sp_RECHARGE || charge_type & Sp_GRADUAL) + else if(charge_type & SP_RECHARGE || charge_type & SP_GRADUAL) statpanel(S.panel,"[S.charge_max? "[S.charge_counter/10.0]/[S.charge_max/10] seconds" : "Free"]",S.connected_button) sleep(world.tick_lag * 2) diff --git a/code/modules/reagents/reagents/reagents_ethanol.dm b/code/modules/reagents/reagents/reagents_ethanol.dm index e6738a22b0d6..b873a77feedd 100644 --- a/code/modules/reagents/reagents/reagents_ethanol.dm +++ b/code/modules/reagents/reagents/reagents_ethanol.dm @@ -581,7 +581,7 @@ fakespell.hud_state = fromwhichwetake.hud_state fakespell.invocation = "MAH'JIK" fakespell.invocation_type = SpI_SHOUT - fakespell.charge_type = Sp_CHARGES + fakespell.charge_type = SP_CHARGES fakespell.charge_counter = 0 fakespell.charge_max = 1 if(prob(20)) @@ -597,7 +597,7 @@ var/mob/living/carbon/human/H = M var/spell/thisisdumb = new /spell/targeted/equip_item/robesummon H.add_spell(thisisdumb) - thisisdumb.charge_type = Sp_CHARGES + thisisdumb.charge_type = SP_CHARGES thisisdumb.charge_counter = 1 thisisdumb.charge_max = 1 H.cast_spell(thisisdumb,list(H)) diff --git a/code/modules/spells/aoe_turf/blink.dm b/code/modules/spells/aoe_turf/blink.dm index f752151a5f7a..651711313a64 100644 --- a/code/modules/spells/aoe_turf/blink.dm +++ b/code/modules/spells/aoe_turf/blink.dm @@ -15,7 +15,7 @@ cooldown_min = 5 //4 deciseconds reduction per rank hud_state = "wiz_blink" selection_type = "range" - quicken_price = Sp_BASE_PRICE + quicken_price = SP_BASE_PRICE /spell/aoe_turf/blink/cast(var/list/targets, mob/user) if(!targets.len) diff --git a/code/modules/spells/aoe_turf/conjure/arcane_golem.dm b/code/modules/spells/aoe_turf/conjure/arcane_golem.dm index 7b06b1192211..d154c15b22db 100644 --- a/code/modules/spells/aoe_turf/conjure/arcane_golem.dm +++ b/code/modules/spells/aoe_turf/conjure/arcane_golem.dm @@ -9,8 +9,8 @@ charge_max = 20 SECONDS cooldown_min = 1 SECONDS - spell_levels = list(Sp_SPEED = 0, Sp_AMOUNT = 0) - level_max = list(Sp_TOTAL = 3, Sp_SPEED = 1, Sp_AMOUNT = 2) //each level of power grants 1 additional target. + spell_levels = list(SP_SPEED = 0, SP_AMOUNT = 0) + level_max = list(SP_TOTAL = 3, SP_SPEED = 1, SP_AMOUNT = 2) //each level of power grants 1 additional target. spell_flags = NEEDSCLOTHES | Z2NOCAST | IS_HARMFUL invocation = "ARCANUM VIRIUM CONGREGABO" @@ -103,8 +103,8 @@ //UPGRADES /spell/aoe_turf/conjure/arcane_golem/apply_upgrade(upgrade_type) switch(upgrade_type) - if(Sp_AMOUNT) - spell_levels[Sp_AMOUNT]++ + if(SP_AMOUNT) + spell_levels[SP_AMOUNT]++ golem_limit += ADDITIONAL_GOLEMS_PER_UPGRADE_LEVEL return "You can now sustain [golem_limit] golems at once." @@ -115,8 +115,8 @@ /spell/aoe_turf/conjure/arcane_golem/get_upgrade_info(upgrade_type) switch(upgrade_type) - if(Sp_AMOUNT) - if(spell_levels[Sp_AMOUNT] >= level_max[Sp_AMOUNT]) + if(SP_AMOUNT) + if(spell_levels[SP_AMOUNT] >= level_max[SP_AMOUNT]) return "You can already sustain the maximum about of golems!" return "Gain the ability to sustain [golem_limit + ADDITIONAL_GOLEMS_PER_UPGRADE_LEVEL] golems at once." diff --git a/code/modules/spells/aoe_turf/conjure/doppelganger.dm b/code/modules/spells/aoe_turf/conjure/doppelganger.dm index 45574a416af6..053323eebce0 100644 --- a/code/modules/spells/aoe_turf/conjure/doppelganger.dm +++ b/code/modules/spells/aoe_turf/conjure/doppelganger.dm @@ -6,8 +6,8 @@ summon_type = list(/mob/living/simple_animal/hostile/humanoid/wizard/doppelganger/melee) - price = Sp_BASE_PRICE / 2 - level_max = list(Sp_TOTAL = 2, Sp_SPEED = 2) + price = SP_BASE_PRICE / 2 + level_max = list(SP_TOTAL = 2, SP_SPEED = 2) charge_max = 300 cooldown_reduc = 100 cooldown_min = 100 diff --git a/code/modules/spells/aoe_turf/conjure/forcewall.dm b/code/modules/spells/aoe_turf/conjure/forcewall.dm index c77c64a5353f..4899525c2b5e 100644 --- a/code/modules/spells/aoe_turf/conjure/forcewall.dm +++ b/code/modules/spells/aoe_turf/conjure/forcewall.dm @@ -15,7 +15,7 @@ hud_state = "wiz_shield" - price = 0.5 * Sp_BASE_PRICE //Half of the normal spell price + price = 0.5 * SP_BASE_PRICE //Half of the normal spell price /spell/aoe_turf/conjure/forcewall/mime name = "Invisible wall" diff --git a/code/modules/spells/aoe_turf/conjure/pitbulls.dm b/code/modules/spells/aoe_turf/conjure/pitbulls.dm index d06ba463a8a1..05e9fa08a4b1 100644 --- a/code/modules/spells/aoe_turf/conjure/pitbulls.dm +++ b/code/modules/spells/aoe_turf/conjure/pitbulls.dm @@ -7,8 +7,8 @@ summon_type = list(/mob/living/simple_animal/hostile/pitbull/summoned_pitbull) summon_amt = 3 - price = Sp_BASE_PRICE - level_max = list(Sp_TOTAL = 3, Sp_SPEED = 2, Sp_POWER = 1) //empower makes them SMASHED and SLAMMED + price = SP_BASE_PRICE + level_max = list(SP_TOTAL = 3, SP_SPEED = 2, SP_POWER = 1) //empower makes them SMASHED and SLAMMED charge_max = 300 cooldown_reduc = 100 cooldown_min = 100 @@ -17,13 +17,13 @@ spell_flags = NEEDSCLOTHES hud_state = "pitbull" cast_sound = 'sound/voice/pitbullbark.ogg' - quicken_price = Sp_BASE_PRICE + quicken_price = SP_BASE_PRICE var/empowered /spell/aoe_turf/conjure/pitbull/empower_spell() ..() empowered += 1 - spell_levels[Sp_POWER]++ + spell_levels[SP_POWER]++ . = "You have perfected the SMASHED and SLAMMED summon." /spell/aoe_turf/conjure/pitbull/invocation(mob/user, list/targets) diff --git a/code/modules/spells/aoe_turf/conjure/pontiac.dm b/code/modules/spells/aoe_turf/conjure/pontiac.dm index 638e00cac600..789c7eb371f3 100644 --- a/code/modules/spells/aoe_turf/conjure/pontiac.dm +++ b/code/modules/spells/aoe_turf/conjure/pontiac.dm @@ -7,13 +7,13 @@ user_type = USER_TYPE_WIZARD specialization = SSUTILITY - charge_type = Sp_CHARGES + charge_type = SP_CHARGES charge_max = 1 school = "conjuration" spell_flags = Z2NOCAST invocation = "NO F'AT C'HX" invocation_type = SpI_SHOUT - level_max = list(Sp_TOTAL = 0) + level_max = list(SP_TOTAL = 0) range = 0 summon_type = list(/obj/structure/bed/chair/vehicle/firebird) diff --git a/code/modules/spells/aoe_turf/conjure/snakes.dm b/code/modules/spells/aoe_turf/conjure/snakes.dm index b70aba919818..4029fae83905 100644 --- a/code/modules/spells/aoe_turf/conjure/snakes.dm +++ b/code/modules/spells/aoe_turf/conjure/snakes.dm @@ -6,7 +6,7 @@ summon_type = list(/mob/living/simple_animal/cat/snek/wizard) - price = Sp_BASE_PRICE / 2 + price = SP_BASE_PRICE / 2 range = 3 charge_max = 300 invocation = "WI'L OV SHNISSUGAH" diff --git a/code/modules/spells/aoe_turf/conjure/snowmobile.dm b/code/modules/spells/aoe_turf/conjure/snowmobile.dm index d8ad6894b24e..58b1dd9bf925 100644 --- a/code/modules/spells/aoe_turf/conjure/snowmobile.dm +++ b/code/modules/spells/aoe_turf/conjure/snowmobile.dm @@ -3,7 +3,7 @@ desc = "Time to Sleigh some No-gooders." user_type = USER_TYPE_OTHER // Unused as far as I am aware. - charge_type = Sp_CHARGES + charge_type = SP_CHARGES charge_max = 1 school = "conjuration" spell_flags = Z2NOCAST diff --git a/code/modules/spells/aoe_turf/fall.dm b/code/modules/spells/aoe_turf/fall.dm index 785e5a4cd1d1..12fc34671ce0 100644 --- a/code/modules/spells/aoe_turf/fall.dm +++ b/code/modules/spells/aoe_turf/fall.dm @@ -19,7 +19,7 @@ var/global/list/falltempoverlays = list() range = 6 cooldown_min = 200 cooldown_reduc = 100 - level_max = list(Sp_TOTAL = 3, Sp_SPEED = 3, Sp_POWER = 3) + level_max = list(SP_TOTAL = 3, SP_SPEED = 3, SP_POWER = 3) hud_state = "wiz_timestop" var/image/aoe_underlay var/list/oureffects = list() @@ -31,9 +31,9 @@ var/global/list/falltempoverlays = list() #define duration_increase_per_level 10 /spell/aoe_turf/fall/empower_spell() - if(!can_improve(Sp_POWER)) + if(!can_improve(SP_POWER)) return 0 - spell_levels[Sp_POWER]++ + spell_levels[SP_POWER]++ range++ sleeptime += duration_increase_per_level var/upgrade_desc = "Your control over time strengthens, you can now stop time for [sleeptime/10] second\s and in a radius of [range*2] meter\s." @@ -41,8 +41,8 @@ var/global/list/falltempoverlays = list() return upgrade_desc /spell/aoe_turf/fall/get_upgrade_info(upgrade_type, level) - if(upgrade_type == Sp_POWER) - if(spell_levels[Sp_POWER] >= level_max[Sp_POWER]) + if(upgrade_type == SP_POWER) + if(spell_levels[SP_POWER] >= level_max[SP_POWER]) return "The spell can't be made any more powerful than this!" return "Increase the spell's duration by [duration_increase_per_level/10] second\s and radius by 2 meters." return ..() diff --git a/code/modules/spells/aoe_turf/glare.dm b/code/modules/spells/aoe_turf/glare.dm index 5e9fb54ae198..9d42f139a891 100644 --- a/code/modules/spells/aoe_turf/glare.dm +++ b/code/modules/spells/aoe_turf/glare.dm @@ -6,7 +6,7 @@ school = "vampire" user_type = USER_TYPE_VAMPIRE - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 3 MINUTES invocation_type = SpI_NONE range = 3 diff --git a/code/modules/spells/aoe_turf/hangcurse.dm b/code/modules/spells/aoe_turf/hangcurse.dm index 3eb86bafa0ab..b323abaa4201 100644 --- a/code/modules/spells/aoe_turf/hangcurse.dm +++ b/code/modules/spells/aoe_turf/hangcurse.dm @@ -21,13 +21,13 @@ Removes letters in the afflicted's sentences like the virology symptom, others m cooldown_min = 100 var/letters_retained = 12 - level_max = list(Sp_TOTAL = 6, Sp_SPEED = 4, Sp_POWER = 2) + level_max = list(SP_TOTAL = 6, SP_SPEED = 4, SP_POWER = 2) hud_state = "wiz_hangman" /spell/aoe_turf/hangman/get_upgrade_info(upgrade_type, level) - if(upgrade_type == Sp_POWER) - if(spell_levels[Sp_POWER] >= level_max[Sp_POWER]) + if(upgrade_type == SP_POWER) + if(spell_levels[SP_POWER] >= level_max[SP_POWER]) if(prob(10)) return "Th__ _p_ll _lr__dy r_mov__ __ m_ny l_tt_r_ __ _t c_n!" return "This spell already removes as many letters as it can!" @@ -35,11 +35,11 @@ Removes letters in the afflicted's sentences like the virology symptom, others m return ..() /spell/aoe_turf/hangman/empower_spell() - spell_levels[Sp_POWER]++ + spell_levels[SP_POWER]++ letters_retained /= 1.5 - switch(spell_levels[Sp_POWER]) + switch(spell_levels[SP_POWER]) if(0) name = "Curse of the Hangman" invocation = "VIR'O RO'UGE" diff --git a/code/modules/spells/aoe_turf/knock.dm b/code/modules/spells/aoe_turf/knock.dm index b8ed9d7081f9..98ed67a4e44a 100644 --- a/code/modules/spells/aoe_turf/knock.dm +++ b/code/modules/spells/aoe_turf/knock.dm @@ -15,7 +15,7 @@ hud_state = "wiz_knock" - price = 0.5 * Sp_BASE_PRICE //Half of the normal spell price + price = 0.5 * SP_BASE_PRICE //Half of the normal spell price /spell/aoe_turf/knock/cast(list/targets) for(var/turf/T in targets) diff --git a/code/modules/spells/aoe_turf/lightbulb.dm b/code/modules/spells/aoe_turf/lightbulb.dm index 361c3b69402f..86cfbca9289d 100644 --- a/code/modules/spells/aoe_turf/lightbulb.dm +++ b/code/modules/spells/aoe_turf/lightbulb.dm @@ -17,7 +17,7 @@ hud_state = "blackout" - price = 0.25 * Sp_BASE_PRICE + price = 0.25 * SP_BASE_PRICE /spell/aoe_turf/lightbulb/cast(list/targets) diff --git a/code/modules/spells/aoe_turf/magic_wardrobe.dm b/code/modules/spells/aoe_turf/magic_wardrobe.dm index 72d2155d0f05..09941c6f37d7 100644 --- a/code/modules/spells/aoe_turf/magic_wardrobe.dm +++ b/code/modules/spells/aoe_turf/magic_wardrobe.dm @@ -11,9 +11,9 @@ invocation_type = SpI_SHOUT invocation = "NAR'NI'AH" summon_type = list(/obj/structure/closet/magical_wardrobe) - price = 0.75 * Sp_BASE_PRICE - spell_levels = list(Sp_SPEED = 0, Sp_POWER = 0, Sp_MOVE = 0, Sp_AMOUNT = 0) - level_max = list(Sp_TOTAL = 8, Sp_SPEED = 3, Sp_POWER = 1, Sp_MOVE = 1, Sp_AMOUNT = 4) + price = 0.75 * SP_BASE_PRICE + spell_levels = list(SP_SPEED = 0, SP_POWER = 0, SP_MOVE = 0, SP_AMOUNT = 0) + level_max = list(SP_TOTAL = 8, SP_SPEED = 3, SP_POWER = 1, SP_MOVE = 1, SP_AMOUNT = 4) var/obj/structure/closet/magical_wardrobe/magicCloset = null var/spell/targeted/magical_wardrobe_recall/mWRecall = null @@ -36,16 +36,16 @@ /spell/aoe_turf/conjure/magical_wardrobe/apply_upgrade(upgrade_type) switch(upgrade_type) - if(Sp_SPEED) + if(SP_SPEED) wardrobeHealth += 25 return quicken_spell() - if(Sp_POWER) + if(SP_POWER) wardrobeHealth += 25 - spell_levels[Sp_POWER]++ + spell_levels[SP_POWER]++ return "You no longer suffer backlash when your wardrobe is destroyed." - if(Sp_MOVE) + if(SP_MOVE) if(isliving(usr)) //Spellcode - spell_levels[Sp_MOVE]++ + spell_levels[SP_MOVE]++ var/mob/living/user = usr wardrobeHealth += 25 mWSummon = new /spell/magical_wardrobe_summon @@ -56,38 +56,38 @@ user.mind.wizard_spells += mWSummon user.add_spell(mWSummon) return "You may now summon your wardrobe to you." - if(Sp_AMOUNT) + if(SP_AMOUNT) wardrobeHealth += 50 - spell_levels[Sp_AMOUNT]++ + spell_levels[SP_AMOUNT]++ return "Your wardrobe is both sturdier and more fashionable." //This exists because it took 5 seconds and might be good for a gimmick. No one should buy this. /spell/aoe_turf/conjure/magical_wardrobe/get_upgrade_price(upgrade_type) switch(upgrade_type) - if(Sp_SPEED) + if(SP_SPEED) return 5 - if(Sp_POWER) + if(SP_POWER) return 10 - if(Sp_MOVE) + if(SP_MOVE) return 5 - if(Sp_AMOUNT) + if(SP_AMOUNT) return 10 /spell/aoe_turf/conjure/magical_wardrobe/get_upgrade_info(upgrade_type, level) - if(upgrade_type == Sp_SPEED) - if(spell_levels[Sp_SPEED] >= level_max[Sp_SPEED]) + if(upgrade_type == SP_SPEED) + if(spell_levels[SP_SPEED] >= level_max[SP_SPEED]) return "The spell can't be made any quicker than this!" - var/formula = round((initial_charge_max - cooldown_min)/level_max[Sp_SPEED]) + var/formula = round((initial_charge_max - cooldown_min)/level_max[SP_SPEED]) return "Decreases the cooldown on summoning a new wardrobe by [formula/10]. Does not affect the recall or summon spells. Also increases its durability." - if(upgrade_type == Sp_MOVE) - if(spell_levels[Sp_MOVE] >= level_max[Sp_MOVE]) + if(upgrade_type == SP_MOVE) + if(spell_levels[SP_MOVE] >= level_max[SP_MOVE]) return "You can already summon the wardrobe to your location!" return "Allows you to summon your wardrobe to your location. Also increases its durability." - if(upgrade_type == Sp_POWER) - if(spell_levels[Sp_POWER] >= level_max[Sp_POWER]) + if(upgrade_type == SP_POWER) + if(spell_levels[SP_POWER] >= level_max[SP_POWER]) return "You are already immune to the magical backlash of your wardrobe getting destroyed!" return "Prevents magical backlash from affecting you when your wardrobe is destroyed. Also increases its durability." - if(upgrade_type == Sp_AMOUNT) - if(spell_levels[Sp_AMOUNT] >= level_max[Sp_AMOUNT]) + if(upgrade_type == SP_AMOUNT) + if(spell_levels[SP_AMOUNT] >= level_max[SP_AMOUNT]) return "You have already made the wardrobe as durable as it can be through this upgrade! You may try buying a different upgrade." return "Significantly increases durability. Only wizards completely devoted to fashion should choose this." return ..() @@ -96,7 +96,7 @@ if(magicCloset) magicCloset.forceMove(user.loc) magicCloset.wardrobeSetup() - if(spell_levels[Sp_POWER]) + if(spell_levels[SP_POWER]) magicCloset.backlash = FALSE else ..() @@ -106,7 +106,7 @@ magicCloset.theWiz = user magicCloset.mWOrigin = src magicCloset.wardrobeSetup() - if(spell_levels[Sp_POWER]) + if(spell_levels[SP_POWER]) magicCloset.backlash = FALSE if(mWRecall) mWRecall.mCloset = magicCloset diff --git a/code/modules/spells/aoe_turf/screech.dm b/code/modules/spells/aoe_turf/screech.dm index 1d4a9d219e39..5276ce08a589 100644 --- a/code/modules/spells/aoe_turf/screech.dm +++ b/code/modules/spells/aoe_turf/screech.dm @@ -6,7 +6,7 @@ school = "vampire" user_type = USER_TYPE_VAMPIRE - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 5 MINUTES invocation_type = SpI_NONE range = 4 diff --git a/code/modules/spells/changeling/changeling_spell.dm b/code/modules/spells/changeling/changeling_spell.dm index 907bd31bf239..76a5b94a3c46 100644 --- a/code/modules/spells/changeling/changeling_spell.dm +++ b/code/modules/spells/changeling/changeling_spell.dm @@ -7,7 +7,7 @@ school = "changeling" user_type = USER_TYPE_CHANGELING - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 1 SECONDS invocation_type = SpI_NONE range = 0 diff --git a/code/modules/spells/general/cloak.dm b/code/modules/spells/general/cloak.dm index fa85d57ca0ad..e50155506183 100644 --- a/code/modules/spells/general/cloak.dm +++ b/code/modules/spells/general/cloak.dm @@ -6,7 +6,7 @@ school = "vampire" user_type = USER_TYPE_VAMPIRE - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 1 SECONDS invocation_type = SpI_NONE range = 0 diff --git a/code/modules/spells/general/lightning.dm b/code/modules/spells/general/lightning.dm index 1bb56edf7ac5..ada664e3c9a2 100644 --- a/code/modules/spells/general/lightning.dm +++ b/code/modules/spells/general/lightning.dm @@ -8,11 +8,11 @@ cooldown_min = 40 cooldown_reduc = 30 - spell_levels = list(Sp_SPEED = 0, Sp_POWER = 0) - level_max = list(Sp_TOTAL = 3, Sp_SPEED = 3, Sp_POWER = 3) //each level of power grants 1 additional target. + spell_levels = list(SP_SPEED = 0, SP_POWER = 0) + level_max = list(SP_TOTAL = 3, SP_SPEED = 3, SP_POWER = 3) //each level of power grants 1 additional target. spell_flags = NEEDSCLOTHES | WAIT_FOR_CLICK | IS_HARMFUL - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE invocation = "ZAP MUTHA FUH KA" invocation_type = SpI_SHOUT hud_state = "wiz_zap" @@ -33,26 +33,26 @@ chargeoverlay = image("icon" = 'icons/mob/mob.dmi', "icon_state" = "sithlord") /spell/lightning/quicken_spell() - if(!can_improve(Sp_SPEED)) + if(!can_improve(SP_SPEED)) return 0 - spell_levels[Sp_SPEED]++ + spell_levels[SP_SPEED]++ if(delay_reduc && cast_delay) cast_delay = max(0, cast_delay - delay_reduc) else if(cast_delay) - cast_delay = round( max(0, initial(cast_delay) * ((level_max[Sp_SPEED] - spell_levels[Sp_SPEED]) / level_max[Sp_SPEED] ) ) ) + cast_delay = round( max(0, initial(cast_delay) * ((level_max[SP_SPEED] - spell_levels[SP_SPEED]) / level_max[SP_SPEED] ) ) ) - if(charge_type == Sp_RECHARGE) + if(charge_type == SP_RECHARGE) if(cooldown_reduc) charge_max = max(cooldown_min, charge_max - cooldown_reduc) else - charge_max = round( max(cooldown_min, initial(charge_max) * ((level_max[Sp_SPEED] - spell_levels[Sp_SPEED]) / level_max[Sp_SPEED] ) ) ) //the fraction of the way you are to max speed levels is the fraction you lose + charge_max = round( max(cooldown_min, initial(charge_max) * ((level_max[SP_SPEED] - spell_levels[SP_SPEED]) / level_max[SP_SPEED] ) ) ) //the fraction of the way you are to max speed levels is the fraction you lose if(charge_max < charge_counter) charge_counter = charge_max var/temp = "You have improved [name]" - if(spell_levels[Sp_SPEED] >= level_max[Sp_SPEED]) + if(spell_levels[SP_SPEED] >= level_max[SP_SPEED]) multicast = 2 temp += " and gain the ability to multicast, each incantation allows you to fire off two bolts of lightning before having to re-cast." else @@ -61,11 +61,11 @@ return temp /spell/lightning/empower_spell() - if(!can_improve(Sp_POWER)) + if(!can_improve(SP_POWER)) return 0 - spell_levels[Sp_POWER]++ + spell_levels[SP_POWER]++ var/temp = "" - switch(level_max[Sp_POWER] - spell_levels[Sp_POWER]) + switch(level_max[SP_POWER] - spell_levels[SP_POWER]) if(2) temp = "You have improved [name] into Chain Lightning it will arc to one additional target." name = "Chain Lightning" @@ -211,7 +211,7 @@ /spell/lightning/get_upgrade_info(upgrade_type, level) switch(upgrade_type) - if(Sp_POWER) + if(SP_POWER) switch(level) if(1) return "Allow the spell to arc to one additional target and slightly increases its damage." @@ -219,8 +219,8 @@ return "Allow the spell to arc up to 3 targets and slightly increases its damage." if(3) return "Allow the spell to arc up to 5 targets and slightly increases its damage." - if(Sp_SPEED) - if(spell_levels[Sp_SPEED] == 2) + if(SP_SPEED) + if(spell_levels[SP_SPEED] == 2) return "Allows you to multi-cast the spell, being able to fire up to two bolts of lightning before having to re-cast." return ..() diff --git a/code/modules/spells/general/rejuvenate.dm b/code/modules/spells/general/rejuvenate.dm index 59caaa341151..23ad9aa063a5 100644 --- a/code/modules/spells/general/rejuvenate.dm +++ b/code/modules/spells/general/rejuvenate.dm @@ -6,7 +6,7 @@ school = "vampire" user_type = USER_TYPE_VAMPIRE - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 3 MINUTES invocation_type = SpI_NONE range = 0 diff --git a/code/modules/spells/general/ring_of_fire.dm b/code/modules/spells/general/ring_of_fire.dm index 516fc7f0c00b..3e27906213c4 100644 --- a/code/modules/spells/general/ring_of_fire.dm +++ b/code/modules/spells/general/ring_of_fire.dm @@ -7,16 +7,16 @@ charge_max = 300 cooldown_min = 100 - spell_levels = list(Sp_SPEED = 0, Sp_MOVE = 0, Sp_POWER = 0) - level_max = list(Sp_TOTAL = 5, Sp_SPEED = 3, Sp_MOVE = 1, Sp_POWER = 1) + spell_levels = list(SP_SPEED = 0, SP_MOVE = 0, SP_POWER = 0) + level_max = list(SP_TOTAL = 5, SP_SPEED = 3, SP_MOVE = 1, SP_POWER = 1) spell_flags = NEEDSCLOTHES | IS_HARMFUL spell_aspect_flags = SPELL_FIRE - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE invocation = "E ROHA" invocation_type = SpI_SHOUT hud_state = "wiz_firering" - price = Sp_BASE_PRICE / 2 + price = SP_BASE_PRICE / 2 duration = 100 range = 3 @@ -60,13 +60,13 @@ /spell/aoe_turf/ring_of_fire/apply_upgrade(upgrade_type) switch(upgrade_type) - if(Sp_MOVE) - spell_levels[Sp_MOVE]++ + if(SP_MOVE) + spell_levels[SP_MOVE]++ move_with_user = 1 desc += " The ring moves together with you." return "The ring will now move together with you." - if(Sp_POWER) - spell_levels[Sp_POWER]++ + if(SP_POWER) + spell_levels[SP_POWER]++ living_fire = 1 desc += " Once the spell is finished, the flames will look for nearby targets and lock on them. Scary!" return "The ring will now cast living flames after it's done burning." @@ -75,12 +75,12 @@ /spell/aoe_turf/ring_of_fire/get_upgrade_info(upgrade_type) switch(upgrade_type) - if(Sp_MOVE) - if(spell_levels[Sp_MOVE] >= level_max[Sp_MOVE]) + if(SP_MOVE) + if(spell_levels[SP_MOVE] >= level_max[SP_MOVE]) return "The ring already moves together with you!" return "Make the ring move together with you." - if(Sp_POWER) - if(spell_levels[Sp_POWER] >= level_max[Sp_POWER]) + if(SP_POWER) + if(spell_levels[SP_POWER] >= level_max[SP_POWER]) return "The ring already casts living flames when it is over!" return "Make the ring cast living flames when it is over." diff --git a/code/modules/spells/general/rune_write.dm b/code/modules/spells/general/rune_write.dm index 2003986bf72a..9a0b843c802c 100644 --- a/code/modules/spells/general/rune_write.dm +++ b/code/modules/spells/general/rune_write.dm @@ -5,7 +5,7 @@ school = "evocation" charge_max = 100 - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE invocation_type = SpI_NONE spell_flags = CONSTRUCT_CHECK diff --git a/code/modules/spells/general/shapeshift.dm b/code/modules/spells/general/shapeshift.dm index 866a64ac5378..cd563e3d639b 100644 --- a/code/modules/spells/general/shapeshift.dm +++ b/code/modules/spells/general/shapeshift.dm @@ -10,7 +10,7 @@ cooldown_min = 20 SECONDS spell_flags = NEEDSHUMAN - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE invocation_type = SpI_NONE range = 0 diff --git a/code/modules/spells/general/silentbite.dm b/code/modules/spells/general/silentbite.dm index f08bd5aa58b5..86611a3de4e5 100644 --- a/code/modules/spells/general/silentbite.dm +++ b/code/modules/spells/general/silentbite.dm @@ -6,7 +6,7 @@ school = "vampire" user_type = USER_TYPE_VAMPIRE - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 1 SECONDS invocation_type = SpI_NONE range = 0 diff --git a/code/modules/spells/general/undeath.dm b/code/modules/spells/general/undeath.dm index 853e8b3e0db7..c4e9e1c7da6d 100644 --- a/code/modules/spells/general/undeath.dm +++ b/code/modules/spells/general/undeath.dm @@ -6,7 +6,7 @@ school = "vampire" user_type = USER_TYPE_VAMPIRE - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 1 SECONDS invocation_type = SpI_NONE range = 0 diff --git a/code/modules/spells/passive/no_clothes.dm b/code/modules/spells/passive/no_clothes.dm index ad0aa7dfedcb..f957a7e3349c 100644 --- a/code/modules/spells/passive/no_clothes.dm +++ b/code/modules/spells/passive/no_clothes.dm @@ -4,7 +4,7 @@ user_type = USER_TYPE_WIZARD desc = "Removes the need of wizard robes to cast powerful spells." hud_state = "wiz_noclothes" - price = 2 * Sp_BASE_PRICE + price = 2 * SP_BASE_PRICE specialization = SSUTILITY range = SELFCAST //The no_clothes check exists in spell_code.dm diff --git a/code/modules/spells/passive/passive.dm b/code/modules/spells/passive/passive.dm index da7faa008a17..aa0de0ebdf86 100644 --- a/code/modules/spells/passive/passive.dm +++ b/code/modules/spells/passive/passive.dm @@ -2,8 +2,8 @@ //Cannot be normally cast, instead they rely on process() except for the no_clothes.dm spell /spell/passive - charge_type = Sp_PASSIVE - level_max = list(Sp_TOTAL = 0) //Passive spells have no use. For the love of God, do NOT give it Sp_SPEED, it will do nothing + charge_type = SP_PASSIVE + level_max = list(SP_TOTAL = 0) //Passive spells have no use. For the love of God, do NOT give it SP_SPEED, it will do nothing charge_max = 0 //Redundancy /spell/passive/process() diff --git a/code/modules/spells/spell_code.dm b/code/modules/spells/spell_code.dm index a1cf2882dbfa..75d06c227824 100644 --- a/code/modules/spells/spell_code.dm +++ b/code/modules/spells/spell_code.dm @@ -17,17 +17,17 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now /// Used for what list they belong to in the spellbook. SSOFFENSIVE, SSDEFENSIVE, SSUTILITY var/specialization - ///can be recharge or charges, see charge_max and charge_counter descriptions; can also be based on the holder's vars now, use "holder_var" for that; can ALSO be made to gradually drain the charge with Sp_GRADUAL - ///The following are allowed: Sp_RECHARGE (Recharges), Sp_CHARGES (Limited uses), Sp_GRADUAL (Gradually lose charges), Sp_PASSIVE (Does not cast) - var/charge_type = Sp_RECHARGE + ///can be recharge or charges, see charge_max and charge_counter descriptions; can also be based on the holder's vars now, use "holder_var" for that; can ALSO be made to gradually drain the charge with SP_GRADUAL + ///The following are allowed: SP_RECHARGE (Recharges), SP_CHARGES (Limited uses), SP_GRADUAL (Gradually lose charges), SP_PASSIVE (Does not cast) + var/charge_type = SP_RECHARGE /// Used to calculate cooldown reduction var/initial_charge_max = 10 SECONDS - /// recharge time in deciseconds if charge_type = Sp_RECHARGE or starting charges if charge_type = Sp_CHARGES + /// recharge time in deciseconds if charge_type = SP_RECHARGE or starting charges if charge_type = SP_CHARGES var/charge_max = 10 SECONDS - /// can only cast spells if it equals recharge, ++ each decisecond if charge_type = Sp_RECHARGE or -- each cast if charge_type = Sp_CHARGES + /// can only cast spells if it equals recharge, ++ each decisecond if charge_type = SP_RECHARGE or -- each cast if charge_type = SP_CHARGES var/charge_counter = 0 - /// if set, the minimum charge_counter necessary to cast Sp_GRADUAL spells + /// if set, the minimum charge_counter necessary to cast SP_GRADUAL spells var/minimum_charge = 0 /// Message to display if spell is recharging. var/still_recharging_msg = "The spell is still recharging." @@ -36,9 +36,9 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now var/silenced = 0 /// How much does it cost to buy this spell from a spellbook - var/price = Sp_BASE_PRICE + var/price = SP_BASE_PRICE /// How much lowering the spell cooldown costs in the spellbook - var/quicken_price = Sp_BASE_PRICE * 0.5 + var/quicken_price = SP_BASE_PRICE * 0.5 /// If 0, non-refundable var/refund_price = 0 @@ -97,9 +97,9 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now var/list/valid_targets = list(/mob/living) /// the current spell levels - total spell levels can be obtained by just adding the two values - var/list/spell_levels = list(Sp_SPEED = 0, Sp_POWER = 0) + var/list/spell_levels = list(SP_SPEED = 0, SP_POWER = 0) /// maximum possible levels in each category. Total does cover both. - var/list/level_max = list(Sp_TOTAL = 4, Sp_SPEED = 4, Sp_POWER = 0) + var/list/level_max = list(SP_TOTAL = 4, SP_SPEED = 4, SP_POWER = 0) /// If set, defines how much charge_max drops by every speed upgrade var/cooldown_reduc = 0 /// For channelled spells (cast_delay > 0), reduces the delay before the spell is active. @@ -150,7 +150,7 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now var/obj/abstract/screen/spell/connected_button /// Is the spell being cast right now, or waiting a target for WAIT_CLICK var/currently_channeled = 0 - /// equals TRUE while a Sp_GRADUAL spell is actively being cast + /// equals TRUE while a SP_GRADUAL spell is actively being cast var/gradual_casting = FALSE /// The holiday this spell is restricted to ! Leave empty if none. @@ -185,7 +185,7 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now spawn while(charge_counter < charge_max) if(holder && !holder.timestopped) if(gradual_casting) - if(charge_type & Sp_HOLDVAR) //If the spell is both Sp_GRADUAL and Sp_HOLDVAR, decrement the holder var instead. + if(charge_type & SP_HOLDVAR) //If the spell is both SP_GRADUAL and SP_HOLDVAR, decrement the holder var instead. if(holder.vars[holder_var_type] <= 0) holder.vars[holder_var_type] = 0 //Assumes the minimum of the holder var is 0. gradual_casting = FALSE @@ -467,7 +467,7 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now to_chat(user, "You shouldn't have this spell! Something's wrong.") return 0 - if(charge_type == Sp_PASSIVE) + if(charge_type == SP_PASSIVE) to_chat(user, "This is a passive spell, you cannot cast it!") return 0 @@ -536,19 +536,19 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now if(istype(user, /mob/living/simple_animal/hostile/arcane_golem)) return 1 - if(charge_type == Sp_PASSIVE) + if(charge_type == SP_PASSIVE) return 1 if(!skipcharge) - if(charge_type & Sp_RECHARGE) + if(charge_type & SP_RECHARGE) if(charge_counter < charge_max) to_chat(user, still_recharging_msg) return 0 - if(charge_type & Sp_CHARGES) + if(charge_type & SP_CHARGES) if(!charge_counter) to_chat(user, "[name] has no charges left.") return 0 - if(charge_type & Sp_HOLDVAR) + if(charge_type & SP_HOLDVAR) if(special_var_holder) if(!(holder_var_type in special_var_holder.vars)) return 1 //ABORT @@ -561,7 +561,7 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now if(user.vars[holder_var_type] < holder_var_amount) to_chat(user, holder_var_recharging_msg()) return 0 - if(charge_type & Sp_GRADUAL) + if(charge_type & SP_GRADUAL) if(charge_counter < minimum_charge) to_chat(user, still_recharging_msg) return 0 @@ -577,21 +577,21 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now /// Private: takes spell charges and apply cooldown /spell/proc/take_charge(mob/user = user, var/skipcharge) if(!skipcharge) - if(charge_type & Sp_RECHARGE) + if(charge_type & SP_RECHARGE) charge_counter = 0 //doesn't start recharging until the targets selecting ends src.process() - if(charge_type & Sp_CHARGES) + if(charge_type & SP_CHARGES) charge_counter-- //returns the charge if the targets selecting fails - if(charge_type & Sp_HOLDVAR) + if(charge_type & SP_HOLDVAR) if(special_var_holder) adjust_var(special_var_holder, holder_var_type, holder_var_amount) else adjust_var(user, holder_var_type, holder_var_amount) - if(charge_type & Sp_GRADUAL) + if(charge_type & SP_GRADUAL) gradual_casting = TRUE charge_counter -= 1 process() - if(charge_type & Sp_PASSIVE) + if(charge_type & SP_PASSIVE) process() /// Semi-private: wrapper for shouting out the invocation @@ -620,7 +620,7 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now /// Public: checks if the spell can be improved /// Default behaviour: checks with `spell_levels` and `level_max` /spell/proc/can_improve(var/upgrade_type) - if(level_max[Sp_TOTAL] <= ( spell_levels[Sp_SPEED] + spell_levels[Sp_POWER] )) //too many levels, can't do it + if(level_max[SP_TOTAL] <= ( spell_levels[SP_SPEED] + spell_levels[SP_POWER] )) //too many levels, can't do it return 0 if(upgrade_type && (upgrade_type in spell_levels) && (upgrade_type in level_max)) @@ -636,27 +636,27 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now /// Public: proc to be called when purchasing `SP_SPEED` upgrade /// Default behaviour is to make it quicker (duh) /spell/proc/quicken_spell() - if(!can_improve(Sp_SPEED)) + if(!can_improve(SP_SPEED)) return 0 - spell_levels[Sp_SPEED]++ + spell_levels[SP_SPEED]++ if(delay_reduc && cast_delay) cast_delay = max(0, cast_delay - delay_reduc) else if(cast_delay) - cast_delay = round( max(0, initial(cast_delay) * ((level_max[Sp_SPEED] - spell_levels[Sp_SPEED]) / level_max[Sp_SPEED] ) ) ) + cast_delay = round( max(0, initial(cast_delay) * ((level_max[SP_SPEED] - spell_levels[SP_SPEED]) / level_max[SP_SPEED] ) ) ) - if(charge_type == Sp_RECHARGE) + if(charge_type == SP_RECHARGE) if(cooldown_reduc) charge_max = max(cooldown_min, charge_max - cooldown_reduc) else - charge_max = round(initial_charge_max - spell_levels[Sp_SPEED] * (initial_charge_max - cooldown_min)/ level_max[Sp_SPEED]) + charge_max = round(initial_charge_max - spell_levels[SP_SPEED] * (initial_charge_max - cooldown_min)/ level_max[SP_SPEED]) if(charge_max < charge_counter) charge_counter = charge_max var/temp = "" name = initial(name) - switch(level_max[Sp_SPEED] - spell_levels[Sp_SPEED]) + switch(level_max[SP_SPEED] - spell_levels[SP_SPEED]) if(3) temp = "You have improved [name] into Efficient [name]." name = "Efficient [name]" @@ -725,15 +725,15 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now /// Private: calls the relevant upgrade proc /spell/proc/apply_upgrade(upgrade_type) switch(upgrade_type) - if(Sp_SPEED) + if(SP_SPEED) return quicken_spell() - if(Sp_POWER) + if(SP_POWER) return empower_spell() /// Public: how much spell points it costs to upgrade the spell /// Can override if you want a finer control over balance. Default behaviour uses `quicken_price` and `price` /spell/proc/get_upgrade_price(upgrade_type) - if(upgrade_type == Sp_SPEED) + if(upgrade_type == SP_SPEED) return quicken_price return src.price @@ -743,34 +743,34 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now /// Should override to have better explanation for `SP_POWER` upgrades. /spell/proc/get_upgrade_info(upgrade_type) switch(upgrade_type) - if(Sp_SPEED) - if(spell_levels[Sp_SPEED] >= level_max[Sp_SPEED]) + if(SP_SPEED) + if(spell_levels[SP_SPEED] >= level_max[SP_SPEED]) return "The spell can't be made any quicker than this!" var/formula if(cooldown_reduc) formula = min(charge_max - cooldown_min, cooldown_reduc) else - formula = round((initial_charge_max - cooldown_min)/level_max[Sp_SPEED], 1) + formula = round((initial_charge_max - cooldown_min)/level_max[SP_SPEED], 1) return "Reduce this spell's cooldown by [formula/10] seconds." - if(Sp_POWER) - if(spell_levels[Sp_POWER] >= level_max[Sp_POWER]) + if(SP_POWER) + if(spell_levels[SP_POWER] >= level_max[SP_POWER]) return "The spell can't be made any more powerful than this!" return "Increase this spell's power." /// Atomizes what data the spell shows, that way different spells such as pulse demon and vampire spells can have their own descriptions. /spell/proc/generate_tooltip(var/previous_data = "") var/dat = previous_data //In case you want to put some text at the top instead of bottom - if(charge_type & Sp_RECHARGE) + if(charge_type & SP_RECHARGE) dat += "
Cooldown: [charge_max/10] second\s" - if(charge_type & Sp_CHARGES) + if(charge_type & SP_CHARGES) dat += "
Has [charge_counter] charge\s left" - if(charge_type & Sp_HOLDVAR) - dat += "
Requires [charge_type & Sp_GRADUAL ? "" : "[holder_var_amount]"] " + if(charge_type & SP_HOLDVAR) + dat += "
Requires [charge_type & SP_GRADUAL ? "" : "[holder_var_amount]"] " if(holder_var_name) dat += "[holder_var_name]" else dat += "[holder_var_type]" - if(charge_type & Sp_GRADUAL) + if(charge_type & SP_GRADUAL) dat += " to sustain" switch(range) if(1) diff --git a/code/modules/spells/targeted/absorb.dm b/code/modules/spells/targeted/absorb.dm index bb9a3a5cdbe8..97c1b04754f8 100644 --- a/code/modules/spells/targeted/absorb.dm +++ b/code/modules/spells/targeted/absorb.dm @@ -54,14 +54,14 @@ continue if(targetspell.type == holderspell.type) canAbsorb = FALSE - if(holderspell.can_improve(Sp_POWER)) //Prioritize empowerments over cooldown upgrades + if(holderspell.can_improve(SP_POWER)) //Prioritize empowerments over cooldown upgrades to_chat(holder, "You absorb the magical energies from your foe and have empowered [targetspell.name]!") - holderspell.apply_upgrade(Sp_POWER) + holderspell.apply_upgrade(SP_POWER) hasAbsorbed = TRUE consumed_spell = TRUE - else if(holderspell.can_improve(Sp_SPEED)) + else if(holderspell.can_improve(SP_SPEED)) to_chat(holder, "You absorb the magical energies from your foe and have quickened [targetspell.name]!") - holderspell.apply_upgrade(Sp_SPEED) + holderspell.apply_upgrade(SP_SPEED) hasAbsorbed = TRUE consumed_spell = TRUE if(canAbsorb) diff --git a/code/modules/spells/targeted/arcanetamper.dm b/code/modules/spells/targeted/arcanetamper.dm index bba0d5e70ce0..a39ebbf957c0 100644 --- a/code/modules/spells/targeted/arcanetamper.dm +++ b/code/modules/spells/targeted/arcanetamper.dm @@ -14,7 +14,7 @@ spell_flags = NEEDSCLOTHES // now it's balanced invocation = "E'MAGI!" invocation_type = SpI_NONE // we say it in the arcane_acts - level_max = list(Sp_TOTAL = 4, Sp_SPEED = 2, Sp_POWER = 2) + level_max = list(SP_TOTAL = 4, SP_SPEED = 2, SP_POWER = 2) range = 1 cooldown_min = 100 // 50 deciseconds reduction per rank hud_state = "wiz_arctam" @@ -22,11 +22,11 @@ var/recursive = FALSE // does it curse contents too? /spell/targeted/arcane_tamper/empower_spell() - spell_levels[Sp_POWER]++ + spell_levels[SP_POWER]++ var/oldname = name var/description = "" - switch(spell_levels[Sp_POWER]) + switch(spell_levels[SP_POWER]) if(0) name = "Arcane Tamper" description = "It will now make nearby items anomalous." @@ -45,17 +45,17 @@ /spell/targeted/arcane_tamper/get_upgrade_price(upgrade_type) switch(upgrade_type) - if(Sp_SPEED) + if(SP_SPEED) return 10 - if(Sp_POWER) + if(SP_POWER) return 10 /spell/targeted/arcane_tamper/get_upgrade_info(upgrade_type) switch(upgrade_type) - if(Sp_POWER) - if(spell_levels[Sp_POWER] == 0) + if(SP_POWER) + if(spell_levels[SP_POWER] == 0) return "Upgrades the range of the spell. At the second upgrade, improves the recursiveness of the spell, allowing it to affect the target's contents." - if(spell_levels[Sp_POWER] == 1) + if(spell_levels[SP_POWER] == 1) return "Improves the recursiveness of the spell, allowing it to affect the target's contents." return ..() diff --git a/code/modules/spells/targeted/buttbots_revenge.dm b/code/modules/spells/targeted/buttbots_revenge.dm index 87c348a5241b..9c5da76d6b12 100644 --- a/code/modules/spells/targeted/buttbots_revenge.dm +++ b/code/modules/spells/targeted/buttbots_revenge.dm @@ -12,7 +12,7 @@ invocation_type = SpI_SHOUT range = 1 cooldown_min = 200 //100 deciseconds reduction per rank - level_max = list(Sp_TOTAL = 5, Sp_SPEED = 4, Sp_POWER = 1) + level_max = list(SP_TOTAL = 5, SP_SPEED = 4, SP_POWER = 1) sparks_spread = 1 sparks_amt = 4 valid_targets = list(/mob/living/carbon/human,/mob/living/carbon/monkey) @@ -39,7 +39,7 @@ return /spell/targeted/buttbots_revenge/empower_spell() - spell_levels[Sp_POWER]++ + spell_levels[SP_POWER]++ summon_bot = 1 var/upgrade_desc = "You have upgraded [name] into Butt-Bot's Legacy. When successfully cast on someone it will turn their butt into a working butt-bot." @@ -49,6 +49,6 @@ return upgrade_desc /spell/targeted/buttbots_revenge/get_upgrade_info(upgrade_type, level) - if(upgrade_type == Sp_POWER) + if(upgrade_type == SP_POWER) return "Make the spell instead summon a butt-bot at the target's location." return ..() diff --git a/code/modules/spells/targeted/card.dm b/code/modules/spells/targeted/card.dm index 071f9d45c3e0..3fc49bd6a705 100644 --- a/code/modules/spells/targeted/card.dm +++ b/code/modules/spells/targeted/card.dm @@ -10,7 +10,7 @@ invocation_type = SpI_SHOUT max_targets = 1 valid_targets = list(/mob/living/carbon/human) - level_max = list(Sp_TOTAL = 0, Sp_SPEED = 0, Sp_POWER = 0) //You can't quicken this, this would be kind of useless + level_max = list(SP_TOTAL = 0, SP_SPEED = 0, SP_POWER = 0) //You can't quicken this, this would be kind of useless hud_state = "card_trick" var/current_card var/list/card_type = list("Hearts", "Spades", "Clubs", "Diamonds") diff --git a/code/modules/spells/targeted/disease.dm b/code/modules/spells/targeted/disease.dm index 909462001dbd..f15692719f1f 100644 --- a/code/modules/spells/targeted/disease.dm +++ b/code/modules/spells/targeted/disease.dm @@ -6,7 +6,7 @@ school = "vampire" user_type = USER_TYPE_VAMPIRE - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 3 MINUTES invocation_type = SpI_NONE range = 1 diff --git a/code/modules/spells/targeted/disorient.dm b/code/modules/spells/targeted/disorient.dm index 6e0c7c53535b..90762b71c7ad 100644 --- a/code/modules/spells/targeted/disorient.dm +++ b/code/modules/spells/targeted/disorient.dm @@ -10,7 +10,7 @@ invocation = "DII ODA BAJI" invocation_type = SpI_WHISPER message = "You suddenly feel completely overwhelmed!" - level_max = list(Sp_TOTAL = 5, Sp_SPEED = 4, Sp_POWER = 1) + level_max = list(SP_TOTAL = 5, SP_SPEED = 4, SP_POWER = 1) max_targets = 1 @@ -26,7 +26,7 @@ /spell/targeted/disorient/cast(var/list/targets) ..() - if(spell_levels[Sp_POWER] >= 1) + if(spell_levels[SP_POWER] >= 1) for(var/mob/target in targets) var/angle = pick(90, 180, 270) var/client/C = target.client @@ -37,12 +37,12 @@ C.dir = turn(C.dir, -angle) /spell/targeted/disorient/empower_spell() - spell_levels[Sp_POWER]++ + spell_levels[SP_POWER]++ name = "Empowered Disorient" desc = "This spell will very thoroughly disorient a target for 30 seconds." return "You have upgraded the spell to turn the target's perception in another direction, further debilitating them." /spell/targeted/disorient/get_upgrade_info(upgrade_type, level) - if(upgrade_type == Sp_POWER) + if(upgrade_type == SP_POWER) return "Gives an additional effect to the spell that turns the target's view of reality in a direction, debilitating them a lot." return ..() diff --git a/code/modules/spells/targeted/enthrall.dm b/code/modules/spells/targeted/enthrall.dm index a4c1dcdb7bff..69fe450d8acf 100644 --- a/code/modules/spells/targeted/enthrall.dm +++ b/code/modules/spells/targeted/enthrall.dm @@ -6,7 +6,7 @@ school = "vampire" user_type = USER_TYPE_VAMPIRE - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 3 MINUTES invocation_type = SpI_NONE range = 1 diff --git a/code/modules/spells/targeted/equip/horsemask.dm b/code/modules/spells/targeted/equip/horsemask.dm index 08e0de7294a0..37345a8c8a25 100644 --- a/code/modules/spells/targeted/equip/horsemask.dm +++ b/code/modules/spells/targeted/equip/horsemask.dm @@ -6,7 +6,7 @@ specialization = SSOFFENSIVE school = "transmutation" - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 150 charge_counter = 0 invocation = "KN'A FTAGHU, PUCK 'BTHNK!" diff --git a/code/modules/spells/targeted/equip/robesummon.dm b/code/modules/spells/targeted/equip/robesummon.dm index 7955e0d7b7a0..1dbb239c174d 100644 --- a/code/modules/spells/targeted/equip/robesummon.dm +++ b/code/modules/spells/targeted/equip/robesummon.dm @@ -13,7 +13,7 @@ school = "evocation" charge_max = 300 - level_max = list(Sp_TOTAL = 5, Sp_SPEED = 4, Sp_POWER = 1) + level_max = list(SP_TOTAL = 5, SP_SPEED = 4, SP_POWER = 1) invocation = "I PUT ON MY ROBE AND WIZARD HAT!" invocation_type = SpI_SHOUT range = SELFCAST @@ -78,7 +78,7 @@ /spell/targeted/equip_item/robesummon/empower_spell() if(!valid_outfits.Find(ROBES_SUIT)) valid_outfits = list(ROBES_SUIT) - spell_levels[Sp_POWER]++ + spell_levels[SP_POWER]++ name = "Summon Hardsuit" desc = "A spell which will summon you a wizard hardsuit." @@ -86,8 +86,8 @@ /spell/targeted/equip_item/robesummon/get_upgrade_info(upgrade_type, level) - if(upgrade_type == Sp_POWER) - if(spell_levels[Sp_POWER] >= level_max[Sp_POWER]) + if(upgrade_type == SP_POWER) + if(spell_levels[SP_POWER] >= level_max[SP_POWER]) return "It already summons a gem-encrusted hardsuit and internals!" return "Make the spell summon a gem-encrusted hardsuit and internals." return ..() diff --git a/code/modules/spells/targeted/ethereal_jaunt.dm b/code/modules/spells/targeted/ethereal_jaunt.dm index 93908195d144..77fe94f4e89d 100644 --- a/code/modules/spells/targeted/ethereal_jaunt.dm +++ b/code/modules/spells/targeted/ethereal_jaunt.dm @@ -13,7 +13,7 @@ max_targets = 1 cooldown_min = 100 //50 deciseconds reduction per rank duration = 50 //in deciseconds - level_max = list(Sp_TOTAL = 5, Sp_SPEED = 4, Sp_POWER = 1) + level_max = list(SP_TOTAL = 5, SP_SPEED = 4, SP_POWER = 1) hud_state = "wiz_jaunt" @@ -34,14 +34,14 @@ ethereal_jaunt(targets[1], duration, enteranim, exitanim, mist, empowered) /spell/targeted/ethereal_jaunt/get_upgrade_info(upgrade_type, level) - if(upgrade_type == Sp_POWER) + if(upgrade_type == SP_POWER) return "Makes you faster while jaunting." return ..() /spell/targeted/ethereal_jaunt/empower_spell() - if(!can_improve(Sp_POWER)) + if(!can_improve(SP_POWER)) return 0 - spell_levels[Sp_POWER]++ + spell_levels[SP_POWER]++ empowered = 1 /proc/ethereal_jaunt(var/mob/living/carbon/target, duration, enteranim = "liquify", exitanim = "reappear", mist = 1, var/empowered) diff --git a/code/modules/spells/targeted/fist.dm b/code/modules/spells/targeted/fist.dm index 756cd40214a6..2b80a5ed795c 100644 --- a/code/modules/spells/targeted/fist.dm +++ b/code/modules/spells/targeted/fist.dm @@ -5,7 +5,7 @@ user_type = USER_TYPE_WIZARD specialization = SSOFFENSIVE - level_max = list(Sp_TOTAL = 3, Sp_SPEED = 3) + level_max = list(SP_TOTAL = 3, SP_SPEED = 3) charge_max = 50 cooldown_min = 10 invocation = "I CAST FIST" diff --git a/code/modules/spells/targeted/genetic.dm b/code/modules/spells/targeted/genetic.dm index 232e5148ebfd..87607e5ba23d 100644 --- a/code/modules/spells/targeted/genetic.dm +++ b/code/modules/spells/targeted/genetic.dm @@ -58,7 +58,7 @@ code\game\\dna\genes\goon_powers.dm hud_state = "wiz_blind" - price = 0.5 * Sp_BASE_PRICE //Half of the normal spell price + price = 0.5 * SP_BASE_PRICE //Half of the normal spell price user_type = USER_TYPE_WIZARD valid_targets = list(/mob/living/carbon) //Silicons don't have DNA diff --git a/code/modules/spells/targeted/grease.dm b/code/modules/spells/targeted/grease.dm index a740628f7852..0bc8e9709683 100644 --- a/code/modules/spells/targeted/grease.dm +++ b/code/modules/spells/targeted/grease.dm @@ -11,23 +11,23 @@ invocation_type = SpI_SHOUT range = 0 spell_flags = NEEDSCLOTHES | INCLUDEUSER - level_max = list(Sp_TOTAL = 5, Sp_SPEED = 4, Sp_POWER = 1) + level_max = list(SP_TOTAL = 5, SP_SPEED = 4, SP_POWER = 1) hud_state = "bucket" /spell/targeted/grease/get_upgrade_info(upgrade_type) switch(upgrade_type) - if(Sp_POWER) - if(spell_levels[Sp_POWER] >= level_max[Sp_POWER]) + if(SP_POWER) + if(spell_levels[SP_POWER] >= level_max[SP_POWER]) return "You can already emit grease at the targeted location!" return "Allows you to target a different location within 4 tiles of you to cover it with grease." return ..() /spell/targeted/grease/empower_spell() - spell_levels[Sp_POWER]++ + spell_levels[SP_POWER]++ var/explosion_description = "" - switch(spell_levels[Sp_POWER]) + switch(spell_levels[SP_POWER]) if(0) explosion_description = "You will now emit grease from your location." if(1) @@ -41,7 +41,7 @@ return "You have improved Grease into [name]. [explosion_description]" /spell/targeted/grease/cast(var/list/targets, mob/user) - if(spell_levels[Sp_POWER] >= 1) + if(spell_levels[SP_POWER] >= 1) for(var/A in targets) var/turf/T = get_turf(A) var/datum/effect/system/foam_spread/s = new() diff --git a/code/modules/spells/targeted/heal.dm b/code/modules/spells/targeted/heal.dm index c80c080459d0..f3379b6bc6f7 100644 --- a/code/modules/spells/targeted/heal.dm +++ b/code/modules/spells/targeted/heal.dm @@ -4,7 +4,7 @@ abbreviation = "HL" user_type = USER_TYPE_WIZARD specialization = SSUTILITY - spell_levels = list(Sp_SPEED = 0, Sp_POWER = 0, Sp_RANGE = 0) + spell_levels = list(SP_SPEED = 0, SP_POWER = 0, SP_RANGE = 0) school = "transmutation" charge_max = 300 @@ -13,7 +13,7 @@ invocation = "DI TIUB SEEL IM" invocation_type = SpI_SHOUT message = "You feel refreshed." - level_max = list(Sp_TOTAL = 3, Sp_SPEED = 2, Sp_POWER = 1, Sp_RANGE = 1) + level_max = list(SP_TOTAL = 3, SP_SPEED = 2, SP_POWER = 1, SP_RANGE = 1) valid_targets = list(/mob/living) max_targets = 1 @@ -29,43 +29,43 @@ /spell/targeted/heal/cast(var/list/targets, mob/user) for(var/atom/T in targets) - if(spell_levels[Sp_RANGE]) + if(spell_levels[SP_RANGE]) if(T != user) aoe_heal(T) if(istype(T, /mob/living) && T != user) var/mob/living/L = T L.vis_contents += new /obj/effect/overlay/heal(L) apply_spell_damage(L) - if(spell_levels[Sp_POWER] && istype(L, /mob/living/carbon/human)) + if(spell_levels[SP_POWER] && istype(L, /mob/living/carbon/human)) var/mob/living/carbon/human/H = L strong_heal(H) playsound(user, 'sound/effects/aoeheal.ogg', 50, 100, extrarange = 3, gas_modified = 0) /spell/targeted/heal/apply_upgrade(upgrade_type) switch(upgrade_type) - if(Sp_SPEED) + if(SP_SPEED) return quicken_spell() - if(Sp_POWER) - spell_levels[Sp_POWER]++ + if(SP_POWER) + spell_levels[SP_POWER]++ name = "Superior " + name return "The spell now has a chance to mend internal wounds." - if(Sp_RANGE) - spell_levels[Sp_RANGE]++ + if(SP_RANGE) + spell_levels[SP_RANGE]++ name = "Splashing " + name return "The spell will now affect a small area around the target." /spell/targeted/heal/get_upgrade_info(upgrade_type, level) switch(upgrade_type) - if(Sp_SPEED) - if(spell_levels[Sp_SPEED] >= level_max[Sp_SPEED]) + if(SP_SPEED) + if(spell_levels[SP_SPEED] >= level_max[SP_SPEED]) return "The spell can't be made any quicker than this!" return "Reduce this spell's cooldown by [cooldown_reduc/10] seconds." - if(Sp_POWER) - if(spell_levels[Sp_POWER] >= level_max[Sp_POWER]) + if(SP_POWER) + if(spell_levels[SP_POWER] >= level_max[SP_POWER]) return "This spell already has a chance of mending internal injuries!" return "Grants the spell a chance of mending internal injuries in the primary target." - if(Sp_RANGE) - if(spell_levels[Sp_RANGE] >= level_max[Sp_RANGE]) + if(SP_RANGE) + if(spell_levels[SP_RANGE] >= level_max[SP_RANGE]) return "This spell already affects a small area around the target!" return "Expands the spell's effects to a small area around the target." diff --git a/code/modules/spells/targeted/hypnotise.dm b/code/modules/spells/targeted/hypnotise.dm index 164e77b9c20b..e24e90db56c8 100644 --- a/code/modules/spells/targeted/hypnotise.dm +++ b/code/modules/spells/targeted/hypnotise.dm @@ -6,7 +6,7 @@ school = "vampire" user_type = USER_TYPE_VAMPIRE - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 3 MINUTES invocation_type = SpI_NONE range = 1 diff --git a/code/modules/spells/targeted/invoke_emotion.dm b/code/modules/spells/targeted/invoke_emotion.dm index dfe8454c9717..e4a4322fa948 100644 --- a/code/modules/spells/targeted/invoke_emotion.dm +++ b/code/modules/spells/targeted/invoke_emotion.dm @@ -10,13 +10,13 @@ var/global/list/invoked_emotions = list() invocation = "YU'V GO'T MA'LE" invocation_type = SpI_WHISPER spell_flags = WAIT_FOR_CLICK | SELECTABLE | INCLUDEUSER - price = 0.25 * Sp_BASE_PRICE + price = 0.25 * SP_BASE_PRICE range = 9 charge_max = 150 cooldown_min = 10 valid_targets = list(/mob/living/carbon) - spell_levels = list(Sp_SPEED = 0, Sp_POWER = 0, Sp_MOVE = 0) - level_max = list(Sp_TOTAL = 7, Sp_SPEED = 1, Sp_POWER = 5, Sp_MOVE = 1) + spell_levels = list(SP_SPEED = 0, SP_POWER = 0, SP_MOVE = 0) + level_max = list(SP_TOTAL = 7, SP_SPEED = 1, SP_POWER = 5, SP_MOVE = 1) var/obj/item/weapon/paper/emotion_invoker/thePaper = null var/obj/item/weapon/pen/invoked_quill/theQuill = null @@ -26,8 +26,8 @@ var/global/list/invoked_emotions = list() for(var/mob/living/carbon/target in targets) var/obj/item/weapon/paper/emotion_invoker/thePaper = new /obj/item/weapon/paper/emotion_invoker(user.loc) thePaper.curseTarget = target - thePaper.cursePower = spell_levels[Sp_POWER] - thePaper.forcesHand = spell_levels[Sp_MOVE] + thePaper.cursePower = spell_levels[SP_POWER] + thePaper.forcesHand = spell_levels[SP_MOVE] user.put_in_hands(thePaper) if(!theQuill) theQuill = new /obj/item/weapon/pen/invoked_quill(user.loc) @@ -40,32 +40,32 @@ var/global/list/invoked_emotions = list() /spell/targeted/invoke_emotion/apply_upgrade(upgrade_type) switch(upgrade_type) - if(Sp_SPEED) + if(SP_SPEED) return quicken_spell() - if(Sp_POWER) - spell_levels[Sp_POWER]++ + if(SP_POWER) + spell_levels[SP_POWER]++ return "Your invoked emotions now cut slightly deeper." - if(Sp_MOVE) - spell_levels[Sp_MOVE]++ + if(SP_MOVE) + spell_levels[SP_MOVE]++ return "Your invoked emotions are now harder to ignore." /spell/targeted/invoke_emotion/get_upgrade_price(upgrade_type) switch(upgrade_type) - if(Sp_SPEED) + if(SP_SPEED) return 20 - if(Sp_POWER) + if(SP_POWER) return 1 - if(Sp_MOVE) + if(SP_MOVE) return 5 /spell/targeted/invoke_emotion/get_upgrade_info(upgrade_type) switch(upgrade_type) - if(Sp_POWER) - if(spell_levels[Sp_POWER] >= level_max[Sp_POWER]) + if(SP_POWER) + if(spell_levels[SP_POWER] >= level_max[SP_POWER]) return "The invoked paper annoys the target as much as it can!" return "Invoked paper is more likely to cut, or otherwise curse, the target." - if(Sp_MOVE) - if(spell_levels[Sp_MOVE] >= level_max[Sp_MOVE]) + if(SP_MOVE) + if(spell_levels[SP_MOVE] >= level_max[SP_MOVE]) return "The invoked emotions can already place themselves in their target's hand!" return "Invoked emotions have a chance to place themselves in their target's hand." return ..() diff --git a/code/modules/spells/targeted/pacify.dm b/code/modules/spells/targeted/pacify.dm index d5d3529af90a..6687d73b5655 100644 --- a/code/modules/spells/targeted/pacify.dm +++ b/code/modules/spells/targeted/pacify.dm @@ -8,8 +8,8 @@ cooldown_reduc = 15 SECONDS cooldown_min = 15 SECONDS - spell_levels = list(Sp_SPEED = 0, Sp_RANGE = 0, Sp_POWER = 0) - level_max = list(Sp_TOTAL = 3, Sp_SPEED = 2, Sp_RANGE = 1, Sp_POWER = 2) + spell_levels = list(SP_SPEED = 0, SP_RANGE = 0, SP_POWER = 0) + level_max = list(SP_TOTAL = 3, SP_SPEED = 2, SP_RANGE = 1, SP_POWER = 2) spell_flags = WAIT_FOR_CLICK invocation = "YUKKRI SHEETI NAY" @@ -27,28 +27,28 @@ targets = turf_target if(targets) if(user.reagents) - user.reagents.add_reagent(CHILLWAX, 4 + (spell_levels[Sp_POWER]/2)) + user.reagents.add_reagent(CHILLWAX, 4 + (spell_levels[SP_POWER]/2)) var/turf/target = targets[1] - target.vis_contents += new /obj/effect/overlay/pacify_aoe(target, spell_levels[Sp_POWER], spell_levels[Sp_RANGE]) + target.vis_contents += new /obj/effect/overlay/pacify_aoe(target, spell_levels[SP_POWER], spell_levels[SP_RANGE]) /spell/targeted/pacify/apply_upgrade(upgrade_type) switch(upgrade_type) - if(Sp_SPEED) + if(SP_SPEED) return quicken_spell() - if(Sp_POWER) - spell_levels[Sp_POWER]++ - if(Sp_RANGE) - spell_levels[Sp_RANGE]++ + if(SP_POWER) + spell_levels[SP_POWER]++ + if(SP_RANGE) + spell_levels[SP_RANGE]++ /spell/targeted/pacify/get_upgrade_info(upgrade_type) switch(upgrade_type) - if(Sp_POWER) - if(spell_levels[Sp_POWER] >= level_max[Sp_POWER]) + if(SP_POWER) + if(spell_levels[SP_POWER] >= level_max[SP_POWER]) return "The spell can't be made any more powerful than this!" var/duration = 2/REAGENTS_METABOLISM*2 //2 extra units of Chillwax per rank, multiplied by 2 due to Life() happening every 2 seconds return "Increases how long targets are pacified for by around [duration] seconds." - if(Sp_RANGE) - if(spell_levels[Sp_RANGE] >= level_max[Sp_RANGE]) + if(SP_RANGE) + if(spell_levels[SP_RANGE] >= level_max[SP_RANGE]) return "This spell's area of effect is at its maximum!" return "Increases the area of the spell's impact by 1 tile." return ..() diff --git a/code/modules/spells/targeted/parrotmorph.dm b/code/modules/spells/targeted/parrotmorph.dm index 1af19e08ab80..430b63d562c7 100644 --- a/code/modules/spells/targeted/parrotmorph.dm +++ b/code/modules/spells/targeted/parrotmorph.dm @@ -5,7 +5,7 @@ user_type = USER_TYPE_SPELLBOOK school = "evocation" - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 600 invocation = "'P'Y W'NT A CRAC'K'R!" invocation_type = SpI_SHOUT diff --git a/code/modules/spells/targeted/projectile/fireball.dm b/code/modules/spells/targeted/projectile/fireball.dm index f9b7a56c0286..25fc90c07ea0 100644 --- a/code/modules/spells/targeted/projectile/fireball.dm +++ b/code/modules/spells/targeted/projectile/fireball.dm @@ -28,7 +28,7 @@ var/ex_light = 3 var/ex_flash = 5 - level_max = list(Sp_TOTAL = 5, Sp_SPEED = 4, Sp_POWER = 1) + level_max = list(SP_TOTAL = 5, SP_SPEED = 4, SP_POWER = 1) hud_state = "wiz_fireball" @@ -46,10 +46,10 @@ return targets /spell/targeted/projectile/dumbfire/fireball/empower_spell() - spell_levels[Sp_POWER]++ + spell_levels[SP_POWER]++ var/explosion_description = "" - switch(spell_levels[Sp_POWER]) + switch(spell_levels[SP_POWER]) if(0) name = "Fireball" explosion_description = "It will now create a small explosion." @@ -72,7 +72,7 @@ return (isturf(target) || isturf(target.loc)) /spell/targeted/projectile/dumbfire/fireball/get_upgrade_info(upgrade_type, level) - if(upgrade_type == Sp_POWER) + if(upgrade_type == SP_POWER) return "Make the spell targetable." return ..() diff --git a/code/modules/spells/targeted/projectile/firebreath.dm b/code/modules/spells/targeted/projectile/firebreath.dm index 151860a686a6..3011e30e7ad4 100644 --- a/code/modules/spells/targeted/projectile/firebreath.dm +++ b/code/modules/spells/targeted/projectile/firebreath.dm @@ -8,7 +8,7 @@ proj_type = /obj/item/projectile/fire_breath school = "evocation" - price = Sp_BASE_PRICE / 2 + price = SP_BASE_PRICE / 2 charge_max = 100 spell_flags = WAIT_FOR_CLICK | IS_HARMFUL invocation = "SPY'SI MEAT'A'BAL" @@ -22,7 +22,7 @@ dumbfire = 0 var/pressure = ONE_ATMOSPHERE * 4.5 - level_max = list(Sp_TOTAL = 8, Sp_SPEED = 4, Sp_POWER = 4) + level_max = list(SP_TOTAL = 8, SP_SPEED = 4, SP_POWER = 4) hud_state = "wiz_firebreath" @@ -30,16 +30,16 @@ return new proj_type(location, direction, P = pressure) /spell/targeted/projectile/dumbfire/firebreath/get_upgrade_info(upgrade_type, level) - if(upgrade_type == Sp_POWER) + if(upgrade_type == SP_POWER) return "Increase the size of the fire plume." return ..() /spell/targeted/projectile/dumbfire/firebreath/empower_spell() - spell_levels[Sp_POWER]++ + spell_levels[SP_POWER]++ var/current_name = name var/explosion_description = "The plume of fire you breathe will now be larger." - switch(spell_levels[Sp_POWER]) + switch(spell_levels[SP_POWER]) if(0) name = "Fire Breath" explosion_description = "You can now breathe fire." diff --git a/code/modules/spells/targeted/projectile/pie_throw.dm b/code/modules/spells/targeted/projectile/pie_throw.dm index 1987514c5bec..a29d7cb68fd6 100644 --- a/code/modules/spells/targeted/projectile/pie_throw.dm +++ b/code/modules/spells/targeted/projectile/pie_throw.dm @@ -15,37 +15,37 @@ duration = 20 projectile_speed = 1 - level_max = list(Sp_TOTAL = 5, Sp_POWER = 5) + level_max = list(SP_TOTAL = 5, SP_POWER = 5) hud_state = "pie" /spell/targeted/projectile/pie/get_upgrade_info(upgrade_type) switch(upgrade_type) - if(Sp_POWER) - if(spell_levels[Sp_POWER] >= level_max[Sp_POWER]) + if(SP_POWER) + if(spell_levels[SP_POWER] >= level_max[SP_POWER]) return "The spell can't be made any more powerful than this!" return "Allows you to throw an extra pie, and increases the throwing damage of each pie by 4." return ..() //It only has empowerment as an available upgrade /spell/targeted/projectile/pie/get_upgrade_price(upgrade_type) - if(upgrade_type == Sp_POWER) - return Sp_BASE_PRICE * 0.5 + if(upgrade_type == SP_POWER) + return SP_BASE_PRICE * 0.5 /spell/targeted/projectile/pie/empower_spell() - spell_levels[Sp_POWER]++ - return "Your spell now throws [spell_levels[Sp_POWER]+1] pies at once!" + spell_levels[SP_POWER]++ + return "Your spell now throws [spell_levels[SP_POWER]+1] pies at once!" /spell/targeted/projectile/pie/cast(list/targets, mob/user = usr) for(var/atom/target in targets) if (user.is_pacified(VIOLENCE_DEFAULT,target)) return spawn() - for(var/i = 0 to spell_levels[Sp_POWER]) + for(var/i = 0 to spell_levels[SP_POWER]) var/turf/T = get_turf(user) var/atom/target = pick(targets) var/pie_to_spawn = pick(existing_typesof(/obj/item/weapon/reagent_containers/food/snacks/pie)) var/obj/pie = new pie_to_spawn(T) to_chat(user, "You summon and throw \a [pie].") - pie.throw_at(target, range, (spell_levels[Sp_POWER]+1)*20) - sleep(max(1, 5/spell_levels[Sp_POWER])) + pie.throw_at(target, range, (spell_levels[SP_POWER]+1)*20) + sleep(max(1, 5/spell_levels[SP_POWER])) diff --git a/code/modules/spells/targeted/punch.dm b/code/modules/spells/targeted/punch.dm index ef6c08210fc5..70ba5d851507 100644 --- a/code/modules/spells/targeted/punch.dm +++ b/code/modules/spells/targeted/punch.dm @@ -2,7 +2,7 @@ name = "Punch" desc = "This spell empowers your next close-and-personal unarmed attack to launch the enemy with such great force that they cause a small explosion where they land. The ensuing explosion won't harm you directly, but the after-effects might. Works against mechas." abbreviation = "PU" - level_max = list(Sp_TOTAL = 3, Sp_SPEED = 2, Sp_POWER = 1) + level_max = list(SP_TOTAL = 3, SP_SPEED = 2, SP_POWER = 1) user_type = USER_TYPE_WIZARD specialization = SSOFFENSIVE charge_max = 90 @@ -29,14 +29,14 @@ /spell/targeted/punch/get_upgrade_info(upgrade_type) switch(upgrade_type) - if(Sp_POWER) + if(SP_POWER) return "Make the explosion more devastating, allowing it to cause more damage and even breach the ground." return ..() /spell/targeted/punch/empower_spell() ..() empowered += 1 - spell_levels[Sp_POWER]++ + spell_levels[SP_POWER]++ . = "You have made the punch more devastating." /spell/targeted/punch/cast(var/list/targets) diff --git a/code/modules/spells/targeted/push.dm b/code/modules/spells/targeted/push.dm index d4fa79812e5f..4000fe74ef63 100644 --- a/code/modules/spells/targeted/push.dm +++ b/code/modules/spells/targeted/push.dm @@ -12,7 +12,7 @@ invocation_type = SpI_SHOUT range = 1 cooldown_min = 10 - level_max = list(Sp_TOTAL = 4, Sp_SPEED = 4) + level_max = list(SP_TOTAL = 4, SP_SPEED = 4) sparks_spread = 1 sparks_amt = 4 diff --git a/code/modules/spells/targeted/recall.dm b/code/modules/spells/targeted/recall.dm index 3fde5af2b236..61e353c0be0a 100644 --- a/code/modules/spells/targeted/recall.dm +++ b/code/modules/spells/targeted/recall.dm @@ -10,8 +10,8 @@ minimum_charge = 10 //1 second delay spell_flags = SELECTABLE | WAIT_FOR_CLICK hud_state = "wiz_bound" - level_max = list(Sp_TOTAL = 4, Sp_SPEED = 2, Sp_POWER = 2) - price = 0.5 * Sp_BASE_PRICE + level_max = list(SP_TOTAL = 4, SP_SPEED = 2, SP_POWER = 2) + price = 0.5 * SP_BASE_PRICE var/has_object = 0 var/obj/bound @@ -59,9 +59,9 @@ /spell/targeted/bound_object/get_upgrade_price(upgrade_type) switch(upgrade_type) - if(Sp_SPEED) + if(SP_SPEED) return 5 - if(Sp_POWER) + if(SP_POWER) return 20 /spell/targeted/bound_object/is_valid_target(obj/target, mob/user, options, bypass_range = 0) @@ -109,7 +109,7 @@ /spell/targeted/bound_object/cast(list/targets, mob/user = user) for(var/obj/target in targets) if(!has_object) - if(spell_levels[Sp_POWER] < 2) //Moving this check here because if it returned 0 on is_valid_target it would force the character to touch it if in range. Ouch. + if(spell_levels[SP_POWER] < 2) //Moving this check here because if it returned 0 on is_valid_target it would force the character to touch it if in range. Ouch. for(var/E in empower_limited) if(istype(target, E)) to_chat(user, "This is too powerful to bind to yourself. Empower your spell sufficiently enough first!") @@ -132,20 +132,20 @@ /spell/targeted/bound_object/empower_spell() var/upgrade_desc - if(spell_levels[Sp_POWER] == 0) - spell_levels[Sp_POWER]++ + if(spell_levels[SP_POWER] == 0) + spell_levels[SP_POWER]++ allow_anchored = 1 upgrade_desc = "You have reduced the restrictions on your binding." else - spell_levels[Sp_POWER]++ + spell_levels[SP_POWER]++ upgrade_desc = "You can now bind far more destructive objects to yourself." return upgrade_desc /spell/targeted/bound_object/get_upgrade_info(upgrade_type, level) - if(upgrade_type == Sp_POWER) - if(spell_levels[Sp_POWER] == 0) + if(upgrade_type == SP_POWER) + if(spell_levels[SP_POWER] == 0) return "Increases your binding skill, allowing otherwise immobile structures and machines to be moved." - if(spell_levels[Sp_POWER] == 1) + if(spell_levels[SP_POWER] == 1) return "Further increases your binding skill, allowing you to bind [types_to_english_list(empower_limited)]." else return "You can already bind a great amount of things." @@ -193,7 +193,7 @@ charge_max = 10 spell_flags = 0 hud_state = "wiz_unbind" - level_max = list(Sp_TOTAL = 0) + level_max = list(SP_TOTAL = 0) var/spell/targeted/bound_object/linked_spell diff --git a/code/modules/spells/targeted/shoesnatch.dm b/code/modules/spells/targeted/shoesnatch.dm index 2d94d1c4e659..cfa5db62c423 100644 --- a/code/modules/spells/targeted/shoesnatch.dm +++ b/code/modules/spells/targeted/shoesnatch.dm @@ -6,7 +6,7 @@ specialization = SSOFFENSIVE school = "evocation" - charge_type = Sp_RECHARGE + charge_type = SP_RECHARGE charge_max = 150 invocation = "H'NK!" invocation_type = SpI_SHOUT @@ -16,7 +16,7 @@ cooldown_min = 30 selection_type = "range" - level_max = list(Sp_TOTAL = 5, Sp_SPEED = 4, Sp_POWER = 1) + level_max = list(SP_TOTAL = 5, SP_SPEED = 4, SP_POWER = 1) valid_targets = list(/mob/living/carbon/human) hud_state = "wiz_shoes" @@ -50,7 +50,7 @@ animate(S, alpha = 255, time = 10) /spell/targeted/shoesnatch/empower_spell() - spell_levels[Sp_POWER]++ + spell_levels[SP_POWER]++ spawn_shards = 1 var/upgrade_desc = "You have upgraded [name] into Shoe Snatching Scourge. When cast on somebody who isn't wearing any shoes, it will summon 4 glass shards around them." @@ -60,6 +60,6 @@ return upgrade_desc /spell/targeted/shoesnatch/get_upgrade_info(upgrade_type, level) - if(upgrade_type == Sp_POWER) + if(upgrade_type == SP_POWER) return "Make the spell summon glass shards around targets who aren't wearing any shoes." return ..() diff --git a/code/modules/spells/targeted/street_alchemy.dm b/code/modules/spells/targeted/street_alchemy.dm index 1e22fd68bb45..cc7b2810878e 100644 --- a/code/modules/spells/targeted/street_alchemy.dm +++ b/code/modules/spells/targeted/street_alchemy.dm @@ -12,9 +12,9 @@ max_targets = 1 spell_flags = WAIT_FOR_CLICK | NEEDSHUMAN | INCLUDEUSER hud_state = "wiz_stAlch" - price = 0.5 * Sp_BASE_PRICE - spell_levels = list(Sp_SPEED = 0, Sp_POWER = 0, Sp_RANGE = 0, Sp_AMOUNT = 0) - level_max = list(Sp_TOTAL = 30, Sp_SPEED = 3, Sp_POWER = 1, Sp_RANGE = 20, Sp_AMOUNT = 2) + price = 0.5 * SP_BASE_PRICE + spell_levels = list(SP_SPEED = 0, SP_POWER = 0, SP_RANGE = 0, SP_AMOUNT = 0) + level_max = list(SP_TOTAL = 30, SP_SPEED = 3, SP_POWER = 1, SP_RANGE = 20, SP_AMOUNT = 2) var/list/existingElixirs = list() var/elixirAmount = 1 var/reagToSteal = 1 @@ -25,50 +25,50 @@ /spell/targeted/alchemy/apply_upgrade(upgrade_type) switch(upgrade_type) - if(Sp_SPEED) + if(SP_SPEED) return quicken_spell() - if(Sp_POWER) - spell_levels[Sp_POWER]++ + if(SP_POWER) + spell_levels[SP_POWER]++ name = "Permeating " + name return "Thrown elixirs now transfer reagents." - if(Sp_RANGE) - spell_levels[Sp_RANGE]++ + if(SP_RANGE) + spell_levels[SP_RANGE]++ reagToSteal++ - if(spell_levels[Sp_RANGE] == 20) + if(spell_levels[SP_RANGE] == 20) name = "Delving " + name return "You can pilfer from one more container per cast. Spell affects an area at max level" - if(Sp_AMOUNT) - spell_levels[Sp_AMOUNT]++ + if(SP_AMOUNT) + spell_levels[SP_AMOUNT]++ elixirAmount++ - if(spell_levels[Sp_AMOUNT] == 3) + if(spell_levels[SP_AMOUNT] == 3) name ="Bountiful " + name return "An additonal elixir can now exist." /spell/targeted/alchemy/get_upgrade_price(upgrade_type) switch(upgrade_type) - if(Sp_SPEED) + if(SP_SPEED) return 10 - if(Sp_POWER) + if(SP_POWER) return 10 - if(Sp_RANGE) + if(SP_RANGE) return 1 - if(Sp_AMOUNT) + if(SP_AMOUNT) return 5 /spell/targeted/alchemy/get_upgrade_info(upgrade_type) switch(upgrade_type) - if(Sp_POWER) - if(spell_levels[Sp_POWER] >= level_max[Sp_POWER]) + if(SP_POWER) + if(spell_levels[SP_POWER] >= level_max[SP_POWER]) return "Thrown elixirs can already transfer their contents into living targets!" return "Thrown elixirs transfer their contents into living targets." - if(Sp_RANGE) - if(spell_levels[Sp_RANGE] >= level_max[Sp_RANGE]) + if(SP_RANGE) + if(spell_levels[SP_RANGE] >= level_max[SP_RANGE]) return "This spell already steals as many reagents as it can from an area!" - if(spell_levels[Sp_RANGE] >= 21) + if(spell_levels[SP_RANGE] >= 21) return "You will now steal all reagents in an area." return "Pilfers from one more target per cast." - if(Sp_AMOUNT) - if(spell_levels[Sp_AMOUNT] >= level_max[Sp_AMOUNT]) + if(SP_AMOUNT) + if(spell_levels[SP_AMOUNT] >= level_max[SP_AMOUNT]) return "You have already reached the limit of how many elixirs can exist at a time!" return "The amount of alchemic elixirs that can exist at a time." return ..() @@ -82,7 +82,7 @@ /spell/targeted/alchemy/proc/singleAlchemy(target, mob/user) var/obj/item/weapon/reagent_containers/pill/streetAlchElixir/elixir = null - if(spell_levels[Sp_POWER]) + if(spell_levels[SP_POWER]) elixir = new /obj/item/weapon/reagent_containers/pill/streetAlchElixir/hypoElixir(src) else elixir = new /obj/item/weapon/reagent_containers/pill/streetAlchElixir(src) @@ -104,7 +104,7 @@ /spell/targeted/alchemy/proc/aoeAlchemy(target, mob/user) var/obj/item/weapon/reagent_containers/pill/streetAlchElixir/elixir = null - if(spell_levels[Sp_POWER]) + if(spell_levels[SP_POWER]) elixir = new /obj/item/weapon/reagent_containers/pill/streetAlchElixir/hypoElixir(src) else elixir = new /obj/item/weapon/reagent_containers/pill/streetAlchElixir(src) diff --git a/code/modules/spells/targeted/summon_snacks.dm b/code/modules/spells/targeted/summon_snacks.dm index 99898964f98b..4bfd2ace75f3 100644 --- a/code/modules/spells/targeted/summon_snacks.dm +++ b/code/modules/spells/targeted/summon_snacks.dm @@ -24,8 +24,8 @@ selection_type = "range" range = 7 valid_targets = list(/mob/living/carbon) - spell_levels = list(Sp_SPEED = 0, Sp_POWER = 0, Sp_AMOUNT = 0, Sp_MOVE = 0) - level_max = list(Sp_TOTAL = 16, Sp_SPEED = 3, Sp_POWER = 1, Sp_AMOUNT = 5, Sp_MOVE = 7) + spell_levels = list(SP_SPEED = 0, SP_POWER = 0, SP_AMOUNT = 0, SP_MOVE = 0) + level_max = list(SP_TOTAL = 16, SP_SPEED = 3, SP_POWER = 1, SP_AMOUNT = 5, SP_MOVE = 7) var/menuType = SUMMON_SNACKS_FILLING /spell/targeted/summon_snacks/cast(var/list/targets, mob/user) @@ -40,7 +40,7 @@ else S = new /obj/item/weapon/reagent_containers/food/snacks/summoned/summoned_drink(target.loc) - S.spellInherit(menuType, spell_levels[Sp_AMOUNT], spell_levels[Sp_POWER]) + S.spellInherit(menuType, spell_levels[SP_AMOUNT], spell_levels[SP_POWER]) S.menuOrder(menuType) target.put_in_hands(S) @@ -51,75 +51,75 @@ /spell/targeted/summon_snacks/apply_upgrade(upgrade_type) switch(upgrade_type) - if(Sp_SPEED) + if(SP_SPEED) return quicken_spell() - if(Sp_POWER) - spell_levels[Sp_POWER]++ + if(SP_POWER) + spell_levels[SP_POWER]++ return "Your snacks are now extremely unhealthy." - if(Sp_AMOUNT) - spell_levels[Sp_AMOUNT]++ + if(SP_AMOUNT) + spell_levels[SP_AMOUNT]++ return "Your snacks are now a little bigger" - if(Sp_MOVE) - spell_levels[Sp_MOVE]++ - if(spell_levels[Sp_MOVE] == 1) + if(SP_MOVE) + spell_levels[SP_MOVE]++ + if(spell_levels[SP_MOVE] == 1) name = "Summon Discount Snacks" invocation = "DA'N THUH MA'N" menuType = SUMMON_SNACKS_DISCOUNT return "Your snacks are now sponsored by Discount Dan." - if(spell_levels[Sp_MOVE] == 2) + if(spell_levels[SP_MOVE] == 2) name = "Summon Horrible Snacks" invocation = "AB'OM'INATION" menuType = SUMMON_SNACKS_HORRIBLE return "Your snacks are now horrible." - if(spell_levels[Sp_MOVE] == 3) + if(spell_levels[SP_MOVE] == 3) name = "Summon Pub Snacks" invocation = "PE'ANO AS'BEN DRYNCAN" menuType = SUMMON_SNACKS_PUB return "Your snacks are now pub fare." - if(spell_levels[Sp_MOVE] == 4) + if(spell_levels[SP_MOVE] == 4) name = "Summon Patrol Snacks" invocation = "LEH'GO I'LAND" menuType = SUMMON_SNACKS_PATROL return "Your snacks are now loved by security." - if(spell_levels[Sp_MOVE] == 5) + if(spell_levels[SP_MOVE] == 5) name = "Summon Spicy Snacks" invocation = "HAW'T TO'MALLEE" menuType = SUMMON_SNACKS_SPICY return "Your snacks are now Mexican." - if(spell_levels[Sp_MOVE] == 6) + if(spell_levels[SP_MOVE] == 6) name = "Summon Drunken Snacks" invocation = "FSH'IN LEV'VAL" menuType = SUMMON_SNACKS_DWARF return "Your snacks are now dwarven." - if(spell_levels[Sp_MOVE] == 7) + if(spell_levels[SP_MOVE] == 7) name = "Summon Filling Snacks" invocation = "OR'DER UHP" menuType = SUMMON_SNACKS_FILLING - spell_levels[Sp_MOVE] = 0 //So you can cycle between them + spell_levels[SP_MOVE] = 0 //So you can cycle between them return "Your snacks are now hearty." /spell/targeted/summon_snacks/get_upgrade_price(upgrade_type) switch(upgrade_type) - if(Sp_SPEED) + if(SP_SPEED) return 10 - if(Sp_POWER) + if(SP_POWER) return 25 - if(Sp_MOVE) + if(SP_MOVE) return 0 - if(Sp_AMOUNT) + if(SP_AMOUNT) return 1 /spell/targeted/summon_snacks/get_upgrade_info(upgrade_type) switch(upgrade_type) - if(Sp_POWER) - if(spell_levels[Sp_POWER] >= level_max[Sp_POWER]) + if(SP_POWER) + if(spell_levels[SP_POWER] >= level_max[SP_POWER]) return "Your snacks already carry a small amount of disabeetusol!" return "Your snacks will now contain a small amount of diabeetusol. Full of flavor and calories!" - if(Sp_AMOUNT) - if(spell_levels[Sp_AMOUNT] >= level_max[Sp_AMOUNT]) + if(SP_AMOUNT) + if(spell_levels[SP_AMOUNT] >= level_max[SP_AMOUNT]) return "Your snacks have reached the limit of how many bites are needed to finish eating them!" return "Increases how many bites it takes to finish eating." - if(Sp_MOVE) + if(SP_MOVE) return "Changes the type of snack and drink. Resets at max level to allow cycling through the menu. Level 0: Filling, Level 1: Discount, Level 2: Horrible, Level 3: Pub, Level 4: Patrol, Level 5: Spicy, Level 6: Dwarven." return ..() From 5ce446930fb4cc81135ea44f10b007e73e3b0057 Mon Sep 17 00:00:00 2001 From: Shifty Date: Sat, 26 Apr 2025 09:58:43 +0100 Subject: [PATCH 3/7] SpI_ => SP_INV_ --- .../factions/bloodcult/bloodcult_spells.dm | 2 +- code/game/dna/genes/goon_disabilities.dm | 4 +-- code/game/dna/genes/goon_powers.dm | 10 +++---- code/game/dna/genes/powers.dm | 4 +-- code/game/dna/genes/vg_powers.dm | 4 +-- code/game/gamemodes/wizard/artefact.dm | 2 +- code/game/mecha/mecha.dm | 2 +- .../clothing/accessories/wristwatch.dm | 2 +- code/modules/clothing/spacesuits/time.dm | 2 +- code/modules/mob/dead/observer/spells.dm | 6 ++--- .../mob/living/carbon/species_powers.dm | 4 +-- .../silicon/robot/robot_subtypes/starman.dm | 12 ++++----- .../mob/living/simple_animal/shade_powers.dm | 10 +++---- code/modules/mob/mob.dm | 2 +- .../reagents/reagents/reagents_ethanol.dm | 2 +- .../effects/unknown_effect_timestop.dm | 2 +- code/modules/spells/aoe_turf/blink.dm | 2 +- code/modules/spells/aoe_turf/charge.dm | 2 +- .../spells/aoe_turf/conjure/arcane_golem.dm | 2 +- code/modules/spells/aoe_turf/conjure/bats.dm | 2 +- .../spells/aoe_turf/conjure/construct.dm | 26 +++++++++---------- .../spells/aoe_turf/conjure/doppelganger.dm | 2 +- .../spells/aoe_turf/conjure/forcewall.dm | 4 +-- .../spells/aoe_turf/conjure/pitbulls.dm | 2 +- .../spells/aoe_turf/conjure/pontiac.dm | 2 +- .../spells/aoe_turf/conjure/snowmobile.dm | 2 +- .../modules/spells/aoe_turf/conjure/spares.dm | 2 +- code/modules/spells/aoe_turf/conjure/spore.dm | 2 +- code/modules/spells/aoe_turf/disable_tech.dm | 2 +- code/modules/spells/aoe_turf/fall.dm | 4 +-- code/modules/spells/aoe_turf/glare.dm | 2 +- code/modules/spells/aoe_turf/hangcurse.dm | 2 +- code/modules/spells/aoe_turf/knock.dm | 2 +- code/modules/spells/aoe_turf/lightbulb.dm | 2 +- .../modules/spells/aoe_turf/magic_wardrobe.dm | 2 +- code/modules/spells/aoe_turf/screech.dm | 2 +- code/modules/spells/aoe_turf/smoke.dm | 2 +- code/modules/spells/aoe_turf/summons.dm | 6 ++--- .../spells/changeling/changeling_spell.dm | 2 +- code/modules/spells/construct_spells.dm | 2 +- code/modules/spells/general/area_teleport.dm | 2 +- code/modules/spells/general/cloak.dm | 2 +- code/modules/spells/general/lightning.dm | 2 +- code/modules/spells/general/reflect_pain.dm | 2 +- code/modules/spells/general/rejuvenate.dm | 2 +- code/modules/spells/general/ring_of_fire.dm | 2 +- code/modules/spells/general/rune_write.dm | 2 +- code/modules/spells/general/shapeshift.dm | 2 +- code/modules/spells/general/silentbite.dm | 2 +- code/modules/spells/general/undeath.dm | 2 +- code/modules/spells/spell_code.dm | 10 +++---- code/modules/spells/spider_spells.dm | 2 +- code/modules/spells/targeted/absorb.dm | 2 +- code/modules/spells/targeted/arcanetamper.dm | 2 +- code/modules/spells/targeted/balefulmutate.dm | 2 +- .../spells/targeted/buttbots_revenge.dm | 2 +- code/modules/spells/targeted/card.dm | 2 +- code/modules/spells/targeted/disease.dm | 2 +- code/modules/spells/targeted/disintegrate.dm | 2 +- code/modules/spells/targeted/disorient.dm | 2 +- code/modules/spells/targeted/enthrall.dm | 2 +- code/modules/spells/targeted/equip/cape.dm | 2 +- .../spells/targeted/equip/clowncurse.dm | 2 +- .../spells/targeted/equip/frenchcurse.dm | 2 +- .../spells/targeted/equip/horsemask.dm | 2 +- .../spells/targeted/equip/robesummon.dm | 2 +- .../modules/spells/targeted/ethereal_jaunt.dm | 6 ++--- code/modules/spells/targeted/feint.dm | 2 +- code/modules/spells/targeted/fist.dm | 2 +- code/modules/spells/targeted/flesh_to_coal.dm | 2 +- .../modules/spells/targeted/flesh_to_stone.dm | 2 +- code/modules/spells/targeted/genetic.dm | 4 +-- code/modules/spells/targeted/grease.dm | 2 +- code/modules/spells/targeted/harvest.dm | 2 +- code/modules/spells/targeted/heal.dm | 2 +- code/modules/spells/targeted/hypnotise.dm | 2 +- .../modules/spells/targeted/invoke_emotion.dm | 2 +- code/modules/spells/targeted/mind_transfer.dm | 2 +- code/modules/spells/targeted/pacify.dm | 2 +- code/modules/spells/targeted/parrotmorph.dm | 2 +- .../spells/targeted/prestidigitation.dm | 16 ++++++------ .../spells/targeted/projectile/fireball.dm | 2 +- .../spells/targeted/projectile/firebreath.dm | 2 +- .../targeted/projectile/magic_missile.dm | 2 +- .../spells/targeted/projectile/pie_throw.dm | 2 +- code/modules/spells/targeted/pumpkinhead.dm | 2 +- code/modules/spells/targeted/punch.dm | 4 +-- code/modules/spells/targeted/push.dm | 2 +- code/modules/spells/targeted/retard.dm | 2 +- code/modules/spells/targeted/shoesnatch.dm | 2 +- .../modules/spells/targeted/street_alchemy.dm | 2 +- code/modules/spells/targeted/summon_snacks.dm | 2 +- code/modules/spells/targeted/watertowine.dm | 2 +- code/modules/spells/targeted/wrap.dm | 2 +- 94 files changed, 144 insertions(+), 144 deletions(-) diff --git a/code/datums/gamemode/factions/bloodcult/bloodcult_spells.dm b/code/datums/gamemode/factions/bloodcult/bloodcult_spells.dm index 1e243b7d93f0..3b485fb0ea85 100644 --- a/code/datums/gamemode/factions/bloodcult/bloodcult_spells.dm +++ b/code/datums/gamemode/factions/bloodcult/bloodcult_spells.dm @@ -13,7 +13,7 @@ var/list/arcane_pockets = list() desc = "Cast while holding an Arcane Tome to discretly store it through the veil." hud_state = "cult_pocket_empty" - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE charge_type = SP_RECHARGE charge_max = 0 range = 0 diff --git a/code/game/dna/genes/goon_disabilities.dm b/code/game/dna/genes/goon_disabilities.dm index fed895dd2882..6f5c38871fd4 100644 --- a/code/game/dna/genes/goon_disabilities.dm +++ b/code/game/dna/genes/goon_disabilities.dm @@ -260,7 +260,7 @@ charge_max = 600 spell_flags = INCLUDEUSER - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = SELFCAST max_targets = 1 selection_type = "range" @@ -304,7 +304,7 @@ charge_max = 200 spell_flags = INCLUDEUSER | STATALLOWED - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = SELFCAST max_targets = 1 selection_type = "range" diff --git a/code/game/dna/genes/goon_powers.dm b/code/game/dna/genes/goon_powers.dm index 85dddfcbeeba..fc72f8bc973a 100644 --- a/code/game/dna/genes/goon_powers.dm +++ b/code/game/dna/genes/goon_powers.dm @@ -150,7 +150,7 @@ charge_max = 600 spell_flags = WAIT_FOR_CLICK - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 7 max_targets = 1 selection_type = "range" @@ -215,7 +215,7 @@ charge_type = SP_RECHARGE charge_max = 300 - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 1 max_targets = 1 selection_type = "view" @@ -431,7 +431,7 @@ charge_max = 60 spell_flags = INCLUDEUSER - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE duration = 10 //used for jump distance here @@ -550,7 +550,7 @@ charge_max = 1800 spell_flags = 0 - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 1 max_targets = 1 selection_type = "range" @@ -600,7 +600,7 @@ range = 7 max_targets = 1 spell_flags = SELECTABLE - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE charge_type = SP_RECHARGE charge_max = 100 diff --git a/code/game/dna/genes/powers.dm b/code/game/dna/genes/powers.dm index 899272cffb2b..1f57bb112adf 100644 --- a/code/game/dna/genes/powers.dm +++ b/code/game/dna/genes/powers.dm @@ -40,7 +40,7 @@ charge_type = SP_RECHARGE charge_max = 50 - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = GLOBALCAST max_targets = 1 spell_flags = SELECTABLE | TALKED_BEFORE @@ -126,7 +126,7 @@ panel = "Mutant Powers" charge_type = SP_RECHARGE charge_max = 0 - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = GLOBALCAST //the world max_targets = 1 selection_type = "view" diff --git a/code/game/dna/genes/vg_powers.dm b/code/game/dna/genes/vg_powers.dm index 1abf46ac29f0..5c2405933ddb 100644 --- a/code/game/dna/genes/vg_powers.dm +++ b/code/game/dna/genes/vg_powers.dm @@ -66,7 +66,7 @@ Obviously, requires DNA2. spell_flags = INCLUDEUSER - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE override_base = "genetic" hud_state = "gen_hulk" @@ -129,7 +129,7 @@ Obviously, requires DNA2. range = SELFCAST charge_type = SP_RECHARGE charge_max = 50 - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE spell_flags = INCLUDEUSER override_base = "genetic" hud_state = "wiz_sleepold" diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index 7b334c88b2ea..6a8eb5a2aaef 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -475,7 +475,7 @@ charge_type = SP_RECHARGE charge_max = 30 SECONDS - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT invocation = "FA'R N' AL'ENC'ED" range = 0 spell_flags = NEEDSCLOTHES | NEEDSHUMAN diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 0449d6063b47..52ec28cf786a 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -2073,7 +2073,7 @@ user_type = USER_TYPE_MECH range = 0 invocation = "none" - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE panel = "Mech Modules" spell_flags = null charge_type = SP_RECHARGE diff --git a/code/modules/clothing/accessories/wristwatch.dm b/code/modules/clothing/accessories/wristwatch.dm index a412e716219e..fd49068ec6b5 100644 --- a/code/modules/clothing/accessories/wristwatch.dm +++ b/code/modules/clothing/accessories/wristwatch.dm @@ -192,7 +192,7 @@ fall = new /spell/aoe_turf/fall caster.add_spell(fall) fall.spell_flags = 0 - fall.invocation_type = SpI_NONE + fall.invocation_type = SP_INV_NONE fall.the_world_chance = 0 fall.range = 3 fall.sleeptime = 5 SECONDS diff --git a/code/modules/clothing/spacesuits/time.dm b/code/modules/clothing/spacesuits/time.dm index d03f1dab1062..80cb6195e921 100644 --- a/code/modules/clothing/spacesuits/time.dm +++ b/code/modules/clothing/spacesuits/time.dm @@ -94,7 +94,7 @@ panel = "Time Powers" override_base = "time" invocation = "none" - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 0 still_recharging_msg = "The suit is still recharging." var/obj/item/clothing/suit/space/time/suit diff --git a/code/modules/mob/dead/observer/spells.dm b/code/modules/mob/dead/observer/spells.dm index 516b543b9ca0..ebf48c68043a 100644 --- a/code/modules/mob/dead/observer/spells.dm +++ b/code/modules/mob/dead/observer/spells.dm @@ -47,7 +47,7 @@ var/global/list/boo_phrases_silicon=list( school = "transmutation" charge_max = 60 SECONDS invocation = "" - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 1 // Or maybe 3? override_base = "grey" @@ -73,7 +73,7 @@ var/global/list/boo_phrases_silicon=list( charge_type = SP_RECHARGE charge_max = 0 invocation = "" - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = SELFCAST max_targets = 1 @@ -153,7 +153,7 @@ var/global/list/boo_phrases_silicon=list( school = "transmutation" charge_type = 0 // Apparently bypasses charge checks. invocation = "" - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE override_base = "grey" hud_state = "stationmap" diff --git a/code/modules/mob/living/carbon/species_powers.dm b/code/modules/mob/living/carbon/species_powers.dm index a56930262c2b..feaf459532de 100644 --- a/code/modules/mob/living/carbon/species_powers.dm +++ b/code/modules/mob/living/carbon/species_powers.dm @@ -12,7 +12,7 @@ spell_flags = INCLUDEUSER - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE override_base = "genetic" hud_state = "wiz_sleepold" @@ -105,7 +105,7 @@ charge_max = 20 - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE /spell/targeted/transfer_reagents/is_valid_target(atom/target, mob/user, options, bypass_range = 0) if(!istype(target, /obj/machinery/portable_atmospherics/hydroponics)) diff --git a/code/modules/mob/living/silicon/robot/robot_subtypes/starman.dm b/code/modules/mob/living/silicon/robot/robot_subtypes/starman.dm index e8d5722d0734..b0ee67ac4d54 100644 --- a/code/modules/mob/living/silicon/robot/robot_subtypes/starman.dm +++ b/code/modules/mob/living/silicon/robot/robot_subtypes/starman.dm @@ -76,7 +76,7 @@ name = "Telepathic Binaural Attack" desc = "Forces the menacing tunes of the Starman into the minds of all your enemies. And you." hud_state = "time_future" - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE charge_type = SP_RECHARGE charge_max = 10 var/list/starman_music = list('sound/music/battle_against_a_machine.ogg', 'sound/music/imbossible.ogg') @@ -107,7 +107,7 @@ school = "evocation" charge_type = SP_RECHARGE charge_max = 60 - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 8 max_targets = 1 spell_flags = WAIT_FOR_CLICK @@ -141,7 +141,7 @@ hud_state = "psi_lifeup_alpha" charge_type = SP_RECHARGE charge_max = 250 - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE var/heal_amount = 30 /spell/aoe_turf/starman_heal/cast(list/targets, mob/living/user = user) @@ -176,7 +176,7 @@ school = "evocation" charge_type = SP_RECHARGE charge_max = 150 - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 8 max_targets = 1 spell_flags = WAIT_FOR_CLICK @@ -235,7 +235,7 @@ charge_max = 1800 charge_type = SP_RECHARGE - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE duration = 100 range = 5 @@ -286,7 +286,7 @@ charge_max = 300 charge_type = SP_RECHARGE - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE duration = 100 range = 6 diff --git a/code/modules/mob/living/simple_animal/shade_powers.dm b/code/modules/mob/living/simple_animal/shade_powers.dm index 838256da8101..80aeb47daaa4 100644 --- a/code/modules/mob/living/simple_animal/shade_powers.dm +++ b/code/modules/mob/living/simple_animal/shade_powers.dm @@ -95,7 +95,7 @@ desc = "(1 BLOOD) Move yourself without the need of being held." hud_state = "souldblade_move" - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE charge_type = SP_RECHARGE charge_max = 0 range = 0 @@ -116,7 +116,7 @@ desc = "(5 BLOOD) Stop your momentum and cut in front of you." hud_state = "soulblade_spin" - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE charge_type = SP_RECHARGE charge_max = 0 range = 0 @@ -233,7 +233,7 @@ desc = "(20 BLOOD) Hurl yourself through the air. You can cast this spell by doing a Drag n Drop with your mouse for more interesting trajectories. If you hit a cultist, they'll automatically grab you." hud_state = "soulblade_perforate" - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE charge_type = SP_RECHARGE charge_max = 40 range = 0 @@ -308,7 +308,7 @@ desc = "(10 BLOOD) Heal some of your wielder's brute damage using your blood." hud_state = "soulblade_mend" - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE charge_type = SP_RECHARGE charge_max = 20 range = 0 @@ -360,7 +360,7 @@ desc = "(FREE) Change whether you allow people who aren't either cultists or the person that soulstone'd you to wield you." hud_state = "soulblade_harm" - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE charge_type = SP_RECHARGE charge_max = 20 range = 0 diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index bae22e2ea982..e2fb7d713e23 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -2071,7 +2071,7 @@ Use this proc preferably at the end of an equipment loadout abbreviation = "RF" charge_max = 1 invocation = "none" - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 0 hud_state = "wiz_mindswap" diff --git a/code/modules/reagents/reagents/reagents_ethanol.dm b/code/modules/reagents/reagents/reagents_ethanol.dm index b873a77feedd..cfbd763b925b 100644 --- a/code/modules/reagents/reagents/reagents_ethanol.dm +++ b/code/modules/reagents/reagents/reagents_ethanol.dm @@ -580,7 +580,7 @@ fakespell.desc = fromwhichwetake.desc fakespell.hud_state = fromwhichwetake.hud_state fakespell.invocation = "MAH'JIK" - fakespell.invocation_type = SpI_SHOUT + fakespell.invocation_type = SP_INV_SHOUT fakespell.charge_type = SP_CHARGES fakespell.charge_counter = 0 fakespell.charge_max = 1 diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_timestop.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_timestop.dm index e81d6575dfc6..92f22d85115a 100644 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_timestop.dm +++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_timestop.dm @@ -18,7 +18,7 @@ fall = new /spell/aoe_turf/fall caster.add_spell(fall) fall.spell_flags = 0 - fall.invocation_type = SpI_NONE + fall.invocation_type = SP_INV_NONE fall.the_world_chance = 0 chargelevelmax = rand(30, 200) effectrange = rand(2, 15) diff --git a/code/modules/spells/aoe_turf/blink.dm b/code/modules/spells/aoe_turf/blink.dm index 651711313a64..c1f4f616788c 100644 --- a/code/modules/spells/aoe_turf/blink.dm +++ b/code/modules/spells/aoe_turf/blink.dm @@ -9,7 +9,7 @@ charge_max = 20 spell_flags = IGNOREDENSE | IGNORESPACE invocation = "none" - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 7 inner_radius = 1 cooldown_min = 5 //4 deciseconds reduction per rank diff --git a/code/modules/spells/aoe_turf/charge.dm b/code/modules/spells/aoe_turf/charge.dm index a7c04201fafb..aca55eeb4d09 100644 --- a/code/modules/spells/aoe_turf/charge.dm +++ b/code/modules/spells/aoe_turf/charge.dm @@ -8,7 +8,7 @@ charge_max = 600 spell_flags = 0 invocation = "DIRI CEL" - invocation_type = SpI_WHISPER + invocation_type = SP_INV_WHISPER range = 0 cooldown_min = 400 //50 deciseconds reduction per rank diff --git a/code/modules/spells/aoe_turf/conjure/arcane_golem.dm b/code/modules/spells/aoe_turf/conjure/arcane_golem.dm index d154c15b22db..9032cec1f876 100644 --- a/code/modules/spells/aoe_turf/conjure/arcane_golem.dm +++ b/code/modules/spells/aoe_turf/conjure/arcane_golem.dm @@ -14,7 +14,7 @@ spell_flags = NEEDSCLOTHES | Z2NOCAST | IS_HARMFUL invocation = "ARCANUM VIRIUM CONGREGABO" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT range = 0 summon_type = list(/mob/living/simple_animal/hostile/arcane_golem) diff --git a/code/modules/spells/aoe_turf/conjure/bats.dm b/code/modules/spells/aoe_turf/conjure/bats.dm index 932c7933eabe..689f53d8cbd3 100644 --- a/code/modules/spells/aoe_turf/conjure/bats.dm +++ b/code/modules/spells/aoe_turf/conjure/bats.dm @@ -9,7 +9,7 @@ charge_max = 2 MINUTES cooldown_min = 2 MINUTES invocation = "" - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE override_base = "vamp" diff --git a/code/modules/spells/aoe_turf/conjure/construct.dm b/code/modules/spells/aoe_turf/conjure/construct.dm index d381428f3a34..a33cc69153fb 100644 --- a/code/modules/spells/aoe_turf/conjure/construct.dm +++ b/code/modules/spells/aoe_turf/conjure/construct.dm @@ -9,7 +9,7 @@ charge_max = 600 spell_flags = 0 invocation = "none" - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 0 summon_type = list(/obj/structure/constructshell) @@ -47,7 +47,7 @@ charge_max = 50 spell_flags = Z2NOCAST | CONSTRUCT_CHECK invocation = "none" - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 3 summon_type = list(/turf/simulated/floor/engine/cult) @@ -89,7 +89,7 @@ charge_max = 100 spell_flags = Z2NOCAST | CONSTRUCT_CHECK invocation = "none" - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 3 summon_type = list(/turf/simulated/wall/cult) @@ -131,7 +131,7 @@ charge_max = 100 spell_flags = Z2NOCAST | CONSTRUCT_CHECK invocation = "none" - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 3 summon_type = list(/obj/machinery/door/mineral/cult) @@ -161,7 +161,7 @@ charge_max = 300 spell_flags = Z2NOCAST invocation = "none" - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 0 cast_delay = 50 cast_sound = 'sound/items/welder.ogg' @@ -176,7 +176,7 @@ charge_max = 3000 spell_flags = 0 invocation = "none" - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 0 cast_delay = 30 @@ -203,7 +203,7 @@ charge_max = 200 spell_flags = CONSTRUCT_CHECK|IGNORESPACE|IGNOREDENSE|NODUPLICATE invocation = "none" - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 0 cast_delay = 20 @@ -232,7 +232,7 @@ charge_max = 300 spell_flags = 0 invocation = "none" - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 0 summon_type = list(/obj/effect/forcefield/cult) duration = 200 @@ -266,7 +266,7 @@ charge_max = 250 spell_flags = 0 invocation = "none" - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 0 summon_type = list(/obj/effect/forcefield/cult/large) duration = 200 @@ -356,7 +356,7 @@ charge_max = 600 spell_flags = 0 invocation = "none" - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 0 cast_delay = 60 summon_type = list(/mob/living/simple_animal/hostile/hex) @@ -405,7 +405,7 @@ charge_max = 200 spell_flags = 0 invocation = "none" - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 0 cast_delay = 60 summon_type = list(/obj/structure/cult/altar) @@ -462,7 +462,7 @@ charge_max = 600 spell_flags = Z2NOCAST | CONSTRUCT_CHECK invocation = "none" - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 1 summon_type = list(/obj/effect/rune) @@ -505,7 +505,7 @@ charge_max = 600 spell_flags = Z2NOCAST | CONSTRUCT_CHECK invocation = "none" - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 1 summon_type = list(/obj/effect/rune) diff --git a/code/modules/spells/aoe_turf/conjure/doppelganger.dm b/code/modules/spells/aoe_turf/conjure/doppelganger.dm index 053323eebce0..4a961c03d1ef 100644 --- a/code/modules/spells/aoe_turf/conjure/doppelganger.dm +++ b/code/modules/spells/aoe_turf/conjure/doppelganger.dm @@ -12,7 +12,7 @@ cooldown_reduc = 100 cooldown_min = 100 invocation = "MY O'N CLO'N" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT spell_flags = NEEDSCLOTHES | IS_HARMFUL hud_state = "wiz_doppelganger" var/spell_duration = 8 MINUTES diff --git a/code/modules/spells/aoe_turf/conjure/forcewall.dm b/code/modules/spells/aoe_turf/conjure/forcewall.dm index 4899525c2b5e..1d9a6589bedf 100644 --- a/code/modules/spells/aoe_turf/conjure/forcewall.dm +++ b/code/modules/spells/aoe_turf/conjure/forcewall.dm @@ -24,7 +24,7 @@ user_type = USER_TYPE_OTHER panel = "Mime" summon_type = list(/obj/effect/forcefield/mime) - invocation_type = SpI_EMOTE + invocation_type = SP_INV_EMOTE invocation = "mimes placing their hands on a flat surface, and pushing against it." charge_max = 300 cast_sound = null @@ -52,7 +52,7 @@ Unwall spell, sadly has to be targeted to be any fun to use spell_flags = WAIT_FOR_CLICK range = 1 max_targets = 1 - invocation_type = SpI_EMOTE + invocation_type = SP_INV_EMOTE invocation = "mimes placing their hands on a flat surface, and pushing against it." override_base = "grey" diff --git a/code/modules/spells/aoe_turf/conjure/pitbulls.dm b/code/modules/spells/aoe_turf/conjure/pitbulls.dm index 05e9fa08a4b1..f43c05b6d053 100644 --- a/code/modules/spells/aoe_turf/conjure/pitbulls.dm +++ b/code/modules/spells/aoe_turf/conjure/pitbulls.dm @@ -13,7 +13,7 @@ cooldown_reduc = 100 cooldown_min = 100 invocation = "GR'T W'TH K'DS" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT spell_flags = NEEDSCLOTHES hud_state = "pitbull" cast_sound = 'sound/voice/pitbullbark.ogg' diff --git a/code/modules/spells/aoe_turf/conjure/pontiac.dm b/code/modules/spells/aoe_turf/conjure/pontiac.dm index 789c7eb371f3..d034e45c96b8 100644 --- a/code/modules/spells/aoe_turf/conjure/pontiac.dm +++ b/code/modules/spells/aoe_turf/conjure/pontiac.dm @@ -12,7 +12,7 @@ school = "conjuration" spell_flags = Z2NOCAST invocation = "NO F'AT C'HX" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT level_max = list(SP_TOTAL = 0) range = 0 diff --git a/code/modules/spells/aoe_turf/conjure/snowmobile.dm b/code/modules/spells/aoe_turf/conjure/snowmobile.dm index 58b1dd9bf925..491a958bacf7 100644 --- a/code/modules/spells/aoe_turf/conjure/snowmobile.dm +++ b/code/modules/spells/aoe_turf/conjure/snowmobile.dm @@ -8,7 +8,7 @@ school = "conjuration" spell_flags = Z2NOCAST invocation = "SL'IGH B'LLS RIN'!" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT range = 0 summon_type = list(/obj/structure/bed/chair/vehicle/firebird/santa) diff --git a/code/modules/spells/aoe_turf/conjure/spares.dm b/code/modules/spells/aoe_turf/conjure/spares.dm index 28396670f644..fab3b81fb86b 100644 --- a/code/modules/spells/aoe_turf/conjure/spares.dm +++ b/code/modules/spells/aoe_turf/conjure/spares.dm @@ -9,7 +9,7 @@ school = "conjuration" invocation = "W'ZZ GO' T'E S'RE!" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT charge_max = 300 spell_flags = 0 diff --git a/code/modules/spells/aoe_turf/conjure/spore.dm b/code/modules/spells/aoe_turf/conjure/spore.dm index efe1ad71e8d7..e6258a29a4c1 100644 --- a/code/modules/spells/aoe_turf/conjure/spore.dm +++ b/code/modules/spells/aoe_turf/conjure/spore.dm @@ -3,7 +3,7 @@ desc = "It's nearly impossible to keep what is writhing inside you from breaking out. Release it." school = "conjuration" - invocation_type = SpI_EMOTE + invocation_type = SP_INV_EMOTE invocation = "kneels down as their eyes roll back and creatures emerge from their mouth." still_recharging_msg = "You are still recovering." spell_flags = 0 diff --git a/code/modules/spells/aoe_turf/disable_tech.dm b/code/modules/spells/aoe_turf/disable_tech.dm index cc9907cf1633..500af7ee6aa2 100644 --- a/code/modules/spells/aoe_turf/disable_tech.dm +++ b/code/modules/spells/aoe_turf/disable_tech.dm @@ -8,7 +8,7 @@ charge_max = 400 spell_flags = NEEDSCLOTHES invocation = "NEC CANTIO" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT selection_type = "range" range = 0 inner_radius = -1 diff --git a/code/modules/spells/aoe_turf/fall.dm b/code/modules/spells/aoe_turf/fall.dm index 12fc34671ce0..32bed0350ee8 100644 --- a/code/modules/spells/aoe_turf/fall.dm +++ b/code/modules/spells/aoe_turf/fall.dm @@ -15,7 +15,7 @@ var/global/list/falltempoverlays = list() school = "transmutation" charge_max = 500 // now 2min invocation = "OMNIA RUINAM" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT range = 6 cooldown_min = 200 cooldown_reduc = 100 @@ -245,7 +245,7 @@ var/global/list/falltempoverlays = list() caster.flags = INVULNERABLE caster.add_spell(fall) fall.spell_flags = 0 - fall.invocation_type = SpI_NONE + fall.invocation_type = SP_INV_NONE fall.the_world_chance = 0 fall.range = range ? range : 7 //how big fall.sleeptime = duration //for how long diff --git a/code/modules/spells/aoe_turf/glare.dm b/code/modules/spells/aoe_turf/glare.dm index 9d42f139a891..adddd873900a 100644 --- a/code/modules/spells/aoe_turf/glare.dm +++ b/code/modules/spells/aoe_turf/glare.dm @@ -8,7 +8,7 @@ charge_type = SP_RECHARGE charge_max = 3 MINUTES - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 3 spell_flags = NEEDSHUMAN cooldown_min = 3 MINUTES diff --git a/code/modules/spells/aoe_turf/hangcurse.dm b/code/modules/spells/aoe_turf/hangcurse.dm index b323abaa4201..d603113e5cfd 100644 --- a/code/modules/spells/aoe_turf/hangcurse.dm +++ b/code/modules/spells/aoe_turf/hangcurse.dm @@ -14,7 +14,7 @@ Removes letters in the afflicted's sentences like the virology symptom, others m charge_max = 500 spell_flags = null invocation = "V_R'_ R_'UG_" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT selection_type = "range" range = 3 inner_radius = -1 diff --git a/code/modules/spells/aoe_turf/knock.dm b/code/modules/spells/aoe_turf/knock.dm index 98ed67a4e44a..112057179459 100644 --- a/code/modules/spells/aoe_turf/knock.dm +++ b/code/modules/spells/aoe_turf/knock.dm @@ -9,7 +9,7 @@ charge_max = 100 spell_flags = 0 invocation = "AULIE OXIN FIERA" - invocation_type = SpI_WHISPER + invocation_type = SP_INV_WHISPER range = 3 cooldown_min = 20 //20 deciseconds reduction per rank diff --git a/code/modules/spells/aoe_turf/lightbulb.dm b/code/modules/spells/aoe_turf/lightbulb.dm index 86cfbca9289d..d1a8826938f6 100644 --- a/code/modules/spells/aoe_turf/lightbulb.dm +++ b/code/modules/spells/aoe_turf/lightbulb.dm @@ -8,7 +8,7 @@ charge_max = 150 spell_flags = null invocation = "EAIS' RAUG" - invocation_type = SpI_WHISPER + invocation_type = SP_INV_WHISPER selection_type = "range" range = 7 inner_radius = -1 diff --git a/code/modules/spells/aoe_turf/magic_wardrobe.dm b/code/modules/spells/aoe_turf/magic_wardrobe.dm index 09941c6f37d7..17452daf9cac 100644 --- a/code/modules/spells/aoe_turf/magic_wardrobe.dm +++ b/code/modules/spells/aoe_turf/magic_wardrobe.dm @@ -8,7 +8,7 @@ charge_max = 300 SECONDS cooldown_min = 150 SECONDS spell_flags = NEEDSCLOTHES | Z2NOCAST - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT invocation = "NAR'NI'AH" summon_type = list(/obj/structure/closet/magical_wardrobe) price = 0.75 * SP_BASE_PRICE diff --git a/code/modules/spells/aoe_turf/screech.dm b/code/modules/spells/aoe_turf/screech.dm index 5276ce08a589..967cad29a67c 100644 --- a/code/modules/spells/aoe_turf/screech.dm +++ b/code/modules/spells/aoe_turf/screech.dm @@ -8,7 +8,7 @@ charge_type = SP_RECHARGE charge_max = 5 MINUTES - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 4 spell_flags = STATALLOWED | NEEDSHUMAN cooldown_min = 5 MINUTES diff --git a/code/modules/spells/aoe_turf/smoke.dm b/code/modules/spells/aoe_turf/smoke.dm index 877a0108d82c..6569d6ac1120 100644 --- a/code/modules/spells/aoe_turf/smoke.dm +++ b/code/modules/spells/aoe_turf/smoke.dm @@ -9,7 +9,7 @@ charge_max = 120 spell_flags = 0 invocation = "none" - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 1 inner_radius = -1 cooldown_min = 20 //25 deciseconds reduction per rank diff --git a/code/modules/spells/aoe_turf/summons.dm b/code/modules/spells/aoe_turf/summons.dm index 95f996c4c46a..53f9fb384438 100644 --- a/code/modules/spells/aoe_turf/summons.dm +++ b/code/modules/spells/aoe_turf/summons.dm @@ -19,7 +19,7 @@ charge_max = 1200 spell_flags = NEEDSCLOTHES invocation = "NOUK FHUNMM SACP RISSKA" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT range = 1 summon_type = list(/mob/living/simple_animal/hostile/carp) @@ -35,7 +35,7 @@ charge_max = 1200 spell_flags = 0 invocation = "IA IA" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT summon_amt = 10 range = 3 @@ -52,7 +52,7 @@ charge_max = 1200 spell_flags = NEEDSCLOTHES invocation = "What did the Gingerbread Man put on his bed? A cookie sheet!" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT range = 1 summon_type = list(/mob/living/simple_animal/hostile/gingerbread) diff --git a/code/modules/spells/changeling/changeling_spell.dm b/code/modules/spells/changeling/changeling_spell.dm index 76a5b94a3c46..1285d6ec7434 100644 --- a/code/modules/spells/changeling/changeling_spell.dm +++ b/code/modules/spells/changeling/changeling_spell.dm @@ -9,7 +9,7 @@ charge_type = SP_RECHARGE charge_max = 1 SECONDS - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 0 cooldown_min = 1 SECONDS diff --git a/code/modules/spells/construct_spells.dm b/code/modules/spells/construct_spells.dm index 48474c2772ef..9c59e0cbfd12 100644 --- a/code/modules/spells/construct_spells.dm +++ b/code/modules/spells/construct_spells.dm @@ -50,7 +50,7 @@ charge_max = 75 spell_flags = Z2NOCAST | CONSTRUCT_CHECK | WAIT_FOR_CLICK invocation = "none" - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 7 override_base = "cult" diff --git a/code/modules/spells/general/area_teleport.dm b/code/modules/spells/general/area_teleport.dm index 6dd5a3bed64e..ba4b6c7b683a 100644 --- a/code/modules/spells/general/area_teleport.dm +++ b/code/modules/spells/general/area_teleport.dm @@ -9,7 +9,7 @@ spell_flags = NEEDSCLOTHES autocast_flags = AUTOCAST_NOTARGET invocation = "SCYAR NILA" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT charge_max = 45 SECONDS cooldown_min = 5 SECONDS diff --git a/code/modules/spells/general/cloak.dm b/code/modules/spells/general/cloak.dm index e50155506183..a7150832dfe0 100644 --- a/code/modules/spells/general/cloak.dm +++ b/code/modules/spells/general/cloak.dm @@ -8,7 +8,7 @@ charge_type = SP_RECHARGE charge_max = 1 SECONDS - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 0 spell_flags = STATALLOWED | NEEDSHUMAN cooldown_min = 1 SECONDS diff --git a/code/modules/spells/general/lightning.dm b/code/modules/spells/general/lightning.dm index ada664e3c9a2..bca597e9a0f9 100644 --- a/code/modules/spells/general/lightning.dm +++ b/code/modules/spells/general/lightning.dm @@ -14,7 +14,7 @@ spell_flags = NEEDSCLOTHES | WAIT_FOR_CLICK | IS_HARMFUL charge_type = SP_RECHARGE invocation = "ZAP MUTHA FUH KA" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT hud_state = "wiz_zap" valid_targets = list(/mob/living,/obj/machinery/bot,/obj/mecha) diff --git a/code/modules/spells/general/reflect_pain.dm b/code/modules/spells/general/reflect_pain.dm index 3d0a43acf998..bb410e58a8ac 100644 --- a/code/modules/spells/general/reflect_pain.dm +++ b/code/modules/spells/general/reflect_pain.dm @@ -10,7 +10,7 @@ spell_flags = NEEDSCLOTHES invocation = "KON TEAH STOV" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT cooldown_min = 10 SECONDS hud_state = "wiz_reflect_pain" diff --git a/code/modules/spells/general/rejuvenate.dm b/code/modules/spells/general/rejuvenate.dm index 23ad9aa063a5..d46c1f8aaa26 100644 --- a/code/modules/spells/general/rejuvenate.dm +++ b/code/modules/spells/general/rejuvenate.dm @@ -8,7 +8,7 @@ charge_type = SP_RECHARGE charge_max = 3 MINUTES - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 0 spell_flags = STATALLOWED | NEEDSHUMAN cooldown_min = 3 MINUTES diff --git a/code/modules/spells/general/ring_of_fire.dm b/code/modules/spells/general/ring_of_fire.dm index 3e27906213c4..69ca53e299f4 100644 --- a/code/modules/spells/general/ring_of_fire.dm +++ b/code/modules/spells/general/ring_of_fire.dm @@ -14,7 +14,7 @@ spell_aspect_flags = SPELL_FIRE charge_type = SP_RECHARGE invocation = "E ROHA" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT hud_state = "wiz_firering" price = SP_BASE_PRICE / 2 diff --git a/code/modules/spells/general/rune_write.dm b/code/modules/spells/general/rune_write.dm index 9a0b843c802c..a4c4fda31a15 100644 --- a/code/modules/spells/general/rune_write.dm +++ b/code/modules/spells/general/rune_write.dm @@ -6,7 +6,7 @@ school = "evocation" charge_max = 100 charge_type = SP_RECHARGE - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE spell_flags = CONSTRUCT_CHECK diff --git a/code/modules/spells/general/shapeshift.dm b/code/modules/spells/general/shapeshift.dm index cd563e3d639b..8e3b3187dac5 100644 --- a/code/modules/spells/general/shapeshift.dm +++ b/code/modules/spells/general/shapeshift.dm @@ -11,7 +11,7 @@ spell_flags = NEEDSHUMAN charge_type = SP_RECHARGE - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 0 override_base = "vamp" diff --git a/code/modules/spells/general/silentbite.dm b/code/modules/spells/general/silentbite.dm index 86611a3de4e5..3943ede01d8b 100644 --- a/code/modules/spells/general/silentbite.dm +++ b/code/modules/spells/general/silentbite.dm @@ -8,7 +8,7 @@ charge_type = SP_RECHARGE charge_max = 1 SECONDS - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 0 spell_flags = STATALLOWED | NEEDSHUMAN cooldown_min = 1 SECONDS diff --git a/code/modules/spells/general/undeath.dm b/code/modules/spells/general/undeath.dm index c4e9e1c7da6d..80bfe4834d43 100644 --- a/code/modules/spells/general/undeath.dm +++ b/code/modules/spells/general/undeath.dm @@ -8,7 +8,7 @@ charge_type = SP_RECHARGE charge_max = 1 SECONDS - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 0 spell_flags = STATALLOWED | NEEDSHUMAN cooldown_min = 45 SECONDS diff --git a/code/modules/spells/spell_code.dm b/code/modules/spells/spell_code.dm index 75d06c227824..b964bebaa003 100644 --- a/code/modules/spells/spell_code.dm +++ b/code/modules/spells/spell_code.dm @@ -82,7 +82,7 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now /// what is uttered when the wizard casts the spell var/invocation = "HURP DURP" /// can be none, whisper, shout, and emote - var/invocation_type = SpI_NONE + var/invocation_type = SP_INV_NONE /// the range of the spell; outer radius for aoe spells var/range = 7 /// whatever it says to the guy affected by it @@ -507,7 +507,7 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now to_chat(user, "Not when you're incapacitated.") return 0 - if((ishuman(user) || ismonkey(user)) && !(invocation_type in list(SpI_EMOTE, SpI_NONE))) + if((ishuman(user) || ismonkey(user)) && !(invocation_type in list(SP_INV_EMOTE, SP_INV_NONE))) if(user.wear_mask?.is_muzzle) to_chat(user, "Mmmf mrrfff!") return 0 @@ -600,17 +600,17 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now switch(invocation_type) - if(SpI_SHOUT) + if(SP_INV_SHOUT) if(prob(50))//Auto-mute? Fuck that noise user.say(invocation) else user.say(replacetext(invocation," ","`")) - if(SpI_WHISPER) + if(SP_INV_WHISPER) if(prob(50)) user.whisper(invocation) else user.whisper(replacetext(invocation," ","`")) - if(SpI_EMOTE) + if(SP_INV_EMOTE) user.emote("me", 1, invocation) //the 1 means it's for everyone in view, the me makes it an emote, and the invocation is written accordingly. ///////////////////// diff --git a/code/modules/spells/spider_spells.dm b/code/modules/spells/spider_spells.dm index deaf79820d39..2205def9713c 100644 --- a/code/modules/spells/spider_spells.dm +++ b/code/modules/spells/spider_spells.dm @@ -27,7 +27,7 @@ charge_max = 0 spell_flags = 0 - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE summon_type = list(/obj/effect/spider/stickyweb) range = 0 diff --git a/code/modules/spells/targeted/absorb.dm b/code/modules/spells/targeted/absorb.dm index 97c1b04754f8..5466639c4cb0 100644 --- a/code/modules/spells/targeted/absorb.dm +++ b/code/modules/spells/targeted/absorb.dm @@ -7,7 +7,7 @@ school = "evocation" charge_max = 100 spell_flags = IS_HARMFUL - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT range = 0 cooldown_min = 200 diff --git a/code/modules/spells/targeted/arcanetamper.dm b/code/modules/spells/targeted/arcanetamper.dm index a39ebbf957c0..f32e0ee0d2c4 100644 --- a/code/modules/spells/targeted/arcanetamper.dm +++ b/code/modules/spells/targeted/arcanetamper.dm @@ -13,7 +13,7 @@ charge_max = 150 spell_flags = NEEDSCLOTHES // now it's balanced invocation = "E'MAGI!" - invocation_type = SpI_NONE // we say it in the arcane_acts + invocation_type = SP_INV_NONE // we say it in the arcane_acts level_max = list(SP_TOTAL = 4, SP_SPEED = 2, SP_POWER = 2) range = 1 cooldown_min = 100 // 50 deciseconds reduction per rank diff --git a/code/modules/spells/targeted/balefulmutate.dm b/code/modules/spells/targeted/balefulmutate.dm index d17a9a43bcc4..f038cc739215 100644 --- a/code/modules/spells/targeted/balefulmutate.dm +++ b/code/modules/spells/targeted/balefulmutate.dm @@ -5,7 +5,7 @@ school = "transmutation" charge_max = 600 invocation = "MAHNSTUR MACH!" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT range = 1 spell_flags = NEEDSCLOTHES | WAIT_FOR_CLICK hud_state = "wiz_bmutate" diff --git a/code/modules/spells/targeted/buttbots_revenge.dm b/code/modules/spells/targeted/buttbots_revenge.dm index 9c5da76d6b12..20af7e724d1c 100644 --- a/code/modules/spells/targeted/buttbots_revenge.dm +++ b/code/modules/spells/targeted/buttbots_revenge.dm @@ -9,7 +9,7 @@ charge_max = 500 spell_flags = NEEDSCLOTHES | WAIT_FOR_CLICK | IS_HARMFUL invocation = "ARSE NATH" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT range = 1 cooldown_min = 200 //100 deciseconds reduction per rank level_max = list(SP_TOTAL = 5, SP_SPEED = 4, SP_POWER = 1) diff --git a/code/modules/spells/targeted/card.dm b/code/modules/spells/targeted/card.dm index 3fc49bd6a705..eb97d7d39d67 100644 --- a/code/modules/spells/targeted/card.dm +++ b/code/modules/spells/targeted/card.dm @@ -7,7 +7,7 @@ school = "transmutation" charge_max = 100 //10 seconds spell_flags = WAIT_FOR_CLICK - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT max_targets = 1 valid_targets = list(/mob/living/carbon/human) level_max = list(SP_TOTAL = 0, SP_SPEED = 0, SP_POWER = 0) //You can't quicken this, this would be kind of useless diff --git a/code/modules/spells/targeted/disease.dm b/code/modules/spells/targeted/disease.dm index f15692719f1f..f855e4e87935 100644 --- a/code/modules/spells/targeted/disease.dm +++ b/code/modules/spells/targeted/disease.dm @@ -8,7 +8,7 @@ charge_type = SP_RECHARGE charge_max = 3 MINUTES - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 1 max_targets = 1 spell_flags = WAIT_FOR_CLICK | NEEDSHUMAN diff --git a/code/modules/spells/targeted/disintegrate.dm b/code/modules/spells/targeted/disintegrate.dm index a056befb80a6..5ae301533277 100644 --- a/code/modules/spells/targeted/disintegrate.dm +++ b/code/modules/spells/targeted/disintegrate.dm @@ -8,7 +8,7 @@ charge_max = 600 spell_flags = NEEDSCLOTHES | IS_HARMFUL invocation = "EI NATH" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT range = 1 cooldown_min = 200 //100 deciseconds reduction per rank diff --git a/code/modules/spells/targeted/disorient.dm b/code/modules/spells/targeted/disorient.dm index 90762b71c7ad..da6338f768dc 100644 --- a/code/modules/spells/targeted/disorient.dm +++ b/code/modules/spells/targeted/disorient.dm @@ -8,7 +8,7 @@ school = "transmutation" charge_max = 300 invocation = "DII ODA BAJI" - invocation_type = SpI_WHISPER + invocation_type = SP_INV_WHISPER message = "You suddenly feel completely overwhelmed!" level_max = list(SP_TOTAL = 5, SP_SPEED = 4, SP_POWER = 1) diff --git a/code/modules/spells/targeted/enthrall.dm b/code/modules/spells/targeted/enthrall.dm index 69fe450d8acf..696a721985c3 100644 --- a/code/modules/spells/targeted/enthrall.dm +++ b/code/modules/spells/targeted/enthrall.dm @@ -8,7 +8,7 @@ charge_type = SP_RECHARGE charge_max = 3 MINUTES - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 1 max_targets = 1 spell_flags = WAIT_FOR_CLICK | NEEDSHUMAN diff --git a/code/modules/spells/targeted/equip/cape.dm b/code/modules/spells/targeted/equip/cape.dm index 6e7321cba53b..9c5b66a4ba25 100644 --- a/code/modules/spells/targeted/equip/cape.dm +++ b/code/modules/spells/targeted/equip/cape.dm @@ -7,7 +7,7 @@ user_type = USER_TYPE_VAMPIRE charge_max = 300 - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = SELFCAST spell_flags = INCLUDEUSER diff --git a/code/modules/spells/targeted/equip/clowncurse.dm b/code/modules/spells/targeted/equip/clowncurse.dm index 9ca9e6632f11..58e254788826 100644 --- a/code/modules/spells/targeted/equip/clowncurse.dm +++ b/code/modules/spells/targeted/equip/clowncurse.dm @@ -8,7 +8,7 @@ school = "evocation" charge_max = 300 invocation = "L' C'MMEDIA E F'NITA!" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT range = 1 spell_flags = WAIT_FOR_CLICK //SELECTABLE hinders you here, since the spell has a range of 1 and only works on adjacent guys. Having the TARGETTED flag here makes it easy for your target to run away from you! diff --git a/code/modules/spells/targeted/equip/frenchcurse.dm b/code/modules/spells/targeted/equip/frenchcurse.dm index 1dd107148f4c..96394b310782 100644 --- a/code/modules/spells/targeted/equip/frenchcurse.dm +++ b/code/modules/spells/targeted/equip/frenchcurse.dm @@ -8,7 +8,7 @@ school = "evocation" charge_max = 300 invocation = "FU'K Y'U D'NY" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT range = 1 spell_flags = WAIT_FOR_CLICK //SELECTABLE hinders you here, since the spell has a range of 1 and only works on adjacent guys. Having the TARGETTED flag here makes it easy for your target to run away from you! cooldown_min = 50 diff --git a/code/modules/spells/targeted/equip/horsemask.dm b/code/modules/spells/targeted/equip/horsemask.dm index 37345a8c8a25..018402d76325 100644 --- a/code/modules/spells/targeted/equip/horsemask.dm +++ b/code/modules/spells/targeted/equip/horsemask.dm @@ -10,7 +10,7 @@ charge_max = 150 charge_counter = 0 invocation = "KN'A FTAGHU, PUCK 'BTHNK!" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT range = 7 max_targets = 1 cooldown_min = 30 //30 deciseconds reduction per rank diff --git a/code/modules/spells/targeted/equip/robesummon.dm b/code/modules/spells/targeted/equip/robesummon.dm index 1dbb239c174d..9a3f7ec79743 100644 --- a/code/modules/spells/targeted/equip/robesummon.dm +++ b/code/modules/spells/targeted/equip/robesummon.dm @@ -15,7 +15,7 @@ level_max = list(SP_TOTAL = 5, SP_SPEED = 4, SP_POWER = 1) invocation = "I PUT ON MY ROBE AND WIZARD HAT!" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT range = SELFCAST spell_flags = INCLUDEUSER | Z2NOCAST //z2nocast to prevent wizards from summoning the spacesuit and getting a refund diff --git a/code/modules/spells/targeted/ethereal_jaunt.dm b/code/modules/spells/targeted/ethereal_jaunt.dm index 77fe94f4e89d..52ec46c88583 100644 --- a/code/modules/spells/targeted/ethereal_jaunt.dm +++ b/code/modules/spells/targeted/ethereal_jaunt.dm @@ -8,7 +8,7 @@ school = "transmutation" charge_max = 300 spell_flags = Z2NOCAST | NEEDSCLOTHES | INCLUDEUSER - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = SELFCAST max_targets = 1 cooldown_min = 100 //50 deciseconds reduction per rank @@ -148,7 +148,7 @@ charge_max = 200 spell_flags = Z2NOCAST | INCLUDEUSER | CONSTRUCT_CHECK - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = SELFCAST duration = 50 //in deciseconds @@ -174,7 +174,7 @@ spell_flags = Z2NOCAST | INCLUDEUSER charge_max = 1 MINUTES - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = SELFCAST duration = 50 //in deciseconds diff --git a/code/modules/spells/targeted/feint.dm b/code/modules/spells/targeted/feint.dm index ed93ce941288..10ff7f89d91f 100644 --- a/code/modules/spells/targeted/feint.dm +++ b/code/modules/spells/targeted/feint.dm @@ -8,7 +8,7 @@ school = "transmutation" charge_max = 300 spell_flags = NEEDSCLOTHES - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE cooldown_min = 100 //50 deciseconds reduction per rank duration = 30 //in deciseconds diff --git a/code/modules/spells/targeted/fist.dm b/code/modules/spells/targeted/fist.dm index 2b80a5ed795c..bf263fb5e4d5 100644 --- a/code/modules/spells/targeted/fist.dm +++ b/code/modules/spells/targeted/fist.dm @@ -9,7 +9,7 @@ charge_max = 50 cooldown_min = 10 invocation = "I CAST FIST" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT max_targets = 3 spell_flags = NEEDSCLOTHES | LOSE_IN_TRANSFER | IS_HARMFUL diff --git a/code/modules/spells/targeted/flesh_to_coal.dm b/code/modules/spells/targeted/flesh_to_coal.dm index b69e3eea6086..2fe581e49deb 100644 --- a/code/modules/spells/targeted/flesh_to_coal.dm +++ b/code/modules/spells/targeted/flesh_to_coal.dm @@ -33,7 +33,7 @@ range = 3 max_targets = 1 invocation = "NAUGHTY" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT amt_stunned = 5//just exists to make sure the statue "catches" them cooldown_min = 200 //100 deciseconds reduction per rank diff --git a/code/modules/spells/targeted/flesh_to_stone.dm b/code/modules/spells/targeted/flesh_to_stone.dm index d06c3951dcf9..56334dacd5ac 100644 --- a/code/modules/spells/targeted/flesh_to_stone.dm +++ b/code/modules/spells/targeted/flesh_to_stone.dm @@ -11,7 +11,7 @@ range = 1 max_targets = 1 invocation = "STAUN EI" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT amt_stunned = 5//just exists to make sure the statue "catches" them cooldown_min = 200 //100 deciseconds reduction per rank valid_targets = list(/mob/living) diff --git a/code/modules/spells/targeted/genetic.dm b/code/modules/spells/targeted/genetic.dm index 87607e5ba23d..4999c76c1f09 100644 --- a/code/modules/spells/targeted/genetic.dm +++ b/code/modules/spells/targeted/genetic.dm @@ -46,7 +46,7 @@ code\game\\dna\genes\goon_powers.dm spell_flags = WAIT_FOR_CLICK | IS_HARMFUL invocation = "STI KALY" - invocation_type = SpI_WHISPER + invocation_type = SP_INV_WHISPER message = "Your eyes cry out in pain!" cooldown_min = 50 @@ -72,7 +72,7 @@ code\game\\dna\genes\goon_powers.dm charge_max = 400 spell_flags = NEEDSCLOTHES | INCLUDEUSER invocation = "BIRUZ BENNAR" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT message = "You feel strong!" range = 0 max_targets = 1 diff --git a/code/modules/spells/targeted/grease.dm b/code/modules/spells/targeted/grease.dm index 0bc8e9709683..89123bdf1f86 100644 --- a/code/modules/spells/targeted/grease.dm +++ b/code/modules/spells/targeted/grease.dm @@ -8,7 +8,7 @@ school = "evocation" charge_max = 300 invocation = "GR'ESE LIT'NING" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT range = 0 spell_flags = NEEDSCLOTHES | INCLUDEUSER level_max = list(SP_TOTAL = 5, SP_SPEED = 4, SP_POWER = 1) diff --git a/code/modules/spells/targeted/harvest.dm b/code/modules/spells/targeted/harvest.dm index b9e887c9de81..7fe4b239fb11 100644 --- a/code/modules/spells/targeted/harvest.dm +++ b/code/modules/spells/targeted/harvest.dm @@ -7,7 +7,7 @@ charge_max = 200 spell_flags = Z2NOCAST | CONSTRUCT_CHECK | INCLUDEUSER invocation = "" - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 0 max_targets = 0 diff --git a/code/modules/spells/targeted/heal.dm b/code/modules/spells/targeted/heal.dm index f3379b6bc6f7..d5daf85b5de3 100644 --- a/code/modules/spells/targeted/heal.dm +++ b/code/modules/spells/targeted/heal.dm @@ -11,7 +11,7 @@ cooldown_reduc = 75 cooldown_min = 150 invocation = "DI TIUB SEEL IM" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT message = "You feel refreshed." level_max = list(SP_TOTAL = 3, SP_SPEED = 2, SP_POWER = 1, SP_RANGE = 1) valid_targets = list(/mob/living) diff --git a/code/modules/spells/targeted/hypnotise.dm b/code/modules/spells/targeted/hypnotise.dm index e24e90db56c8..05bd02b890d7 100644 --- a/code/modules/spells/targeted/hypnotise.dm +++ b/code/modules/spells/targeted/hypnotise.dm @@ -8,7 +8,7 @@ charge_type = SP_RECHARGE charge_max = 3 MINUTES - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE range = 1 max_targets = 1 spell_flags = WAIT_FOR_CLICK | NEEDSHUMAN diff --git a/code/modules/spells/targeted/invoke_emotion.dm b/code/modules/spells/targeted/invoke_emotion.dm index e4a4322fa948..d8639b43340f 100644 --- a/code/modules/spells/targeted/invoke_emotion.dm +++ b/code/modules/spells/targeted/invoke_emotion.dm @@ -8,7 +8,7 @@ var/global/list/invoked_emotions = list() specialization = SSUTILITY hud_state = "invoke_emotion" invocation = "YU'V GO'T MA'LE" - invocation_type = SpI_WHISPER + invocation_type = SP_INV_WHISPER spell_flags = WAIT_FOR_CLICK | SELECTABLE | INCLUDEUSER price = 0.25 * SP_BASE_PRICE range = 9 diff --git a/code/modules/spells/targeted/mind_transfer.dm b/code/modules/spells/targeted/mind_transfer.dm index 5afe2875d11b..58357c07502a 100644 --- a/code/modules/spells/targeted/mind_transfer.dm +++ b/code/modules/spells/targeted/mind_transfer.dm @@ -9,7 +9,7 @@ charge_max = 600 spell_flags = 0 invocation = "GIN'YU CAPAN" - invocation_type = SpI_WHISPER + invocation_type = SP_INV_WHISPER max_targets = 1 mind_affecting = 1 range = 1 diff --git a/code/modules/spells/targeted/pacify.dm b/code/modules/spells/targeted/pacify.dm index 6687d73b5655..722bc7779e4f 100644 --- a/code/modules/spells/targeted/pacify.dm +++ b/code/modules/spells/targeted/pacify.dm @@ -13,7 +13,7 @@ spell_flags = WAIT_FOR_CLICK invocation = "YUKKRI SHEETI NAY" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT range = 6 max_targets = 1 diff --git a/code/modules/spells/targeted/parrotmorph.dm b/code/modules/spells/targeted/parrotmorph.dm index 430b63d562c7..491d5feb73d8 100644 --- a/code/modules/spells/targeted/parrotmorph.dm +++ b/code/modules/spells/targeted/parrotmorph.dm @@ -8,7 +8,7 @@ charge_type = SP_RECHARGE charge_max = 600 invocation = "'P'Y W'NT A CRAC'K'R!" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT range = 7 max_targets = 1 spell_flags = WAIT_FOR_CLICK diff --git a/code/modules/spells/targeted/prestidigitation.dm b/code/modules/spells/targeted/prestidigitation.dm index f0e7d5d7ba3c..ec5f4ca8c421 100644 --- a/code/modules/spells/targeted/prestidigitation.dm +++ b/code/modules/spells/targeted/prestidigitation.dm @@ -5,7 +5,7 @@ school = "evocation" invocation = "M'tch st'ck" - invocation_type = SpI_WHISPER + invocation_type = SP_INV_WHISPER range = 4 spell_flags = INCLUDEUSER|WAIT_FOR_CLICK level_max = list() @@ -23,7 +23,7 @@ school = "evocation" invocation = "s'ap s'ds" - invocation_type = SpI_WHISPER + invocation_type = SP_INV_WHISPER range = 4 spell_flags = INCLUDEUSER|WAIT_FOR_CLICK level_max = list() @@ -44,7 +44,7 @@ school = "evocation" invocation = "bl'odso'k" - invocation_type = SpI_WHISPER + invocation_type = SP_INV_WHISPER range = 4 spell_flags = INCLUDEUSER|WAIT_FOR_CLICK level_max = list() @@ -62,7 +62,7 @@ school = "evocation" invocation = "Wh't 'f 't w's p'rpl'?!" - invocation_type = SpI_WHISPER + invocation_type = SP_INV_WHISPER range = 6 spell_flags = INCLUDEUSER|WAIT_FOR_CLICK level_max = list() @@ -80,7 +80,7 @@ school = "evocation" invocation = "Id'e h'nds m'k' l'ght w'rk" - invocation_type = SpI_WHISPER + invocation_type = SP_INV_WHISPER range = 4 spell_flags = INCLUDEUSER level_max = list() @@ -144,7 +144,7 @@ school = "evocation" invocation = "sp'cy k'ych'in" - invocation_type = SpI_WHISPER + invocation_type = SP_INV_WHISPER range = 4 spell_flags = INCLUDEUSER|WAIT_FOR_CLICK level_max = list() @@ -173,7 +173,7 @@ school = "evocation" invocation = "I'ce c'ld!" - invocation_type = SpI_WHISPER + invocation_type = SP_INV_WHISPER range = 4 spell_flags = INCLUDEUSER|WAIT_FOR_CLICK level_max = list() @@ -201,7 +201,7 @@ school = "evocation" invocation = "Splash" - invocation_type = SpI_WHISPER + invocation_type = SP_INV_WHISPER range = 4 spell_flags = INCLUDEUSER|WAIT_FOR_CLICK level_max = list() diff --git a/code/modules/spells/targeted/projectile/fireball.dm b/code/modules/spells/targeted/projectile/fireball.dm index 25fc90c07ea0..52d72c22f65c 100644 --- a/code/modules/spells/targeted/projectile/fireball.dm +++ b/code/modules/spells/targeted/projectile/fireball.dm @@ -11,7 +11,7 @@ charge_max = 100 spell_flags = IS_HARMFUL invocation = "ONI SOMA" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT range = 20 cooldown_min = 20 //10 deciseconds reduction per rank diff --git a/code/modules/spells/targeted/projectile/firebreath.dm b/code/modules/spells/targeted/projectile/firebreath.dm index 3011e30e7ad4..ba3f7dd638c8 100644 --- a/code/modules/spells/targeted/projectile/firebreath.dm +++ b/code/modules/spells/targeted/projectile/firebreath.dm @@ -12,7 +12,7 @@ charge_max = 100 spell_flags = WAIT_FOR_CLICK | IS_HARMFUL invocation = "SPY'SI MEAT'A'BAL" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT range = 20 cooldown_min = 20 diff --git a/code/modules/spells/targeted/projectile/magic_missile.dm b/code/modules/spells/targeted/projectile/magic_missile.dm index e9449f34998d..d9572f11be7d 100644 --- a/code/modules/spells/targeted/projectile/magic_missile.dm +++ b/code/modules/spells/targeted/projectile/magic_missile.dm @@ -9,7 +9,7 @@ charge_max = 150 spell_flags = NEEDSCLOTHES | IS_HARMFUL invocation = "FORTI GY AMA" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT range = 7 cooldown_min = 90 //15 deciseconds reduction per rank diff --git a/code/modules/spells/targeted/projectile/pie_throw.dm b/code/modules/spells/targeted/projectile/pie_throw.dm index a29d7cb68fd6..7352bb686d9a 100644 --- a/code/modules/spells/targeted/projectile/pie_throw.dm +++ b/code/modules/spells/targeted/projectile/pie_throw.dm @@ -8,7 +8,7 @@ school = "evocation" charge_max = 100 invocation = "FLA'K PA'STRY" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT range = 20 spell_flags = WAIT_FOR_CLICK | IS_HARMFUL diff --git a/code/modules/spells/targeted/pumpkinhead.dm b/code/modules/spells/targeted/pumpkinhead.dm index de7d8a795f13..ea39ffb84a82 100644 --- a/code/modules/spells/targeted/pumpkinhead.dm +++ b/code/modules/spells/targeted/pumpkinhead.dm @@ -11,7 +11,7 @@ range = 1 max_targets = 1 invocation = "H'T POT'TO" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT cooldown_min = 200 //100 deciseconds reduction per rank hud_state = "pumpkin" diff --git a/code/modules/spells/targeted/punch.dm b/code/modules/spells/targeted/punch.dm index 70ba5d851507..44a6593e0ada 100644 --- a/code/modules/spells/targeted/punch.dm +++ b/code/modules/spells/targeted/punch.dm @@ -10,7 +10,7 @@ message = "You are punched with great force!" spell_flags = IS_HARMFUL | WAIT_FOR_CLICK | NEEDSCLOTHES cooldown_min = 30 - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT max_targets = 1 range = 1 valid_targets = list(/mob/living, /obj/mecha) @@ -147,7 +147,7 @@ user_type = USER_TYPE_GYMRAT charge_max = 300 // Much longer cooldown than the wizard spell spell_flags = IS_HARMFUL | WAIT_FOR_CLICK - invocation_type = SpI_NONE + invocation_type = SP_INV_NONE valid_targets = list(/mob/living) // Unlike the other version, this one can't target and destroy mechs hud_state = "gen_hulk" explosive_punches = 0 diff --git a/code/modules/spells/targeted/push.dm b/code/modules/spells/targeted/push.dm index 4000fe74ef63..3e932c1db402 100644 --- a/code/modules/spells/targeted/push.dm +++ b/code/modules/spells/targeted/push.dm @@ -9,7 +9,7 @@ charge_max = 300 spell_flags = Z2NOCAST | WAIT_FOR_CLICK invocation = "P'SH IT RE'L GUD" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT range = 1 cooldown_min = 10 level_max = list(SP_TOTAL = 4, SP_SPEED = 4) diff --git a/code/modules/spells/targeted/retard.dm b/code/modules/spells/targeted/retard.dm index 4da68b19d285..ad2476ebc179 100644 --- a/code/modules/spells/targeted/retard.dm +++ b/code/modules/spells/targeted/retard.dm @@ -7,7 +7,7 @@ school = "evocation" charge_max = 200 // 20 seconds //Invocation is noted below - invocation_type = SpI_SHOUT //Wizard will shout what they say + invocation_type = SP_INV_SHOUT //Wizard will shout what they say range = 3 // Target anyone within 3 tiles of you amt_dam_brain = 90 //90 brain damage max_targets = 1 // Can only target one person diff --git a/code/modules/spells/targeted/shoesnatch.dm b/code/modules/spells/targeted/shoesnatch.dm index cfa5db62c423..a452d740c800 100644 --- a/code/modules/spells/targeted/shoesnatch.dm +++ b/code/modules/spells/targeted/shoesnatch.dm @@ -9,7 +9,7 @@ charge_type = SP_RECHARGE charge_max = 150 invocation = "H'NK!" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT range = 7 max_targets = 1 spell_flags = WAIT_FOR_CLICK diff --git a/code/modules/spells/targeted/street_alchemy.dm b/code/modules/spells/targeted/street_alchemy.dm index cc7b2810878e..674112f3b19c 100644 --- a/code/modules/spells/targeted/street_alchemy.dm +++ b/code/modules/spells/targeted/street_alchemy.dm @@ -7,7 +7,7 @@ school = "transmutation" charge_max = 250 cooldown_min = 30 - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT range = 10 //If you can see it, you can steal it max_targets = 1 spell_flags = WAIT_FOR_CLICK | NEEDSHUMAN | INCLUDEUSER diff --git a/code/modules/spells/targeted/summon_snacks.dm b/code/modules/spells/targeted/summon_snacks.dm index 4bfd2ace75f3..38bf11eff169 100644 --- a/code/modules/spells/targeted/summon_snacks.dm +++ b/code/modules/spells/targeted/summon_snacks.dm @@ -17,7 +17,7 @@ user_type = USER_TYPE_WIZARD school = "conjuration" invocation = "OR'DER UHP" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT message = "Suddenly your hands are full of snacks!" charge_max = 300 cooldown_min = 150 diff --git a/code/modules/spells/targeted/watertowine.dm b/code/modules/spells/targeted/watertowine.dm index 8865a6f5f416..141a771976e1 100644 --- a/code/modules/spells/targeted/watertowine.dm +++ b/code/modules/spells/targeted/watertowine.dm @@ -5,7 +5,7 @@ school = "evocation" invocation = "Th's'n" - invocation_type = SpI_WHISPER + invocation_type = SP_INV_WHISPER range = 7 spell_flags = GHOSTCAST|STATALLOWED|WAIT_FOR_CLICK level_max = list() diff --git a/code/modules/spells/targeted/wrap.dm b/code/modules/spells/targeted/wrap.dm index d112a8097348..6fe7451152c2 100644 --- a/code/modules/spells/targeted/wrap.dm +++ b/code/modules/spells/targeted/wrap.dm @@ -9,7 +9,7 @@ range = 7 max_targets = 1 invocation = "W'APPIN' PR'SN'TS!" - invocation_type = SpI_SHOUT + invocation_type = SP_INV_SHOUT amt_stunned = 5//just exists to make sure the giftwrap "catches" them cooldown_min = 30 //100 deciseconds reduction per rank valid_targets = list(/mob/living) From 108c952ea64a6e8c21abe7bd81966f4a0f5e3242 Mon Sep 17 00:00:00 2001 From: Shifty Date: Sat, 26 Apr 2025 10:05:27 +0100 Subject: [PATCH 4/7] Some more docs for subtypes, although they're not as dense --- code/modules/spells/targeted/equip/equip.dm | 12 +++++++++--- .../modules/spells/targeted/projectile/projectile.dm | 2 ++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/code/modules/spells/targeted/equip/equip.dm b/code/modules/spells/targeted/equip/equip.dm index b73a6d706408..8baf5d9223a5 100644 --- a/code/modules/spells/targeted/equip/equip.dm +++ b/code/modules/spells/targeted/equip/equip.dm @@ -5,12 +5,16 @@ user_type = USER_TYPE_NOUSER spell_flags = SELECTABLE - var/list/equipped_summons = list() //assoc list of text ids and paths to spawn + /// assoc list of text ids and paths to spawn + var/list/equipped_summons = list() - var/list/summoned_items = list() //list of items we summoned and will dispose when the spell runs out + /// list of items we summoned and will dispose when the spell runs out + var/list/summoned_items = list() - var/delete_old = 1 //if the item previously in the slot is deleted - otherwise, it's dropped + ///if the item previously in the slot is deleted - otherwise, it's dropped + var/delete_old = TRUE +/// Public: handles the unequip/equip part of the spell /spell/targeted/equip_item/cast(list/targets, mob/user = usr) ..() for(var/mob/living/L in targets) @@ -37,5 +41,7 @@ M.remove_from_mob(to_remove) qdel(to_remove) +/// Public: automatically called when creating the item to equip +/// Can override for special effects /spell/targeted/equip_item/proc/summon_item(var/newtype) return new newtype \ No newline at end of file diff --git a/code/modules/spells/targeted/projectile/projectile.dm b/code/modules/spells/targeted/projectile/projectile.dm index 5abd9052fd32..38017a1acc28 100644 --- a/code/modules/spells/targeted/projectile/projectile.dm +++ b/code/modules/spells/targeted/projectile/projectile.dm @@ -50,6 +50,7 @@ If the spell_projectile is seeking, it will update its target every process and projectile.process() return +/// Public: list of available targets for the projectile spell /spell/targeted/projectile/proc/choose_prox_targets(mob/user = usr, var/atom/movable/spell_holder) var/list/targets = list() for(var/mob/living/M in range(spell_holder, cast_prox_range)) @@ -63,5 +64,6 @@ If the spell_projectile is seeking, it will update its target every process and targets += M return targets +/// Public: what happens when the spell_projectile enters in contact with the targets /spell/targeted/projectile/proc/prox_cast(var/list/targets, var/atom/movable/spell_holder) return targets From f559253acf0759ce2b92523594ab750fca2f012c Mon Sep 17 00:00:00 2001 From: Shifty Date: Sat, 26 Apr 2025 10:25:34 +0100 Subject: [PATCH 5/7] Deciseconds be gone --- code/modules/genetics/side_effects.dm | 4 ++-- .../carbon/alien/humanoid/alien_powers.dm | 2 +- .../silicon/robot/robot_subtypes/starman.dm | 4 ++-- .../hostile/pulse_demon/pulsedemon_powers.dm | 10 +++++----- code/modules/spells/aoe_turf/blink.dm | 2 +- code/modules/spells/aoe_turf/charge.dm | 2 +- .../spells/aoe_turf/conjure/construct.dm | 4 ++-- .../spells/aoe_turf/conjure/doppelganger.dm | 4 ++-- .../spells/aoe_turf/conjure/forcewall.dm | 4 ++-- .../spells/aoe_turf/conjure/pitbulls.dm | 4 ++-- code/modules/spells/aoe_turf/disable_tech.dm | 2 +- code/modules/spells/aoe_turf/fall.dm | 4 ++-- code/modules/spells/aoe_turf/hangcurse.dm | 2 +- code/modules/spells/aoe_turf/knock.dm | 2 +- code/modules/spells/aoe_turf/lightbulb.dm | 2 +- code/modules/spells/aoe_turf/smoke.dm | 2 +- code/modules/spells/general/lightning.dm | 4 ++-- code/modules/spells/general/ring_of_fire.dm | 4 ++-- code/modules/spells/targeted/absorb.dm | 2 +- code/modules/spells/targeted/arcanetamper.dm | 2 +- .../spells/targeted/buttbots_revenge.dm | 2 +- code/modules/spells/targeted/disintegrate.dm | 2 +- .../spells/targeted/equip/clowncurse.dm | 2 +- .../spells/targeted/equip/frenchcurse.dm | 2 +- .../modules/spells/targeted/equip/horsemask.dm | 2 +- .../spells/targeted/equip/robesummon.dm | 2 +- code/modules/spells/targeted/ethereal_jaunt.dm | 10 +++++----- code/modules/spells/targeted/feint.dm | 2 +- code/modules/spells/targeted/fist.dm | 2 +- code/modules/spells/targeted/flesh_to_coal.dm | 2 +- code/modules/spells/targeted/flesh_to_stone.dm | 2 +- code/modules/spells/targeted/genetic.dm | 10 +++++----- code/modules/spells/targeted/heal.dm | 4 ++-- code/modules/spells/targeted/ice_barrage.dm | 2 +- code/modules/spells/targeted/invoke_emotion.dm | 2 +- code/modules/spells/targeted/mind_transfer.dm | 4 ++-- code/modules/spells/targeted/parrotmorph.dm | 2 +- .../spells/targeted/prestidigitation.dm | 18 +++++++++--------- .../spells/targeted/projectile/fireball.dm | 4 ++-- .../spells/targeted/projectile/firebreath.dm | 4 ++-- .../targeted/projectile/magic_missile.dm | 4 ++-- .../spells/targeted/projectile/pie_throw.dm | 2 +- code/modules/spells/targeted/pumpkinhead.dm | 2 +- code/modules/spells/targeted/punch.dm | 2 +- code/modules/spells/targeted/push.dm | 2 +- code/modules/spells/targeted/shoesnatch.dm | 2 +- code/modules/spells/targeted/street_alchemy.dm | 2 +- code/modules/spells/targeted/summon_snacks.dm | 2 +- code/modules/spells/targeted/wrap.dm | 2 +- 49 files changed, 83 insertions(+), 83 deletions(-) diff --git a/code/modules/genetics/side_effects.dm b/code/modules/genetics/side_effects.dm index cb0b697b747a..4d94ddc27f83 100644 --- a/code/modules/genetics/side_effects.dm +++ b/code/modules/genetics/side_effects.dm @@ -53,7 +53,7 @@ symptom = "Subject starts drooling uncontrollably." treatment = "Inject small dose of dylovene." effect = "Subject turns into monkey." - duration = 10*90 + duration = 90 SECONDS start(mob/living/carbon/human/H) H.emote("me", 1, "has drool running down from his mouth.") @@ -67,7 +67,7 @@ symptom = "Subject starts drooling uncontrollably." treatment = "Inject small dose of dylovene." effect = "Subject becomes confused." - duration = 10*30 + duration = 30 SECONDS /datum/genetics/side_effect/confuse/start(mob/living/carbon/human/H) H.emote("me", 1, "has drool running down from his mouth.") diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm index 685bdcb55a0d..2ad90fe8ac02 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm @@ -145,7 +145,7 @@ Doesn't work on other aliens/AI.*/ spell_flags = WAIT_FOR_CLICK proj_type = /obj/item/projectile/energy/neurotoxin cast_sound = 'sound/weapons/pierce.ogg' - duration = 20 + duration = 2 SECONDS projectile_speed = 1 /spell/targeted/projectile/alienneurotoxin/is_valid_target(atom/target, mob/user, options, bypass_range = 0) diff --git a/code/modules/mob/living/silicon/robot/robot_subtypes/starman.dm b/code/modules/mob/living/silicon/robot/robot_subtypes/starman.dm index b0ee67ac4d54..eb02ecee3757 100644 --- a/code/modules/mob/living/silicon/robot/robot_subtypes/starman.dm +++ b/code/modules/mob/living/silicon/robot/robot_subtypes/starman.dm @@ -237,7 +237,7 @@ charge_type = SP_RECHARGE invocation_type = SP_INV_NONE - duration = 100 + duration = 10 SECONDS range = 5 selection_type = "range" var/meteor_count = 12 @@ -288,7 +288,7 @@ charge_type = SP_RECHARGE invocation_type = SP_INV_NONE - duration = 100 + duration = 10 SECONDS range = 6 selection_type = "range" var/move_with_user = 0 diff --git a/code/modules/mob/living/simple_animal/hostile/pulse_demon/pulsedemon_powers.dm b/code/modules/mob/living/simple_animal/hostile/pulse_demon/pulsedemon_powers.dm index b4d13ef26f10..c229813e38c3 100644 --- a/code/modules/mob/living/simple_animal/hostile/pulse_demon/pulsedemon_powers.dm +++ b/code/modules/mob/living/simple_animal/hostile/pulse_demon/pulsedemon_powers.dm @@ -331,7 +331,7 @@ range = 10 spell_flags = WAIT_FOR_CLICK - duration = 20 + duration = 2 SECONDS level_max = list(SP_TOTAL = 2, SP_POWER = 0, SP_SPEED = 2) hud_state = "pd_drain" @@ -365,7 +365,7 @@ range = 5 spell_flags = WAIT_FOR_CLICK - duration = 20 + duration = 2 SECONDS level_max = list(SP_TOTAL = 3, SP_POWER = 0, SP_SPEED = 3) hud_state = "pd_cablehop" @@ -468,7 +468,7 @@ range = 10 spell_flags = WAIT_FOR_CLICK - duration = 20 + duration = 2 SECONDS level_max = list(SP_TOTAL = 2, SP_POWER = 0, SP_SPEED = 2) hud_state = "pd_emag" @@ -504,7 +504,7 @@ range = 10 spell_flags = WAIT_FOR_CLICK - duration = 20 + duration = 2 SECONDS level_max = list(SP_TOTAL = 2, SP_POWER = 0, SP_SPEED = 2) hud_state = "wiz_tech" @@ -587,7 +587,7 @@ range = 10 spell_flags = WAIT_FOR_CLICK - duration = 20 + duration = 2 SECONDS level_max = list(SP_TOTAL = 1, SP_POWER = 0, SP_SPEED = 1) hud_state = "overload" diff --git a/code/modules/spells/aoe_turf/blink.dm b/code/modules/spells/aoe_turf/blink.dm index c1f4f616788c..24b1e9832b8b 100644 --- a/code/modules/spells/aoe_turf/blink.dm +++ b/code/modules/spells/aoe_turf/blink.dm @@ -12,7 +12,7 @@ invocation_type = SP_INV_NONE range = 7 inner_radius = 1 - cooldown_min = 5 //4 deciseconds reduction per rank + cooldown_min = 0.5 SECONDS //0.4 SECONDS reduction per rank hud_state = "wiz_blink" selection_type = "range" quicken_price = SP_BASE_PRICE diff --git a/code/modules/spells/aoe_turf/charge.dm b/code/modules/spells/aoe_turf/charge.dm index aca55eeb4d09..cfba8d8855aa 100644 --- a/code/modules/spells/aoe_turf/charge.dm +++ b/code/modules/spells/aoe_turf/charge.dm @@ -10,7 +10,7 @@ invocation = "DIRI CEL" invocation_type = SP_INV_WHISPER range = 0 - cooldown_min = 400 //50 deciseconds reduction per rank + cooldown_min = 40 SECONDS //5 SECONDS reduction per rank hud_state = "wiz_charge" diff --git a/code/modules/spells/aoe_turf/conjure/construct.dm b/code/modules/spells/aoe_turf/conjure/construct.dm index a33cc69153fb..ee1edd4b8407 100644 --- a/code/modules/spells/aoe_turf/conjure/construct.dm +++ b/code/modules/spells/aoe_turf/conjure/construct.dm @@ -235,7 +235,7 @@ invocation_type = SP_INV_NONE range = 0 summon_type = list(/obj/effect/forcefield/cult) - duration = 200 + duration = 20 SECONDS override_base = "cult" hud_state = "const_juggwall" @@ -269,7 +269,7 @@ invocation_type = SP_INV_NONE range = 0 summon_type = list(/obj/effect/forcefield/cult/large) - duration = 200 + duration = 20 SECONDS hud_state = "const_juggwall2" override_base = "cult" diff --git a/code/modules/spells/aoe_turf/conjure/doppelganger.dm b/code/modules/spells/aoe_turf/conjure/doppelganger.dm index 4a961c03d1ef..25f34989d502 100644 --- a/code/modules/spells/aoe_turf/conjure/doppelganger.dm +++ b/code/modules/spells/aoe_turf/conjure/doppelganger.dm @@ -9,8 +9,8 @@ price = SP_BASE_PRICE / 2 level_max = list(SP_TOTAL = 2, SP_SPEED = 2) charge_max = 300 - cooldown_reduc = 100 - cooldown_min = 100 + cooldown_reduc = 10 SECONDS + cooldown_min = 10 SECONDS invocation = "MY O'N CLO'N" invocation_type = SP_INV_SHOUT spell_flags = NEEDSCLOTHES | IS_HARMFUL diff --git a/code/modules/spells/aoe_turf/conjure/forcewall.dm b/code/modules/spells/aoe_turf/conjure/forcewall.dm index 1d9a6589bedf..90b5fe685850 100644 --- a/code/modules/spells/aoe_turf/conjure/forcewall.dm +++ b/code/modules/spells/aoe_turf/conjure/forcewall.dm @@ -5,7 +5,7 @@ specialization = SSDEFENSIVE abbreviation = "FW" summon_type = list(/obj/effect/forcefield/wizard) - duration = 300 + duration = 30 SECONDS charge_max = 10 SECONDS cooldown_min = 2 SECONDS spell_flags = 0 @@ -116,7 +116,7 @@ Unwall fields density = TRUE flow_flags = ON_BORDER mouse_opacity = 1 - var/duration = 300 // How long the wall lasts, in ticks + var/duration = 30 SECONDS // How long the wall lasts, in ticks var/static/list/forbidden_passes = list(/turf/unsimulated/wall,/turf/simulated/wall/invulnerable,/obj/structure/grille/invulnerable) // To stop people breaking maps like centcomm or lamprey stuff /obj/effect/unwall_field/permanent // For future mapping or bus shenanigans diff --git a/code/modules/spells/aoe_turf/conjure/pitbulls.dm b/code/modules/spells/aoe_turf/conjure/pitbulls.dm index f43c05b6d053..435ed1629df6 100644 --- a/code/modules/spells/aoe_turf/conjure/pitbulls.dm +++ b/code/modules/spells/aoe_turf/conjure/pitbulls.dm @@ -10,8 +10,8 @@ price = SP_BASE_PRICE level_max = list(SP_TOTAL = 3, SP_SPEED = 2, SP_POWER = 1) //empower makes them SMASHED and SLAMMED charge_max = 300 - cooldown_reduc = 100 - cooldown_min = 100 + cooldown_reduc = 10 SECONDS + cooldown_min = 10 SECONDS invocation = "GR'T W'TH K'DS" invocation_type = SP_INV_SHOUT spell_flags = NEEDSCLOTHES diff --git a/code/modules/spells/aoe_turf/disable_tech.dm b/code/modules/spells/aoe_turf/disable_tech.dm index 500af7ee6aa2..1430eace5aae 100644 --- a/code/modules/spells/aoe_turf/disable_tech.dm +++ b/code/modules/spells/aoe_turf/disable_tech.dm @@ -13,7 +13,7 @@ range = 0 inner_radius = -1 - cooldown_min = 200 //50 deciseconds reduction per rank + cooldown_min = 20 SECONDS //0.5 seconds reduction per rank var/emp_heavy = 6 var/emp_light = 10 diff --git a/code/modules/spells/aoe_turf/fall.dm b/code/modules/spells/aoe_turf/fall.dm index 32bed0350ee8..9bcae2d2a1be 100644 --- a/code/modules/spells/aoe_turf/fall.dm +++ b/code/modules/spells/aoe_turf/fall.dm @@ -17,8 +17,8 @@ var/global/list/falltempoverlays = list() invocation = "OMNIA RUINAM" invocation_type = SP_INV_SHOUT range = 6 - cooldown_min = 200 - cooldown_reduc = 100 + cooldown_min = 20 SECONDS + cooldown_reduc = 10 SECONDS level_max = list(SP_TOTAL = 3, SP_SPEED = 3, SP_POWER = 3) hud_state = "wiz_timestop" var/image/aoe_underlay diff --git a/code/modules/spells/aoe_turf/hangcurse.dm b/code/modules/spells/aoe_turf/hangcurse.dm index d603113e5cfd..5f00dc9c1e8d 100644 --- a/code/modules/spells/aoe_turf/hangcurse.dm +++ b/code/modules/spells/aoe_turf/hangcurse.dm @@ -19,7 +19,7 @@ Removes letters in the afflicted's sentences like the virology symptom, others m range = 3 inner_radius = -1 - cooldown_min = 100 + cooldown_min = 10 SECONDS var/letters_retained = 12 level_max = list(SP_TOTAL = 6, SP_SPEED = 4, SP_POWER = 2) diff --git a/code/modules/spells/aoe_turf/knock.dm b/code/modules/spells/aoe_turf/knock.dm index 112057179459..3835afea17f7 100644 --- a/code/modules/spells/aoe_turf/knock.dm +++ b/code/modules/spells/aoe_turf/knock.dm @@ -11,7 +11,7 @@ invocation = "AULIE OXIN FIERA" invocation_type = SP_INV_WHISPER range = 3 - cooldown_min = 20 //20 deciseconds reduction per rank + cooldown_min = 2 SECONDS //2 seconds reduction per rank hud_state = "wiz_knock" diff --git a/code/modules/spells/aoe_turf/lightbulb.dm b/code/modules/spells/aoe_turf/lightbulb.dm index d1a8826938f6..dceb37711f84 100644 --- a/code/modules/spells/aoe_turf/lightbulb.dm +++ b/code/modules/spells/aoe_turf/lightbulb.dm @@ -13,7 +13,7 @@ range = 7 inner_radius = -1 - cooldown_min = 50 + cooldown_min = 5 SECONDS hud_state = "blackout" diff --git a/code/modules/spells/aoe_turf/smoke.dm b/code/modules/spells/aoe_turf/smoke.dm index 6569d6ac1120..78bb7151a9ad 100644 --- a/code/modules/spells/aoe_turf/smoke.dm +++ b/code/modules/spells/aoe_turf/smoke.dm @@ -12,7 +12,7 @@ invocation_type = SP_INV_NONE range = 1 inner_radius = -1 - cooldown_min = 20 //25 deciseconds reduction per rank + cooldown_min = 2 SECONDS //2.5 seconds reduction per rank smoke_spread = 2 smoke_amt = 5 diff --git a/code/modules/spells/general/lightning.dm b/code/modules/spells/general/lightning.dm index bca597e9a0f9..4b6a0cfc720e 100644 --- a/code/modules/spells/general/lightning.dm +++ b/code/modules/spells/general/lightning.dm @@ -5,8 +5,8 @@ user_type = USER_TYPE_WIZARD specialization = SSOFFENSIVE charge_max = 100 - cooldown_min = 40 - cooldown_reduc = 30 + cooldown_min = 4 SECONDS + cooldown_reduc = 3 SECONDS spell_levels = list(SP_SPEED = 0, SP_POWER = 0) level_max = list(SP_TOTAL = 3, SP_SPEED = 3, SP_POWER = 3) //each level of power grants 1 additional target. diff --git a/code/modules/spells/general/ring_of_fire.dm b/code/modules/spells/general/ring_of_fire.dm index 69ca53e299f4..18f12c64daa6 100644 --- a/code/modules/spells/general/ring_of_fire.dm +++ b/code/modules/spells/general/ring_of_fire.dm @@ -5,7 +5,7 @@ specialization = SSOFFENSIVE school = "conjuration" charge_max = 300 - cooldown_min = 100 + cooldown_min = 10 SECONDS spell_levels = list(SP_SPEED = 0, SP_MOVE = 0, SP_POWER = 0) level_max = list(SP_TOTAL = 5, SP_SPEED = 3, SP_MOVE = 1, SP_POWER = 1) @@ -18,7 +18,7 @@ hud_state = "wiz_firering" price = SP_BASE_PRICE / 2 - duration = 100 + duration = 10 SECONDS range = 3 selection_type = "range" var/move_with_user = 0 diff --git a/code/modules/spells/targeted/absorb.dm b/code/modules/spells/targeted/absorb.dm index 5466639c4cb0..6b31a868112f 100644 --- a/code/modules/spells/targeted/absorb.dm +++ b/code/modules/spells/targeted/absorb.dm @@ -9,7 +9,7 @@ spell_flags = IS_HARMFUL invocation_type = SP_INV_SHOUT range = 0 - cooldown_min = 200 + cooldown_min = 20 SECONDS hud_state = "wiz_disint_old" diff --git a/code/modules/spells/targeted/arcanetamper.dm b/code/modules/spells/targeted/arcanetamper.dm index f32e0ee0d2c4..401af9420694 100644 --- a/code/modules/spells/targeted/arcanetamper.dm +++ b/code/modules/spells/targeted/arcanetamper.dm @@ -16,7 +16,7 @@ invocation_type = SP_INV_NONE // we say it in the arcane_acts level_max = list(SP_TOTAL = 4, SP_SPEED = 2, SP_POWER = 2) range = 1 - cooldown_min = 100 // 50 deciseconds reduction per rank + cooldown_min = 10 SECONDS // 5 seconds reduction per rank hud_state = "wiz_arctam" spell_flags = WAIT_FOR_CLICK var/recursive = FALSE // does it curse contents too? diff --git a/code/modules/spells/targeted/buttbots_revenge.dm b/code/modules/spells/targeted/buttbots_revenge.dm index 20af7e724d1c..34f0aa583643 100644 --- a/code/modules/spells/targeted/buttbots_revenge.dm +++ b/code/modules/spells/targeted/buttbots_revenge.dm @@ -11,7 +11,7 @@ invocation = "ARSE NATH" invocation_type = SP_INV_SHOUT range = 1 - cooldown_min = 200 //100 deciseconds reduction per rank + cooldown_min = 20 SECONDS //10 seconds reduction per rank level_max = list(SP_TOTAL = 5, SP_SPEED = 4, SP_POWER = 1) sparks_spread = 1 sparks_amt = 4 diff --git a/code/modules/spells/targeted/disintegrate.dm b/code/modules/spells/targeted/disintegrate.dm index 5ae301533277..90297cdf9706 100644 --- a/code/modules/spells/targeted/disintegrate.dm +++ b/code/modules/spells/targeted/disintegrate.dm @@ -10,7 +10,7 @@ invocation = "EI NATH" invocation_type = SP_INV_SHOUT range = 1 - cooldown_min = 200 //100 deciseconds reduction per rank + cooldown_min = 20 SECONDS //10 seconds reduction per rank sparks_spread = 1 sparks_amt = 4 diff --git a/code/modules/spells/targeted/equip/clowncurse.dm b/code/modules/spells/targeted/equip/clowncurse.dm index 58e254788826..d6f17891a542 100644 --- a/code/modules/spells/targeted/equip/clowncurse.dm +++ b/code/modules/spells/targeted/equip/clowncurse.dm @@ -12,7 +12,7 @@ range = 1 spell_flags = WAIT_FOR_CLICK //SELECTABLE hinders you here, since the spell has a range of 1 and only works on adjacent guys. Having the TARGETTED flag here makes it easy for your target to run away from you! - cooldown_min = 50 + cooldown_min = 5 SECONDS sparks_spread = 1 sparks_amt = 4 diff --git a/code/modules/spells/targeted/equip/frenchcurse.dm b/code/modules/spells/targeted/equip/frenchcurse.dm index 96394b310782..b23fb61a54cd 100644 --- a/code/modules/spells/targeted/equip/frenchcurse.dm +++ b/code/modules/spells/targeted/equip/frenchcurse.dm @@ -11,7 +11,7 @@ invocation_type = SP_INV_SHOUT range = 1 spell_flags = WAIT_FOR_CLICK //SELECTABLE hinders you here, since the spell has a range of 1 and only works on adjacent guys. Having the TARGETTED flag here makes it easy for your target to run away from you! - cooldown_min = 50 + cooldown_min = 5 SECONDS sparks_spread = 1 sparks_amt = 4 diff --git a/code/modules/spells/targeted/equip/horsemask.dm b/code/modules/spells/targeted/equip/horsemask.dm index 018402d76325..6f1d98b4b441 100644 --- a/code/modules/spells/targeted/equip/horsemask.dm +++ b/code/modules/spells/targeted/equip/horsemask.dm @@ -13,7 +13,7 @@ invocation_type = SP_INV_SHOUT range = 7 max_targets = 1 - cooldown_min = 30 //30 deciseconds reduction per rank + cooldown_min = 3 SECONDS //3 seconds reduction per rank selection_type = "range" spell_flags = WAIT_FOR_CLICK diff --git a/code/modules/spells/targeted/equip/robesummon.dm b/code/modules/spells/targeted/equip/robesummon.dm index 9a3f7ec79743..1bc71e73a148 100644 --- a/code/modules/spells/targeted/equip/robesummon.dm +++ b/code/modules/spells/targeted/equip/robesummon.dm @@ -21,7 +21,7 @@ delete_old = 0 //Players shouldn't lose their hardsuits because they decided to summon some robes. - cooldown_min = 50 + cooldown_min = 5 SECONDS valid_targets = list(/mob/living/carbon/human) diff --git a/code/modules/spells/targeted/ethereal_jaunt.dm b/code/modules/spells/targeted/ethereal_jaunt.dm index 52ec46c88583..7dfb21e29eaf 100644 --- a/code/modules/spells/targeted/ethereal_jaunt.dm +++ b/code/modules/spells/targeted/ethereal_jaunt.dm @@ -11,8 +11,8 @@ invocation_type = SP_INV_NONE range = SELFCAST max_targets = 1 - cooldown_min = 100 //50 deciseconds reduction per rank - duration = 50 //in deciseconds + cooldown_min = 10 SECONDS //5 SECONDS reduction per rank + duration = 5 SECONDS level_max = list(SP_TOTAL = 5, SP_SPEED = 4, SP_POWER = 1) hud_state = "wiz_jaunt" @@ -139,7 +139,7 @@ range = 3 charge_max = 600 //Double cooldown, makes it less spammable - duration = 100 //Double jaunt time, makes it easier to cooperate + duration = 10 SECONDS //Double jaunt time, makes it easier to cooperate /spell/targeted/ethereal_jaunt/shift name = "Phase Shift" @@ -150,7 +150,7 @@ spell_flags = Z2NOCAST | INCLUDEUSER | CONSTRUCT_CHECK invocation_type = SP_INV_NONE range = SELFCAST - duration = 50 //in deciseconds + duration = 5 SECONDS hud_state = "const_shift" @@ -176,7 +176,7 @@ charge_max = 1 MINUTES invocation_type = SP_INV_NONE range = SELFCAST - duration = 50 //in deciseconds + duration = 5 SECONDS override_base = "vamp" hud_state = "vamp_mistform" diff --git a/code/modules/spells/targeted/feint.dm b/code/modules/spells/targeted/feint.dm index 10ff7f89d91f..eaca77189879 100644 --- a/code/modules/spells/targeted/feint.dm +++ b/code/modules/spells/targeted/feint.dm @@ -10,7 +10,7 @@ spell_flags = NEEDSCLOTHES invocation_type = SP_INV_NONE cooldown_min = 100 //50 deciseconds reduction per rank - duration = 30 //in deciseconds + duration = 3 SECONDS //in deciseconds hud_state = "wiz_feint" diff --git a/code/modules/spells/targeted/fist.dm b/code/modules/spells/targeted/fist.dm index bf263fb5e4d5..eaffaf5d844c 100644 --- a/code/modules/spells/targeted/fist.dm +++ b/code/modules/spells/targeted/fist.dm @@ -7,7 +7,7 @@ level_max = list(SP_TOTAL = 3, SP_SPEED = 3) charge_max = 50 - cooldown_min = 10 + cooldown_min = 1 SECONDS invocation = "I CAST FIST" invocation_type = SP_INV_SHOUT max_targets = 3 diff --git a/code/modules/spells/targeted/flesh_to_coal.dm b/code/modules/spells/targeted/flesh_to_coal.dm index 2fe581e49deb..7cdf33112c6a 100644 --- a/code/modules/spells/targeted/flesh_to_coal.dm +++ b/code/modules/spells/targeted/flesh_to_coal.dm @@ -35,7 +35,7 @@ invocation = "NAUGHTY" invocation_type = SP_INV_SHOUT amt_stunned = 5//just exists to make sure the statue "catches" them - cooldown_min = 200 //100 deciseconds reduction per rank + cooldown_min = 20 SECONDS //10 seconds reduction per rank hud_state = "wiz_statue" diff --git a/code/modules/spells/targeted/flesh_to_stone.dm b/code/modules/spells/targeted/flesh_to_stone.dm index 56334dacd5ac..9cdc3456d8f6 100644 --- a/code/modules/spells/targeted/flesh_to_stone.dm +++ b/code/modules/spells/targeted/flesh_to_stone.dm @@ -13,7 +13,7 @@ invocation = "STAUN EI" invocation_type = SP_INV_SHOUT amt_stunned = 5//just exists to make sure the statue "catches" them - cooldown_min = 200 //100 deciseconds reduction per rank + cooldown_min = 20 SECONDS //10 SECONDS deciseconds reduction per rank valid_targets = list(/mob/living) hud_state = "wiz_statue" diff --git a/code/modules/spells/targeted/genetic.dm b/code/modules/spells/targeted/genetic.dm index 4999c76c1f09..d7d1211ccb82 100644 --- a/code/modules/spells/targeted/genetic.dm +++ b/code/modules/spells/targeted/genetic.dm @@ -12,7 +12,7 @@ code\game\\dna\genes\goon_powers.dm var/disabilities = 0 //bits var/list/mutations = list() //mutation strings - duration = 100 //deciseconds + duration = 10 SECONDS /spell/targeted/genetic/cast(list/targets) @@ -40,7 +40,7 @@ code\game\\dna\genes\goon_powers.dm abbreviation = "BD" specialization = SSOFFENSIVE disabilities = 1 - duration = 300 + duration = 30 SECONDS charge_max = 300 @@ -48,7 +48,7 @@ code\game\\dna\genes\goon_powers.dm invocation = "STI KALY" invocation_type = SP_INV_WHISPER message = "Your eyes cry out in pain!" - cooldown_min = 50 + cooldown_min = 5 SECONDS range = 7 max_targets = 1 @@ -78,8 +78,8 @@ code\game\\dna\genes\goon_powers.dm max_targets = 1 mutations = list(M_HULK) - duration = 300 - cooldown_min = 300 //25 deciseconds reduction per rank + duration = 30 SECONDS + cooldown_min = 30 SECONDS //25 seconds reduction per rank hud_state = "wiz_hulk" user_type = USER_TYPE_WIZARD diff --git a/code/modules/spells/targeted/heal.dm b/code/modules/spells/targeted/heal.dm index d5daf85b5de3..2bbbb1733139 100644 --- a/code/modules/spells/targeted/heal.dm +++ b/code/modules/spells/targeted/heal.dm @@ -8,8 +8,8 @@ school = "transmutation" charge_max = 300 - cooldown_reduc = 75 - cooldown_min = 150 + cooldown_reduc = 7.5 SECONDS + cooldown_min = 15 SECONDS invocation = "DI TIUB SEEL IM" invocation_type = SP_INV_SHOUT message = "You feel refreshed." diff --git a/code/modules/spells/targeted/ice_barrage.dm b/code/modules/spells/targeted/ice_barrage.dm index ecfd95b2d88d..c04ac3312e25 100644 --- a/code/modules/spells/targeted/ice_barrage.dm +++ b/code/modules/spells/targeted/ice_barrage.dm @@ -10,7 +10,7 @@ max_targets = 1 amt_stunned = 5 - cooldown_min = 30 + cooldown_min = 3 SECONDS hud_state = "ice_barrage" valid_targets = list(/mob/living) diff --git a/code/modules/spells/targeted/invoke_emotion.dm b/code/modules/spells/targeted/invoke_emotion.dm index d8639b43340f..efdb54ce8b0e 100644 --- a/code/modules/spells/targeted/invoke_emotion.dm +++ b/code/modules/spells/targeted/invoke_emotion.dm @@ -13,7 +13,7 @@ var/global/list/invoked_emotions = list() price = 0.25 * SP_BASE_PRICE range = 9 charge_max = 150 - cooldown_min = 10 + cooldown_min = 1 SECONDS valid_targets = list(/mob/living/carbon) spell_levels = list(SP_SPEED = 0, SP_POWER = 0, SP_MOVE = 0) level_max = list(SP_TOTAL = 7, SP_SPEED = 1, SP_POWER = 5, SP_MOVE = 1) diff --git a/code/modules/spells/targeted/mind_transfer.dm b/code/modules/spells/targeted/mind_transfer.dm index 58357c07502a..c9fd623d64c0 100644 --- a/code/modules/spells/targeted/mind_transfer.dm +++ b/code/modules/spells/targeted/mind_transfer.dm @@ -13,11 +13,11 @@ max_targets = 1 mind_affecting = 1 range = 1 - cooldown_min = 200 //100 deciseconds reduction per rank + cooldown_min = 20 SECONDS //10 seconds reduction per rank valid_targets = list(/mob/living/carbon/human,/mob/living/carbon/monkey) //which types of mobs are affected by the spell. NOTE: change at your own risk var/list/protected_roles = list("Wizard","Changeling","Cultist") //which roles are immune to the spell - var/msg_wait = 500 //how long in deciseconds it waits before telling that body doesn't feel right or mind swap robbed of a spell + var/msg_wait = 50 SECONDS //how long in seconds it waits before telling that body doesn't feel right or mind swap robbed of a spell amt_paralysis = 20 //how much the victim is paralysed for after the spell hud_state = "wiz_mindswap" diff --git a/code/modules/spells/targeted/parrotmorph.dm b/code/modules/spells/targeted/parrotmorph.dm index 491d5feb73d8..d722d73306f2 100644 --- a/code/modules/spells/targeted/parrotmorph.dm +++ b/code/modules/spells/targeted/parrotmorph.dm @@ -12,7 +12,7 @@ range = 7 max_targets = 1 spell_flags = WAIT_FOR_CLICK - cooldown_min = 200 + cooldown_min = 20 SECONDS selection_type = "range" diff --git a/code/modules/spells/targeted/prestidigitation.dm b/code/modules/spells/targeted/prestidigitation.dm index ec5f4ca8c421..8c0bc04a0ab2 100644 --- a/code/modules/spells/targeted/prestidigitation.dm +++ b/code/modules/spells/targeted/prestidigitation.dm @@ -98,7 +98,7 @@ var/static/list/trinkets_bauble = list(/obj/item/weapon/vectorreceiver, /obj/item/weapon/virusdish, /obj/item/weapon/shard, /obj/item/weapon/shard/plasma, /obj/item/weapon/ribbon, /obj/item/weapon/pai_cable, /obj/item/weapon/gavelblock, /obj/item/weapon/dart_cartridge, /obj/item/stack/chains, /obj/item/stack/teeth, /obj/item/stack/teeth/gold, /obj/item/gun_part/silencer, /obj/item/ice_crystal, /obj/item/claypot, /obj/item/cross_guard, /obj/item/sword_handle, /obj/item/weapon/dice/d00, /obj/item/weapon/dice/d10, /obj/item/weapon/dice/d12, /obj/item/weapon/dice/d2, /obj/item/weapon/dice/d20, /obj/item/weapon/dice/d4, /obj/item/weapon/dice/d8, /obj/item/weapon/dice/loaded/d20)+existing_typesof(/obj/item/stack/ore)+existing_typesof(/obj/item/ornament)-list(/obj/item/stack/ore) var/list/categories = list("Coin", "Card", "Toy", "Accessory", "Gadget", "Grenade", "Widget", "Bauble", "Bullet") var/item_choice = null - var/duration = 300 + var/duration = 30 SECONDS var/cat_choice = input("Select a kind of 'trinket'.") in categories | null switch(cat_choice) if(null) @@ -107,28 +107,28 @@ item_choice = pick(trinkets_coin) if("Card") item_choice = pick(trinkets_card) - duration = 200 + duration = 20 SECONDS if("Grenade") item_choice = pick(trinkets_grenade) - duration = 100 + duration = 10 SECONDS if("Toy") item_choice = pick(trinkets_toy) - duration = 600 + duration = 60 SECONDS if("Bullet") item_choice = pick(trinkets_bullet) - duration = 200 + duration = 20 SECONDS if("Accessory") item_choice = pick(trinkets_accessory) - duration = 1800 + duration = 180 SECONDS if("Gadget") item_choice = pick(trinkets_gadget) - duration = 1200 + duration = 120 SECONDS if("Widget") item_choice = pick(trinkets_widget) - duration = 1200 + duration = 120 SECONDS if("Bauble") item_choice = pick(trinkets_bauble) - duration = 1800 + duration = 180 SECONDS var/obj/item/I = new item_choice user.put_in_hands(I) spawn(duration) diff --git a/code/modules/spells/targeted/projectile/fireball.dm b/code/modules/spells/targeted/projectile/fireball.dm index 52d72c22f65c..ad5847492fcf 100644 --- a/code/modules/spells/targeted/projectile/fireball.dm +++ b/code/modules/spells/targeted/projectile/fireball.dm @@ -13,10 +13,10 @@ invocation = "ONI SOMA" invocation_type = SP_INV_SHOUT range = 20 - cooldown_min = 20 //10 deciseconds reduction per rank + cooldown_min = 2 SECONDS //1 second reduction per rank spell_aspect_flags = SPELL_FIRE - duration = 20 + duration = 2 SECONDS projectile_speed = 1 cast_prox_range = 0 diff --git a/code/modules/spells/targeted/projectile/firebreath.dm b/code/modules/spells/targeted/projectile/firebreath.dm index ba3f7dd638c8..d6fdc399875e 100644 --- a/code/modules/spells/targeted/projectile/firebreath.dm +++ b/code/modules/spells/targeted/projectile/firebreath.dm @@ -14,10 +14,10 @@ invocation = "SPY'SI MEAT'A'BAL" invocation_type = SP_INV_SHOUT range = 20 - cooldown_min = 20 + cooldown_min = 2 SECONDS spell_aspect_flags = SPELL_FIRE - duration = 20 + duration = 2 SECONDS projectile_speed = 1 dumbfire = 0 diff --git a/code/modules/spells/targeted/projectile/magic_missile.dm b/code/modules/spells/targeted/projectile/magic_missile.dm index d9572f11be7d..864e1a9d812d 100644 --- a/code/modules/spells/targeted/projectile/magic_missile.dm +++ b/code/modules/spells/targeted/projectile/magic_missile.dm @@ -11,12 +11,12 @@ invocation = "FORTI GY AMA" invocation_type = SP_INV_SHOUT range = 7 - cooldown_min = 90 //15 deciseconds reduction per rank + cooldown_min = 9 SECONDS //1.5 seconds reduction per rank max_targets = 0 proj_type = /obj/item/projectile/spell_projectile/seeking/magic_missile - duration = 10 + duration = 1 SECONDS projectile_speed = 5 hud_state = "wiz_mm" diff --git a/code/modules/spells/targeted/projectile/pie_throw.dm b/code/modules/spells/targeted/projectile/pie_throw.dm index 7352bb686d9a..0e148406ad95 100644 --- a/code/modules/spells/targeted/projectile/pie_throw.dm +++ b/code/modules/spells/targeted/projectile/pie_throw.dm @@ -12,7 +12,7 @@ range = 20 spell_flags = WAIT_FOR_CLICK | IS_HARMFUL - duration = 20 + duration = 2 SECONDS projectile_speed = 1 level_max = list(SP_TOTAL = 5, SP_POWER = 5) diff --git a/code/modules/spells/targeted/pumpkinhead.dm b/code/modules/spells/targeted/pumpkinhead.dm index ea39ffb84a82..094748e4ffbb 100644 --- a/code/modules/spells/targeted/pumpkinhead.dm +++ b/code/modules/spells/targeted/pumpkinhead.dm @@ -12,7 +12,7 @@ max_targets = 1 invocation = "H'T POT'TO" invocation_type = SP_INV_SHOUT - cooldown_min = 200 //100 deciseconds reduction per rank + cooldown_min = 20 SECONDS //10 seconds reduction per rank hud_state = "pumpkin" diff --git a/code/modules/spells/targeted/punch.dm b/code/modules/spells/targeted/punch.dm index 44a6593e0ada..1d11f4b02f26 100644 --- a/code/modules/spells/targeted/punch.dm +++ b/code/modules/spells/targeted/punch.dm @@ -9,7 +9,7 @@ invocation = "ROKETTOPANCHI" message = "You are punched with great force!" spell_flags = IS_HARMFUL | WAIT_FOR_CLICK | NEEDSCLOTHES - cooldown_min = 30 + cooldown_min = 3 SECONDS invocation_type = SP_INV_SHOUT max_targets = 1 range = 1 diff --git a/code/modules/spells/targeted/push.dm b/code/modules/spells/targeted/push.dm index 3e932c1db402..bfe85f1f3394 100644 --- a/code/modules/spells/targeted/push.dm +++ b/code/modules/spells/targeted/push.dm @@ -11,7 +11,7 @@ invocation = "P'SH IT RE'L GUD" invocation_type = SP_INV_SHOUT range = 1 - cooldown_min = 10 + cooldown_min = 1 SECONDS level_max = list(SP_TOTAL = 4, SP_SPEED = 4) sparks_spread = 1 sparks_amt = 4 diff --git a/code/modules/spells/targeted/shoesnatch.dm b/code/modules/spells/targeted/shoesnatch.dm index a452d740c800..3548c35ee505 100644 --- a/code/modules/spells/targeted/shoesnatch.dm +++ b/code/modules/spells/targeted/shoesnatch.dm @@ -13,7 +13,7 @@ range = 7 max_targets = 1 spell_flags = WAIT_FOR_CLICK - cooldown_min = 30 + cooldown_min = 3 SECONDS selection_type = "range" level_max = list(SP_TOTAL = 5, SP_SPEED = 4, SP_POWER = 1) diff --git a/code/modules/spells/targeted/street_alchemy.dm b/code/modules/spells/targeted/street_alchemy.dm index 674112f3b19c..24fbae38987b 100644 --- a/code/modules/spells/targeted/street_alchemy.dm +++ b/code/modules/spells/targeted/street_alchemy.dm @@ -6,7 +6,7 @@ specialization = SSUTILITY school = "transmutation" charge_max = 250 - cooldown_min = 30 + cooldown_min = 3 SECONDS invocation_type = SP_INV_SHOUT range = 10 //If you can see it, you can steal it max_targets = 1 diff --git a/code/modules/spells/targeted/summon_snacks.dm b/code/modules/spells/targeted/summon_snacks.dm index 38bf11eff169..5aed2cf52c5d 100644 --- a/code/modules/spells/targeted/summon_snacks.dm +++ b/code/modules/spells/targeted/summon_snacks.dm @@ -20,7 +20,7 @@ invocation_type = SP_INV_SHOUT message = "Suddenly your hands are full of snacks!" charge_max = 300 - cooldown_min = 150 + cooldown_min = 15 SECONDS selection_type = "range" range = 7 valid_targets = list(/mob/living/carbon) diff --git a/code/modules/spells/targeted/wrap.dm b/code/modules/spells/targeted/wrap.dm index 6fe7451152c2..b5d6ca353c7f 100644 --- a/code/modules/spells/targeted/wrap.dm +++ b/code/modules/spells/targeted/wrap.dm @@ -11,7 +11,7 @@ invocation = "W'APPIN' PR'SN'TS!" invocation_type = SP_INV_SHOUT amt_stunned = 5//just exists to make sure the giftwrap "catches" them - cooldown_min = 30 //100 deciseconds reduction per rank + cooldown_min = 3 SECONDS //10 seconds reduction per rank valid_targets = list(/mob/living) hud_state = "wrap" From be5d1c96e62d0cdabd01f25ecbe3bd2deeaeef41 Mon Sep 17 00:00:00 2001 From: Shifty Date: Sat, 26 Apr 2025 11:00:12 +0100 Subject: [PATCH 6/7] Bigger work: charge_max => charge_cooldown_max --- code/_onclick/hud/spell_screen_objects.dm | 4 +-- .../factions/bloodcult/bloodcult_spells.dm | 6 ++-- .../gamemode/factions/legacy_cult/runes.dm | 2 +- code/datums/gamemode/role/malf/malf_apcs.dm | 2 +- code/datums/gamemode/role/rambler.dm | 2 +- code/game/dna/genes/goon_disabilities.dm | 4 +-- code/game/dna/genes/goon_powers.dm | 12 +++---- code/game/dna/genes/powers.dm | 4 +-- code/game/dna/genes/vg_powers.dm | 4 +-- code/game/gamemodes/wizard/artefact.dm | 2 +- code/game/gamemodes/wizard/spellbook.dm | 4 +-- code/game/jobs/job/civilian.dm | 2 +- code/game/mecha/combat/durand.dm | 2 +- code/game/mecha/combat/gygax.dm | 2 +- code/game/mecha/combat/marauder.dm | 4 +-- code/game/mecha/combat/phazon.dm | 2 +- code/game/mecha/equipment/tools/tools.dm | 2 +- code/game/mecha/mecha.dm | 4 +-- code/game/objects/items/potions.dm | 2 +- code/modules/clothing/spacesuits/time.dm | 6 ++-- code/modules/mob/dead/observer/spells.dm | 4 +-- .../carbon/alien/humanoid/alien_powers.dm | 7 ++-- code/modules/mob/living/carbon/combat.dm | 2 +- .../mob/living/carbon/species_powers.dm | 4 +-- .../silicon/robot/robot_subtypes/starman.dm | 14 ++++---- .../simple_animal/hostile/arcane_golem.dm | 2 +- .../mob/living/simple_animal/hostile/grue.dm | 4 +-- .../simple_animal/hostile/grue_powers.dm | 12 +++---- .../mob/living/simple_animal/hostile/hog.dm | 4 +-- .../simple_animal/hostile/necro_powers.dm | 2 +- .../hostile/pulse_demon/pulsedemon_powers.dm | 10 +++--- .../mob/living/simple_animal/shade_powers.dm | 10 +++--- code/modules/mob/mob.dm | 6 ++-- .../reagents/reagents/reagents_ethanol.dm | 4 +-- code/modules/spells/amogus_spells.dm | 4 +-- code/modules/spells/aoe_turf/blink.dm | 4 +-- code/modules/spells/aoe_turf/charge.dm | 4 +-- .../spells/aoe_turf/conjure/arcane_golem.dm | 2 +- code/modules/spells/aoe_turf/conjure/bats.dm | 2 +- .../spells/aoe_turf/conjure/construct.dm | 36 +++++++++---------- .../spells/aoe_turf/conjure/doppelganger.dm | 2 +- .../spells/aoe_turf/conjure/forcewall.dm | 6 ++-- .../spells/aoe_turf/conjure/pitbulls.dm | 2 +- .../spells/aoe_turf/conjure/pontiac.dm | 2 +- .../modules/spells/aoe_turf/conjure/snakes.dm | 2 +- .../spells/aoe_turf/conjure/snowmobile.dm | 2 +- .../modules/spells/aoe_turf/conjure/spares.dm | 2 +- code/modules/spells/aoe_turf/conjure/spore.dm | 2 +- code/modules/spells/aoe_turf/disable_tech.dm | 2 +- code/modules/spells/aoe_turf/fall.dm | 2 +- code/modules/spells/aoe_turf/glare.dm | 2 +- code/modules/spells/aoe_turf/hangcurse.dm | 2 +- code/modules/spells/aoe_turf/knock.dm | 4 +-- code/modules/spells/aoe_turf/lightbulb.dm | 2 +- .../modules/spells/aoe_turf/magic_wardrobe.dm | 8 ++--- code/modules/spells/aoe_turf/screech.dm | 2 +- code/modules/spells/aoe_turf/smoke.dm | 2 +- code/modules/spells/aoe_turf/summons.dm | 6 ++-- code/modules/spells/changeling/absorb_dna.dm | 2 +- .../spells/changeling/changeling_spell.dm | 2 +- code/modules/spells/changeling/rapidregen.dm | 2 +- .../spells/changeling/regenerative_stasis.dm | 2 +- code/modules/spells/changeling/split.dm | 2 +- code/modules/spells/construct_spells.dm | 4 +-- code/modules/spells/general/area_teleport.dm | 2 +- code/modules/spells/general/cloak.dm | 2 +- code/modules/spells/general/lightning.dm | 12 +++---- code/modules/spells/general/reflect_pain.dm | 2 +- code/modules/spells/general/rejuvenate.dm | 2 +- code/modules/spells/general/ring_of_fire.dm | 2 +- code/modules/spells/general/rune_write.dm | 2 +- code/modules/spells/general/shapeshift.dm | 2 +- code/modules/spells/general/silentbite.dm | 2 +- code/modules/spells/general/undeath.dm | 2 +- code/modules/spells/passive/passive.dm | 2 +- code/modules/spells/spell_code.dm | 32 ++++++++--------- code/modules/spells/spider_spells.dm | 10 +++--- code/modules/spells/targeted/absorb.dm | 2 +- code/modules/spells/targeted/arcanetamper.dm | 2 +- code/modules/spells/targeted/balefulmutate.dm | 2 +- .../spells/targeted/buttbots_revenge.dm | 2 +- code/modules/spells/targeted/card.dm | 2 +- code/modules/spells/targeted/disease.dm | 2 +- code/modules/spells/targeted/disintegrate.dm | 2 +- code/modules/spells/targeted/disorient.dm | 2 +- code/modules/spells/targeted/enthrall.dm | 2 +- code/modules/spells/targeted/equip/cape.dm | 4 +-- .../spells/targeted/equip/clowncurse.dm | 2 +- .../spells/targeted/equip/frenchcurse.dm | 2 +- .../spells/targeted/equip/horsemask.dm | 2 +- .../spells/targeted/equip/robesummon.dm | 2 +- .../modules/spells/targeted/ethereal_jaunt.dm | 10 +++--- code/modules/spells/targeted/feint.dm | 2 +- code/modules/spells/targeted/fist.dm | 2 +- code/modules/spells/targeted/flesh_to_coal.dm | 2 +- .../modules/spells/targeted/flesh_to_stone.dm | 2 +- code/modules/spells/targeted/genetic.dm | 4 +-- code/modules/spells/targeted/grease.dm | 2 +- code/modules/spells/targeted/harvest.dm | 2 +- code/modules/spells/targeted/heal.dm | 2 +- code/modules/spells/targeted/hypnotise.dm | 2 +- code/modules/spells/targeted/ice_barrage.dm | 2 +- .../modules/spells/targeted/invoke_emotion.dm | 2 +- code/modules/spells/targeted/mind_transfer.dm | 2 +- code/modules/spells/targeted/pacify.dm | 2 +- code/modules/spells/targeted/parrotmorph.dm | 2 +- .../spells/targeted/projectile/fireball.dm | 2 +- .../spells/targeted/projectile/firebreath.dm | 2 +- .../targeted/projectile/magic_missile.dm | 2 +- .../spells/targeted/projectile/pie_throw.dm | 2 +- code/modules/spells/targeted/pumpkinhead.dm | 2 +- code/modules/spells/targeted/punch.dm | 4 +-- code/modules/spells/targeted/push.dm | 2 +- code/modules/spells/targeted/recall.dm | 4 +-- code/modules/spells/targeted/retard.dm | 2 +- code/modules/spells/targeted/shoesnatch.dm | 2 +- .../modules/spells/targeted/street_alchemy.dm | 2 +- code/modules/spells/targeted/summon_snacks.dm | 2 +- code/modules/spells/targeted/wrap.dm | 2 +- maps/RandomZLevels/wildwest_props.dm | 2 +- 120 files changed, 226 insertions(+), 225 deletions(-) diff --git a/code/_onclick/hud/spell_screen_objects.dm b/code/_onclick/hud/spell_screen_objects.dm index c8fb1b7ae3c0..8d5471dd5159 100644 --- a/code/_onclick/hud/spell_screen_objects.dm +++ b/code/_onclick/hud/spell_screen_objects.dm @@ -305,11 +305,11 @@ overlays -= spell_icon if((spell.charge_type & SP_RECHARGE) || (spell.charge_type & SP_CHARGES) || (spell.charge_type & SP_GRADUAL)) - if(spell.charge_counter < spell.charge_max) + if(spell.charge_counter < spell.charge_cooldown_max) icon_state = "[spell_base]_spell_base" if(spell.charge_counter > 0) var/icon/partial_charge = icon(src.icon, "[spell_base]_spell_ready") - partial_charge.Crop(1, 1, partial_charge.Width(), round(partial_charge.Height() * spell.charge_counter / spell.charge_max)) + partial_charge.Crop(1, 1, partial_charge.Width(), round(partial_charge.Height() * spell.charge_counter / spell.charge_cooldown_max)) overlays += partial_charge if(last_charged_icon) overlays -= last_charged_icon diff --git a/code/datums/gamemode/factions/bloodcult/bloodcult_spells.dm b/code/datums/gamemode/factions/bloodcult/bloodcult_spells.dm index 3b485fb0ea85..cf8b0cef78d1 100644 --- a/code/datums/gamemode/factions/bloodcult/bloodcult_spells.dm +++ b/code/datums/gamemode/factions/bloodcult/bloodcult_spells.dm @@ -15,7 +15,7 @@ var/list/arcane_pockets = list() invocation_type = SP_INV_NONE charge_type = SP_RECHARGE - charge_max = 0 + charge_cooldown_max = 0 range = 0 spell_flags = null insufficient_holder_msg = "" @@ -84,7 +84,7 @@ var/list/arcane_pockets = list() user_type = USER_TYPE_CULT hud_state = "astral_return" override_base = "cult" - charge_max = 0 + charge_cooldown_max = 0 spell_flags = 0 range = 0 @@ -100,7 +100,7 @@ var/list/arcane_pockets = list() name = "Toggle Tangibility" desc = "Turn into a visible copy of your body, able to speak and bump into doors. But note that the slightest source of damage will dispel your astral projection altogether." user_type = USER_TYPE_CULT - charge_max = 50//relatively short, but still there to prevent too much spamming in/out of tangibility + charge_cooldown_max = 5 SECONDS//relatively short, but still there to prevent too much spamming in/out of tangibility hud_state = "astral_toggle" override_base = "cult" spell_flags = 0 diff --git a/code/datums/gamemode/factions/legacy_cult/runes.dm b/code/datums/gamemode/factions/legacy_cult/runes.dm index 29d75e2adb00..2144d6192f0d 100644 --- a/code/datums/gamemode/factions/legacy_cult/runes.dm +++ b/code/datums/gamemode/factions/legacy_cult/runes.dm @@ -1451,7 +1451,7 @@ //ticker.mode.update_cult_icons_added(C.mind) for(var/spell/S in C.spell_list) if(S.charge_type & SP_RECHARGE) - if(S.charge_counter == S.charge_max) //Spell is fully charged - let the proc handle everything + if(S.charge_counter == S.charge_cooldown_max) //Spell is fully charged - let the proc handle everything S.take_charge() else //Spell is on cooldown and already recharging - there's no need to call S.process(), just reset charges to 0 S.charge_counter = 0 diff --git a/code/datums/gamemode/role/malf/malf_apcs.dm b/code/datums/gamemode/role/malf/malf_apcs.dm index 6e3aa8fb82f3..b58a393e22bb 100644 --- a/code/datums/gamemode/role/malf/malf_apcs.dm +++ b/code/datums/gamemode/role/malf/malf_apcs.dm @@ -115,7 +115,7 @@ name = "Return to Core" panel = "Malfunction" charge_type = SP_CHARGES - charge_max = 1 + charge_cooldown_max = 1 CHARGES hud_state = "unshunt" /spell/aoe_turf/corereturn/before_target(mob/user) diff --git a/code/datums/gamemode/role/rambler.dm b/code/datums/gamemode/role/rambler.dm index 4a30aae6bf11..861f57f782aa 100644 --- a/code/datums/gamemode/role/rambler.dm +++ b/code/datums/gamemode/role/rambler.dm @@ -136,7 +136,7 @@ name = "Lock in Vow" desc = "Allows you to vow to another soul." abbreviation = "LV" - charge_max = 100 + charge_cooldown_max = 10 SECONDS max_targets = 1 spell_flags = WAIT_FOR_CLICK valid_targets = list(/mob/living) diff --git a/code/game/dna/genes/goon_disabilities.dm b/code/game/dna/genes/goon_disabilities.dm index 6f5c38871fd4..d3035f21afc7 100644 --- a/code/game/dna/genes/goon_disabilities.dm +++ b/code/game/dna/genes/goon_disabilities.dm @@ -257,7 +257,7 @@ user_type = USER_TYPE_GENETIC charge_type = SP_RECHARGE - charge_max = 600 + charge_cooldown_max = 60 SECONDS spell_flags = INCLUDEUSER invocation_type = SP_INV_NONE @@ -301,7 +301,7 @@ user_type = USER_TYPE_GENETIC charge_type = SP_RECHARGE - charge_max = 200 + charge_cooldown_max = 20 SECONDS spell_flags = INCLUDEUSER | STATALLOWED invocation_type = SP_INV_NONE diff --git a/code/game/dna/genes/goon_powers.dm b/code/game/dna/genes/goon_powers.dm index fc72f8bc973a..74777a35bbac 100644 --- a/code/game/dna/genes/goon_powers.dm +++ b/code/game/dna/genes/goon_powers.dm @@ -147,7 +147,7 @@ panel = "Mutant Powers" charge_type = SP_RECHARGE - charge_max = 600 + charge_cooldown_max = 60 SECONDS spell_flags = WAIT_FOR_CLICK invocation_type = SP_INV_NONE @@ -213,7 +213,7 @@ panel = "Mutant Powers" charge_type = SP_RECHARGE - charge_max = 300 + charge_cooldown_max = 30 SECONDS invocation_type = SP_INV_NONE range = 1 @@ -428,12 +428,12 @@ range = SELFCAST charge_type = SP_RECHARGE - charge_max = 60 + charge_cooldown_max = 6 SECONDS spell_flags = INCLUDEUSER invocation_type = SP_INV_NONE - duration = 10 //used for jump distance here + duration = 1 SECONDS //used for jump distance here cast_sound = 'sound/weapons/thudswoosh.ogg' @@ -547,7 +547,7 @@ desc = "Mimic the appearance of others!" panel = "Mutant Powers" user_type = USER_TYPE_GENETIC - charge_max = 1800 + charge_cooldown_max = 180 SECONDS spell_flags = 0 invocation_type = SP_INV_NONE @@ -603,7 +603,7 @@ invocation_type = SP_INV_NONE charge_type = SP_RECHARGE - charge_max = 100 + charge_cooldown_max = 10 SECONDS valid_targets = list(/mob/living/carbon) diff --git a/code/game/dna/genes/powers.dm b/code/game/dna/genes/powers.dm index 1f57bb112adf..97df8b2653ab 100644 --- a/code/game/dna/genes/powers.dm +++ b/code/game/dna/genes/powers.dm @@ -38,7 +38,7 @@ panel = "Mutant Powers" charge_type = SP_RECHARGE - charge_max = 50 + charge_cooldown_max = 5 SECONDS invocation_type = SP_INV_NONE range = GLOBALCAST @@ -125,7 +125,7 @@ desc = "Speak into the minds of others. You must either hear them speak or examine them to make contact." panel = "Mutant Powers" charge_type = SP_RECHARGE - charge_max = 0 + charge_cooldown_max = 0 invocation_type = SP_INV_NONE range = GLOBALCAST //the world max_targets = 1 diff --git a/code/game/dna/genes/vg_powers.dm b/code/game/dna/genes/vg_powers.dm index 5c2405933ddb..173d5693fa86 100644 --- a/code/game/dna/genes/vg_powers.dm +++ b/code/game/dna/genes/vg_powers.dm @@ -60,7 +60,7 @@ Obviously, requires DNA2. range = SELFCAST charge_type = SP_RECHARGE - charge_max = HULK_COOLDOWN + charge_cooldown_max = HULK_COOLDOWN duration = HULK_DURATION @@ -128,7 +128,7 @@ Obviously, requires DNA2. panel = "Mutant Powers" range = SELFCAST charge_type = SP_RECHARGE - charge_max = 50 + charge_cooldown_max = 5 SECONDS invocation_type = SP_INV_NONE spell_flags = INCLUDEUSER override_base = "genetic" diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index 6a8eb5a2aaef..aa6a71ad7a6d 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -474,7 +474,7 @@ user_type = USER_TYPE_ARTIFACT charge_type = SP_RECHARGE - charge_max = 30 SECONDS + charge_cooldown_max = 30 SECONDS invocation_type = SP_INV_SHOUT invocation = "FA'R N' AL'ENC'ED" range = 0 diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index 462308ee9ef3..ef797504f106 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -121,7 +121,7 @@ //speed: 1/5 (upgrade) | power: 0/1 (upgrade) var/spell_name = spell.name - var/spell_cooldown = get_spell_cooldown_string(spell.charge_max, spell.charge_type) + var/spell_cooldown = get_spell_cooldown_string(spell.charge_cooldown_max, spell.charge_type) var/spell_range = get_spell_range_string(spell.range) dat += "[spell_name][spell_cooldown]
Range: [spell_range]
" @@ -217,7 +217,7 @@ var/dat var/spell/abstract_spell = spell_path var/spell_name = initial(abstract_spell.name) - var/spell_cooldown = get_spell_cooldown_string(initial(abstract_spell.charge_max), initial(abstract_spell.charge_type)) + var/spell_cooldown = get_spell_cooldown_string(initial(abstract_spell.charge_cooldown_max), initial(abstract_spell.charge_type)) var/spell_price = get_spell_price(abstract_spell) dat += "[spell_name][spell_cooldown] ([buy_href_link(spell_path, spell_price, "buy for [spell_price] point\s")])
" dat += "[initial(abstract_spell.desc)]
" diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm index 00a6ec76e3c8..7332e17c354b 100644 --- a/code/game/jobs/job/civilian.dm +++ b/code/game/jobs/job/civilian.dm @@ -137,7 +137,7 @@ desc = "Break your oath of silence." school = "mime" panel = "Mime" - charge_max = 10 + charge_cooldown_max = 1 SECONDS spell_flags = INCLUDEUSER range = 0 max_targets = 1 diff --git a/code/game/mecha/combat/durand.dm b/code/game/mecha/combat/durand.dm index 9a02292e1178..eb885f0f9fa9 100644 --- a/code/game/mecha/combat/durand.dm +++ b/code/game/mecha/combat/durand.dm @@ -43,7 +43,7 @@ desc = "Reduce incoming damage in exchange for preventing movement." hud_state = "durand-lockdown" override_icon = 'icons/mecha/mecha.dmi' - charge_max = 10 + charge_cooldown_max = 10 charge_counter = 10 /spell/mech/durand/defence_mode/New() diff --git a/code/game/mecha/combat/gygax.dm b/code/game/mecha/combat/gygax.dm index d6d1b132e018..0858079dfda9 100644 --- a/code/game/mecha/combat/gygax.dm +++ b/code/game/mecha/combat/gygax.dm @@ -57,7 +57,7 @@ /spell/mech/gygax/overload name = "Overload" desc = "Greatly enhance the mech's speed at the cost of integrity per step." - charge_max = 10 + charge_cooldown_max = 10 charge_counter = 10 hud_state = "gygax-gofast" override_icon = 'icons/mecha/mecha.dmi' diff --git a/code/game/mecha/combat/marauder.dm b/code/game/mecha/combat/marauder.dm index 73a35ca7bb2f..0b43b8543eeb 100644 --- a/code/game/mecha/combat/marauder.dm +++ b/code/game/mecha/combat/marauder.dm @@ -183,7 +183,7 @@ desc = "Activate the mech's thrusters to charge in a line and knock down anything in your way." hud_state = "mech_dash" override_icon = 'icons/mob/screen_spells.dmi' - charge_max = 30 + charge_cooldown_max = 30 charge_counter = 30 /spell/mech/marauder/dash/cast_check(skipcharge = FALSE, mob/user = usr) @@ -204,7 +204,7 @@ /spell/mech/marauder/smoke name = "Smoke" desc = "Deploy obscuring smoke to avoid retaliation." - charge_max = 100 + charge_cooldown_max = 100 charge_counter = 100 override_icon = 'icons/mob/screen_spells.dmi' hud_state = "wiz_smoke" diff --git a/code/game/mecha/combat/phazon.dm b/code/game/mecha/combat/phazon.dm index b7525ab0046a..8c7605f82fbf 100644 --- a/code/game/mecha/combat/phazon.dm +++ b/code/game/mecha/combat/phazon.dm @@ -59,7 +59,7 @@ /spell/mech/phazon/phasing name = "Phasing" desc = "Phase through walls." - charge_max = 10 + charge_cooldown_max = 10 charge_counter = 10 hud_state = "phazon-phase" override_icon = 'icons/mecha/mecha.dmi' diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm index ff5e2deaf38e..4731ceecdc7f 100644 --- a/code/game/mecha/equipment/tools/tools.dm +++ b/code/game/mecha/equipment/tools/tools.dm @@ -1319,7 +1319,7 @@ /spell/mech/generator/New(var/obj/mecha/M, var/obj/item/mecha_parts/mecha_equipment/generator/ME) src.linked_mech = M - charge_counter = charge_max + charge_counter = charge_cooldown_max name = ME.name /spell/mech/generator/cast(list/targets, mob/user) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 52ec28cf786a..816f1d788733 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -2077,7 +2077,7 @@ panel = "Mech Modules" spell_flags = null charge_type = SP_RECHARGE - charge_max = 0 + charge_cooldown_max = 0 charge_counter = 0 hud_state = "mecha_equip" override_base = "mech" @@ -2091,7 +2091,7 @@ name = ME.name hud_state = ME.icon_state override_icon = ME.icon - charge_counter = charge_max + charge_counter = charge_cooldown_max desc = "[name]" /spell/mech/Destroy() diff --git a/code/game/objects/items/potions.dm b/code/game/objects/items/potions.dm index 000d55a8155d..bd53f6ca9833 100644 --- a/code/game/objects/items/potions.dm +++ b/code/game/objects/items/potions.dm @@ -116,7 +116,7 @@ /obj/item/potion/mana/imbibe_effect(mob/user) for(var/spell/SP in user.spell_list) if(SP.panel == "Spells") - SP.charge_counter = SP.charge_max + SP.charge_counter = SP.charge_cooldown_max /obj/item/potion/invisibility name = "potion of minor invisibility" diff --git a/code/modules/clothing/spacesuits/time.dm b/code/modules/clothing/spacesuits/time.dm index 80cb6195e921..9e6a46c56f5c 100644 --- a/code/modules/clothing/spacesuits/time.dm +++ b/code/modules/clothing/spacesuits/time.dm @@ -104,7 +104,7 @@ desc = "Halt the progression of time in a small area for five seconds." abbreviation = "ST" hud_state = "time_stop" - charge_max = 30 SECONDS + charge_cooldown_max = 30 SECONDS /spell/aoe_turf/time_suit/time_stop/before_cast(list/targets, mob/user, bypass_range = 0) if(user.timestopped) @@ -120,7 +120,7 @@ desc = "Jump ten seconds into the future." abbreviation = "FJ" hud_state = "time_future" - charge_max = 30 SECONDS + charge_cooldown_max = 30 SECONDS /spell/aoe_turf/time_suit/future_jump/before_cast(list/targets, mob/user, bypass_range = 0) if(user.timestopped) @@ -136,7 +136,7 @@ desc = "Prepare the suit for a jump to the past and execute it after ten seconds." abbreviation = "RF" hud_state = "time_past" - charge_max = 60 SECONDS + charge_cooldown_max = 60 SECONDS /spell/aoe_turf/time_suit/past_jump/before_cast(list/targets, mob/user, bypass_range = 0) if(user.timestopped) diff --git a/code/modules/mob/dead/observer/spells.dm b/code/modules/mob/dead/observer/spells.dm index ebf48c68043a..9af791d520f4 100644 --- a/code/modules/mob/dead/observer/spells.dm +++ b/code/modules/mob/dead/observer/spells.dm @@ -45,7 +45,7 @@ var/global/list/boo_phrases_silicon=list( spell_flags = STATALLOWED | GHOSTCAST school = "transmutation" - charge_max = 60 SECONDS + charge_cooldown_max = 60 SECONDS invocation = "" invocation_type = SP_INV_NONE range = 1 // Or maybe 3? @@ -71,7 +71,7 @@ var/global/list/boo_phrases_silicon=list( school = "transmutation" charge_type = SP_RECHARGE - charge_max = 0 + charge_cooldown_max = 0 invocation = "" invocation_type = SP_INV_NONE range = SELFCAST diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm index 2ad90fe8ac02..28fea26784a1 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm @@ -135,12 +135,13 @@ Doesn't work on other aliens/AI.*/ hud_state = "alien_neurotoxin" override_base = "alien" + // Need 50 plasmas and will only fire every seconds charge_type = SP_HOLDVAR|SP_RECHARGE holder_var_type = "plasma" holder_var_amount = 50 insufficient_holder_msg = "Not enough plasma stored." still_recharging_msg = "You must regenerate your neurotoxin stores first." - charge_max = 50 + charge_cooldown_max = 5 SECONDS spell_flags = WAIT_FOR_CLICK proj_type = /obj/item/projectile/energy/neurotoxin @@ -206,7 +207,7 @@ Doesn't work on other aliens/AI.*/ spell_flags = WAIT_FOR_CLICK charge_type = SP_HOLDVAR|SP_RECHARGE - charge_max = 8 SECONDS + charge_cooldown_max = 8 SECONDS holder_var_type = "plasma" holder_var_amount = 200 insufficient_holder_msg = "Not enough plasma stored." @@ -381,7 +382,7 @@ Doesn't work on other aliens/AI.*/ hud_state = "alien_hide" override_base = "alien" - charge_max = 0 + charge_cooldown_max = 0 /spell/aoe_turf/alien_hide/cast(list/targets, mob/user) if(user.plane != HIDING_MOB_PLANE) diff --git a/code/modules/mob/living/carbon/combat.dm b/code/modules/mob/living/carbon/combat.dm index 259e9cf8ae86..5ed9188f698e 100644 --- a/code/modules/mob/living/carbon/combat.dm +++ b/code/modules/mob/living/carbon/combat.dm @@ -217,7 +217,7 @@ tR += 1 if(spell_list.len) var/spell/targeted/leap/leapTackle = locate(/spell/targeted/leap) in spell_list - if(leapTackle && leapTackle.charge_counter >= leapTackle.charge_max) + if(leapTackle && leapTackle.charge_counter >= leapTackle.charge_cooldown_max) tR += 2 leapTackle.take_charge() return tR diff --git a/code/modules/mob/living/carbon/species_powers.dm b/code/modules/mob/living/carbon/species_powers.dm index feaf459532de..2be4c68c7326 100644 --- a/code/modules/mob/living/carbon/species_powers.dm +++ b/code/modules/mob/living/carbon/species_powers.dm @@ -32,7 +32,7 @@ hud_state = "racial_regen_limbs" spell_flags = INCLUDEUSER charge_type = SP_RECHARGE - charge_max = 100 + charge_cooldown_max = 10 SECONDS range = SELFCAST cast_sound = 'sound/effects/squelch1.ogg' still_recharging_msg = "You're still regaining your strength." @@ -103,7 +103,7 @@ override_base = "racial" hud_state = "transfer_reagents" - charge_max = 20 + charge_cooldown_max = 2 SECONDS invocation_type = SP_INV_NONE diff --git a/code/modules/mob/living/silicon/robot/robot_subtypes/starman.dm b/code/modules/mob/living/silicon/robot/robot_subtypes/starman.dm index eb02ecee3757..8faa384e0a4e 100644 --- a/code/modules/mob/living/silicon/robot/robot_subtypes/starman.dm +++ b/code/modules/mob/living/silicon/robot/robot_subtypes/starman.dm @@ -78,7 +78,7 @@ hud_state = "time_future" invocation_type = SP_INV_NONE charge_type = SP_RECHARGE - charge_max = 10 + charge_cooldown_max = 1 SECONDS var/list/starman_music = list('sound/music/battle_against_a_machine.ogg', 'sound/music/imbossible.ogg') /spell/aoe_turf/starman_play_music/cast(list/targets, mob/user = user) @@ -106,7 +106,7 @@ hud_state = "starman_warp" school = "evocation" charge_type = SP_RECHARGE - charge_max = 60 + charge_cooldown_max = 6 SECONDS invocation_type = SP_INV_NONE range = 8 max_targets = 1 @@ -140,7 +140,7 @@ desc = "Slightly heal yourself." hud_state = "psi_lifeup_alpha" charge_type = SP_RECHARGE - charge_max = 250 + charge_cooldown_max = 25 SECONDS invocation_type = SP_INV_NONE var/heal_amount = 30 @@ -175,7 +175,7 @@ hud_state = "psi_shield_beta" school = "evocation" charge_type = SP_RECHARGE - charge_max = 150 + charge_cooldown_max = 15 SECONDS invocation_type = SP_INV_NONE range = 8 max_targets = 1 @@ -232,7 +232,7 @@ desc = "Conjures a psionic starstorm that impacts around you." hud_state = "psi_starstorm_omega" school = "conjuration" - charge_max = 1800 + charge_cooldown_max = 180 SECONDS charge_type = SP_RECHARGE invocation_type = SP_INV_NONE @@ -283,7 +283,7 @@ desc = "Shocks the minds of all entities around you, causing severe mental distress." hud_state = "psi_brainshock_omega" school = "conjuration" - charge_max = 300 + charge_cooldown_max = 30 SECONDS charge_type = SP_RECHARGE invocation_type = SP_INV_NONE @@ -320,7 +320,7 @@ desc = "Damn! Look at those moves!" override_icon = 'icons/mob/robots.dmi' hud_state = "starman" - charge_max = 100 + charge_cooldown_max = 10 SECONDS spell_flags = INCLUDEUSER range = 1 diff --git a/code/modules/mob/living/simple_animal/hostile/arcane_golem.dm b/code/modules/mob/living/simple_animal/hostile/arcane_golem.dm index f63d86a19edd..c4b982da61c9 100644 --- a/code/modules/mob/living/simple_animal/hostile/arcane_golem.dm +++ b/code/modules/mob/living/simple_animal/hostile/arcane_golem.dm @@ -99,7 +99,7 @@ to_chat(master, "As your golem is destroyed, your mana leaks away!") for(var/spell/S in master.spell_list) if(S.charge_type & SP_RECHARGE) - if(S.charge_counter == S.charge_max) //Spell is fully charged - let the proc handle everything + if(S.charge_counter == S.charge_cooldown_max) //Spell is fully charged - let the proc handle everything S.take_charge() else //Spell is on cooldown and already recharging - there's no need to call S.process(), just reset charges to 0 S.charge_counter = 0 diff --git a/code/modules/mob/living/simple_animal/hostile/grue.dm b/code/modules/mob/living/simple_animal/hostile/grue.dm index 30429c83cce5..10507e0b0dd5 100644 --- a/code/modules/mob/living/simple_animal/hostile/grue.dm +++ b/code/modules/mob/living/simple_animal/hostile/grue.dm @@ -702,7 +702,7 @@ //shadow shunt cooldown for(var/spell/aoe_turf/grue_blink/thisspell in spell_list) var/newcooldown = max(45 SECONDS - eatencount * 2 SECONDS, 8 SECONDS) - thisspell.charge_max = newcooldown + thisspell.charge_cooldown_max = newcooldown thisspell.charge_counter = min(newcooldown, thisspell.charge_counter) //Drain the light from the surrounding area. @@ -806,7 +806,7 @@ to_chat(src, "You reach into the darkness, but can't seem to find a way.") //set the remaining cooldown to one second if no valid location was found for(var/spell/aoe_turf/grue_blink/thisspell in spell_list) - thisspell.charge_counter = thisspell.charge_max - 1 SECONDS + thisspell.charge_counter = thisspell.charge_cooldown_max - 1 SECONDS return // Dark sparkles when a grue uses shadow shunt. diff --git a/code/modules/mob/living/simple_animal/hostile/grue_powers.dm b/code/modules/mob/living/simple_animal/hostile/grue_powers.dm index 648789847455..525db1582f0d 100644 --- a/code/modules/mob/living/simple_animal/hostile/grue_powers.dm +++ b/code/modules/mob/living/simple_animal/hostile/grue_powers.dm @@ -8,7 +8,7 @@ spell_flags = WAIT_FOR_CLICK charge_type = SP_RECHARGE - charge_max = 0 SECONDS + charge_cooldown_max = 0 SECONDS range = 1 valid_targets = list(/mob/living/carbon) @@ -34,7 +34,7 @@ override_base = "grue" range = 1 charge_type = SP_RECHARGE - charge_max = 0 + charge_cooldown_max = 0 /spell/aoe_turf/grue_ventcrawl/cast(list/targets, mob/living/simple_animal/hostile/grue/user) user.ventcrawl() @@ -48,7 +48,7 @@ override_base = "grue" range = 0 charge_type = SP_RECHARGE - charge_max = 0 + charge_cooldown_max = 0 /spell/aoe_turf/grue_hide/cast(list/targets, mob/living/simple_animal/hostile/grue/user) user.hide() @@ -62,7 +62,7 @@ override_base = "grue" range = 0 charge_type = SP_RECHARGE - charge_max = 0 + charge_cooldown_max = 0 /spell/aoe_turf/grue_egg/cast(list/targets, mob/living/simple_animal/hostile/grue/user) user.reproduce() @@ -76,7 +76,7 @@ override_base = "grue" range = 0 charge_type = SP_RECHARGE - charge_max = 0 + charge_cooldown_max = 0 /spell/aoe_turf/grue_moult/cast(list/targets, mob/living/simple_animal/hostile/grue/user) user.moult() @@ -115,7 +115,7 @@ override_base = "grue" range = 0 charge_type = SP_RECHARGE - charge_max = 45 SECONDS + charge_cooldown_max = 45 SECONDS still_recharging_msg = "You need to reorient yourself before doing that again." /spell/aoe_turf/grue_blink/cast(list/targets, mob/living/simple_animal/hostile/grue/user) diff --git a/code/modules/mob/living/simple_animal/hostile/hog.dm b/code/modules/mob/living/simple_animal/hostile/hog.dm index ced444522263..11f3822f88d8 100644 --- a/code/modules/mob/living/simple_animal/hostile/hog.dm +++ b/code/modules/mob/living/simple_animal/hostile/hog.dm @@ -250,7 +250,7 @@ if ungreased adult: l containers if(!client && isliving(target)) //automated headbutting if no client for(var/spell/headbutt/M in spell_list) - if(M.charge_counter == M.charge_max) + if(M.charge_counter == M.charge_cooldown_max) M.cast(list(target),src) M.charge_counter = 0 M.process() @@ -263,7 +263,7 @@ if ungreased adult: l containers /spell/headbutt name = "Headbutt" desc = "Knocks the target down." - charge_max = 10 SECONDS + charge_cooldown_max = 10 SECONDS spell_flags = WAIT_FOR_CLICK range = 1 hud_state = "wiz_fist" diff --git a/code/modules/mob/living/simple_animal/hostile/necro_powers.dm b/code/modules/mob/living/simple_animal/hostile/necro_powers.dm index e0f0809af798..550a3014c395 100644 --- a/code/modules/mob/living/simple_animal/hostile/necro_powers.dm +++ b/code/modules/mob/living/simple_animal/hostile/necro_powers.dm @@ -3,7 +3,7 @@ desc = "Decay further into undead" user_type = USER_TYPE_ZOMBIE insufficient_holder_msg = "You are not dead enough." - charge_max = 0 + charge_cooldown_max = 0 hud_state = "decay" holder_var_type = "death" diff --git a/code/modules/mob/living/simple_animal/hostile/pulse_demon/pulsedemon_powers.dm b/code/modules/mob/living/simple_animal/hostile/pulse_demon/pulsedemon_powers.dm index c229813e38c3..c76d877d1dd0 100644 --- a/code/modules/mob/living/simple_animal/hostile/pulse_demon/pulsedemon_powers.dm +++ b/code/modules/mob/living/simple_animal/hostile/pulse_demon/pulsedemon_powers.dm @@ -218,7 +218,7 @@ override_base = "pulsedemon" hud_state = "pd_icon_base" - charge_max = 20 SECONDS + charge_cooldown_max = 20 SECONDS cooldown_min = 1 SECONDS var/charge_cost = 0 var/purchase_cost = 0 @@ -266,8 +266,8 @@ return 0 spell_levels[SP_SPEED]++ var/new_name = generate_name() - charge_max = round(charge_max/1.5, 1) // -33%/-56%/-70% cooldown reduction - . = "You have improved [name] into [new_name]. Its cooldown is now [round(charge_max/10, 1)] seconds." + charge_cooldown_max = round(charge_cooldown_max/1.5, 1) // -33%/-56%/-70% cooldown reduction + . = "You have improved [name] into [new_name]. Its cooldown is now [round(charge_cooldown_max/10, 1)] seconds." name = new_name quicken_cost = round(quicken_cost * 1.5, 1) @@ -308,7 +308,7 @@ desc = "View and purchase abilities with your electrical charge." abbreviation = "AB" hud_state = "pd_closed" - charge_max = 0 + charge_cooldown_max = 0 level_max = list() invisible = 1 @@ -534,7 +534,7 @@ /spell/pulse_demon/sustaincharge level_max = list(SP_TOTAL = 2, SP_SPEED = 0, SP_POWER = 2) // Why would cooldown be here? - charge_max = 0 SECONDS // See? + charge_cooldown_max = 0 SECONDS // See? hud_state = "pd_cableleave" name = "Self-Sustaining Charge" abbreviation = "SC" diff --git a/code/modules/mob/living/simple_animal/shade_powers.dm b/code/modules/mob/living/simple_animal/shade_powers.dm index 80aeb47daaa4..bfc921530264 100644 --- a/code/modules/mob/living/simple_animal/shade_powers.dm +++ b/code/modules/mob/living/simple_animal/shade_powers.dm @@ -97,7 +97,7 @@ invocation_type = SP_INV_NONE charge_type = SP_RECHARGE - charge_max = 0 + charge_cooldown_max = 0 range = 0 spell_flags = null insufficient_holder_msg = "" @@ -118,7 +118,7 @@ invocation_type = SP_INV_NONE charge_type = SP_RECHARGE - charge_max = 0 + charge_cooldown_max = 0 range = 0 spell_flags = null insufficient_holder_msg = "" @@ -235,7 +235,7 @@ invocation_type = SP_INV_NONE charge_type = SP_RECHARGE - charge_max = 40 + charge_cooldown_max = 4 SECONDS range = 0 spell_flags = null insufficient_holder_msg = "" @@ -310,7 +310,7 @@ invocation_type = SP_INV_NONE charge_type = SP_RECHARGE - charge_max = 20 + charge_cooldown_max = 2 SECONDS range = 0 spell_flags = null insufficient_holder_msg = "" @@ -362,7 +362,7 @@ invocation_type = SP_INV_NONE charge_type = SP_RECHARGE - charge_max = 20 + charge_cooldown_max = 2 SECONDS range = 0 spell_flags = null insufficient_holder_msg = "" diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index e2fb7d713e23..025c7fc70b0a 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1479,9 +1479,9 @@ Use this proc preferably at the end of an equipment loadout if(charge_type & SP_HOLDVAR) statpanel(S.panel,"Required [S.holder_var_type]: [S.holder_var_amount]",S.connected_button) else if(charge_type & SP_CHARGES) - statpanel(S.panel,"[S.charge_max? "[S.charge_counter]/[S.charge_max] charges" : "Free"]",S.connected_button) + statpanel(S.panel,"[S.charge_cooldown_max? "[S.charge_counter]/[S.charge_cooldown_max] charges" : "Free"]",S.connected_button) else if(charge_type & SP_RECHARGE || charge_type & SP_GRADUAL) - statpanel(S.panel,"[S.charge_max? "[S.charge_counter/10.0]/[S.charge_max/10] seconds" : "Free"]",S.connected_button) + statpanel(S.panel,"[S.charge_cooldown_max? "[S.charge_counter/10.0]/[S.charge_cooldown_max/10] seconds" : "Free"]",S.connected_button) sleep(world.tick_lag * 2) @@ -2069,7 +2069,7 @@ Use this proc preferably at the end of an equipment loadout desc = "Morph back into your previous form." spell_flags = GHOSTCAST abbreviation = "RF" - charge_max = 1 + charge_cooldown_max = 0.1 SECONDS invocation = "none" invocation_type = SP_INV_NONE range = 0 diff --git a/code/modules/reagents/reagents/reagents_ethanol.dm b/code/modules/reagents/reagents/reagents_ethanol.dm index cfbd763b925b..116f3a7c0afd 100644 --- a/code/modules/reagents/reagents/reagents_ethanol.dm +++ b/code/modules/reagents/reagents/reagents_ethanol.dm @@ -583,7 +583,7 @@ fakespell.invocation_type = SP_INV_SHOUT fakespell.charge_type = SP_CHARGES fakespell.charge_counter = 0 - fakespell.charge_max = 1 + fakespell.charge_cooldown_max = 1 CHARGES if(prob(20)) fakespell.name = name_modifier + fakespell.name fake_spells += fakespell @@ -599,7 +599,7 @@ H.add_spell(thisisdumb) thisisdumb.charge_type = SP_CHARGES thisisdumb.charge_counter = 1 - thisisdumb.charge_max = 1 + thisisdumb.charge_cooldown_max = 1 CHARGES H.cast_spell(thisisdumb,list(H)) holder.remove_reagent(MAGICADELUXE,5) diff --git a/code/modules/spells/amogus_spells.dm b/code/modules/spells/amogus_spells.dm index 2939ee45fc5f..a979c342f8ac 100644 --- a/code/modules/spells/amogus_spells.dm +++ b/code/modules/spells/amogus_spells.dm @@ -2,7 +2,7 @@ name = "Piercer" desc = "Overload your flash bulb to blind a target creature." hud_state = "amogusflash_piercer" - charge_max = 300 SECONDS + charge_cooldown_max = 300 SECONDS range = 3 user_type = USER_TYPE_NOUSER spell_flags = WAIT_FOR_CLICK @@ -39,7 +39,7 @@ desc = "Blind a vulnerable target creature." hud_state = "amogusflash_flasher" range = 1 - charge_max = 30 SECONDS + charge_cooldown_max = 30 SECONDS user_type = USER_TYPE_NOUSER spell_flags = WAIT_FOR_CLICK diff --git a/code/modules/spells/aoe_turf/blink.dm b/code/modules/spells/aoe_turf/blink.dm index 24b1e9832b8b..c7c2a5090519 100644 --- a/code/modules/spells/aoe_turf/blink.dm +++ b/code/modules/spells/aoe_turf/blink.dm @@ -6,7 +6,7 @@ abbreviation = "BL" school = "abjuration" - charge_max = 20 + charge_cooldown_max = 2 SECONDS spell_flags = IGNOREDENSE | IGNORESPACE invocation = "none" invocation_type = SP_INV_NONE @@ -42,7 +42,7 @@ override_base = "vamp" hud_state = "vamp_blink" - charge_max = 20 SECONDS + charge_cooldown_max = 20 SECONDS cooldown_min = 20 SECONDS var/max_lum = 1 diff --git a/code/modules/spells/aoe_turf/charge.dm b/code/modules/spells/aoe_turf/charge.dm index cfba8d8855aa..4684db149b5d 100644 --- a/code/modules/spells/aoe_turf/charge.dm +++ b/code/modules/spells/aoe_turf/charge.dm @@ -5,7 +5,7 @@ specialization = SSUTILITY school = "transmutation" - charge_max = 600 + charge_cooldown_max = 60 SECONDS spell_flags = 0 invocation = "DIRI CEL" invocation_type = SP_INV_WHISPER @@ -28,7 +28,7 @@ if(M.spell_list.len != 0) for(var/spell/S in M.spell_list) if(!istype(S, /spell/aoe_turf/charge)) - S.charge_counter = S.charge_max + S.charge_counter = S.charge_cooldown_max to_chat(M, "You feel raw magic flowing through you, it feels good!") else to_chat(M, "You feel very strange for a moment, but then it passes.") diff --git a/code/modules/spells/aoe_turf/conjure/arcane_golem.dm b/code/modules/spells/aoe_turf/conjure/arcane_golem.dm index 9032cec1f876..367582045fed 100644 --- a/code/modules/spells/aoe_turf/conjure/arcane_golem.dm +++ b/code/modules/spells/aoe_turf/conjure/arcane_golem.dm @@ -6,7 +6,7 @@ user_type = USER_TYPE_WIZARD specialization = SSUTILITY - charge_max = 20 SECONDS + charge_cooldown_max = 20 SECONDS cooldown_min = 1 SECONDS spell_levels = list(SP_SPEED = 0, SP_AMOUNT = 0) diff --git a/code/modules/spells/aoe_turf/conjure/bats.dm b/code/modules/spells/aoe_turf/conjure/bats.dm index 689f53d8cbd3..a9494d299bd7 100644 --- a/code/modules/spells/aoe_turf/conjure/bats.dm +++ b/code/modules/spells/aoe_turf/conjure/bats.dm @@ -6,7 +6,7 @@ summon_type = list(/mob/living/simple_animal/hostile/scarybat) summon_amt = 3 - charge_max = 2 MINUTES + charge_cooldown_max = 2 MINUTES cooldown_min = 2 MINUTES invocation = "" invocation_type = SP_INV_NONE diff --git a/code/modules/spells/aoe_turf/conjure/construct.dm b/code/modules/spells/aoe_turf/conjure/construct.dm index ee1edd4b8407..458629d4e7bd 100644 --- a/code/modules/spells/aoe_turf/conjure/construct.dm +++ b/code/modules/spells/aoe_turf/conjure/construct.dm @@ -6,7 +6,7 @@ user_type = USER_TYPE_ARTIFACT school = "conjuration" - charge_max = 600 + charge_cooldown_max = 60 SECONDS spell_flags = 0 invocation = "none" invocation_type = SP_INV_NONE @@ -19,7 +19,7 @@ /spell/aoe_turf/conjure/construct/lesser user_type = USER_TYPE_CULT - charge_max = 1800 + charge_cooldown_max = 180 SECONDS summon_type = list(/obj/structure/constructshell/cult) hud_state = "const_shell" override_base = "cult" @@ -44,7 +44,7 @@ desc = "This spell conjures a cult floor. You can also click existing floors up to 3 tiles away to convert them." user_type = USER_TYPE_CULT - charge_max = 50 + charge_cooldown_max = 5 SECONDS spell_flags = Z2NOCAST | CONSTRUCT_CHECK invocation = "none" invocation_type = SP_INV_NONE @@ -66,9 +66,9 @@ . = ..() if (!.) if (convert_floor) - charge_max = 10 + charge_cooldown_max = 1 SECONDS else - charge_max = 50 + charge_cooldown_max = 5 SECONDS /spell/aoe_turf/conjure/floor/conjure_animation(var/atom/movable/overlay/animation, var/turf/target) animation.icon_state = "cultfloor" @@ -86,7 +86,7 @@ desc = "This spell conjures a cult wall. You can also click existing non-reinforced walls up to 3 tiles away to convert them." user_type = USER_TYPE_CULT - charge_max = 100 + charge_cooldown_max = 10 SECONDS spell_flags = Z2NOCAST | CONSTRUCT_CHECK invocation = "none" invocation_type = SP_INV_NONE @@ -108,9 +108,9 @@ . = ..() if (!.) if (convert_wall) - charge_max = 20 + charge_cooldown_max = 2 SECONDS else - charge_max = 100 + charge_cooldown_max = 10 SECONDS /spell/aoe_turf/conjure/wall/conjure_animation(var/atom/movable/overlay/animation, var/turf/target) animation.icon_state = "cultwall" @@ -128,7 +128,7 @@ desc = "This spell conjures a cult door. Those automatically open and close upon the passage of a cultist, construct or shade." user_type = USER_TYPE_CULT - charge_max = 100 + charge_cooldown_max = 10 SECONDS spell_flags = Z2NOCAST | CONSTRUCT_CHECK invocation = "none" invocation_type = SP_INV_NONE @@ -158,7 +158,7 @@ desc = "This spell constructs a reinforced metal wall." user_type = USER_TYPE_CULT//why? - charge_max = 300 + charge_cooldown_max = 30 SECONDS spell_flags = Z2NOCAST invocation = "none" invocation_type = SP_INV_NONE @@ -173,7 +173,7 @@ desc = "This spell reaches into Nar-Sie's realm, summoning one of the legendary fragments across time and space. An altar would let you let you conjure a perfect Soul Gem instead, producing better constructs." user_type = USER_TYPE_CULT - charge_max = 3000 + charge_cooldown_max = 300 SECONDS spell_flags = 0 invocation = "none" invocation_type = SP_INV_NONE @@ -200,7 +200,7 @@ desc = "This spell conjures a fragile crystal from Nar-Sie's realm. Makes for a convenient light source, or a weak obstacle." user_type = USER_TYPE_CULT - charge_max = 200 + charge_cooldown_max = 20 SECONDS spell_flags = CONSTRUCT_CHECK|IGNORESPACE|IGNOREDENSE|NODUPLICATE invocation = "none" invocation_type = SP_INV_NONE @@ -229,7 +229,7 @@ desc = "Allows you to pull up a shield to protect yourself and allies from incoming threats." user_type = USER_TYPE_CULT - charge_max = 300 + charge_cooldown_max = 30 SECONDS spell_flags = 0 invocation = "none" invocation_type = SP_INV_NONE @@ -263,7 +263,7 @@ desc = "Raise a temporary line of indestructible walls to block your enemies' path and protect your allies." user_type = USER_TYPE_CULT - charge_max = 250 + charge_cooldown_max = 25 SECONDS spell_flags = 0 invocation = "none" invocation_type = SP_INV_NONE @@ -353,7 +353,7 @@ desc = "Build a lesser construct to defend an area." user_type = USER_TYPE_CULT - charge_max = 600 + charge_cooldown_max = 60 SECONDS spell_flags = 0 invocation = "none" invocation_type = SP_INV_NONE @@ -402,7 +402,7 @@ desc = "Raise a cult structure that you may then operate, such as an altar, a forge, or a spire." user_type = USER_TYPE_CULT - charge_max = 200 + charge_cooldown_max = 20 SECONDS spell_flags = 0 invocation = "none" invocation_type = SP_INV_NONE @@ -459,7 +459,7 @@ desc = "Place an entrance to a shortcut through the veil between this world and the other one." user_type = USER_TYPE_CULT - charge_max = 600 + charge_cooldown_max = 60 SECONDS spell_flags = Z2NOCAST | CONSTRUCT_CHECK invocation = "none" invocation_type = SP_INV_NONE @@ -502,7 +502,7 @@ desc = "Place an exit to a shotcut through the veil between this world and the other one." user_type = USER_TYPE_CULT - charge_max = 600 + charge_cooldown_max = 60 SECONDS spell_flags = Z2NOCAST | CONSTRUCT_CHECK invocation = "none" invocation_type = SP_INV_NONE diff --git a/code/modules/spells/aoe_turf/conjure/doppelganger.dm b/code/modules/spells/aoe_turf/conjure/doppelganger.dm index 25f34989d502..613d0ecb515d 100644 --- a/code/modules/spells/aoe_turf/conjure/doppelganger.dm +++ b/code/modules/spells/aoe_turf/conjure/doppelganger.dm @@ -8,7 +8,7 @@ price = SP_BASE_PRICE / 2 level_max = list(SP_TOTAL = 2, SP_SPEED = 2) - charge_max = 300 + charge_cooldown_max = 30 SECONDS cooldown_reduc = 10 SECONDS cooldown_min = 10 SECONDS invocation = "MY O'N CLO'N" diff --git a/code/modules/spells/aoe_turf/conjure/forcewall.dm b/code/modules/spells/aoe_turf/conjure/forcewall.dm index 90b5fe685850..7f9184056e4e 100644 --- a/code/modules/spells/aoe_turf/conjure/forcewall.dm +++ b/code/modules/spells/aoe_turf/conjure/forcewall.dm @@ -6,7 +6,7 @@ abbreviation = "FW" summon_type = list(/obj/effect/forcefield/wizard) duration = 30 SECONDS - charge_max = 10 SECONDS + charge_cooldown_max = 10 SECONDS cooldown_min = 2 SECONDS spell_flags = 0 invocation = "TARCOL MINTI ZHERI" @@ -26,7 +26,7 @@ summon_type = list(/obj/effect/forcefield/mime) invocation_type = SP_INV_EMOTE invocation = "mimes placing their hands on a flat surface, and pushing against it." - charge_max = 300 + charge_cooldown_max = 30 SECONDS cast_sound = null override_base = "grey" @@ -46,7 +46,7 @@ Unwall spell, sadly has to be targeted to be any fun to use specialization = SSOFFENSIVE school = "mime" - charge_max = 300 + charge_cooldown_max = 30 SECONDS cast_sound = null cooldown_min = 2 SECONDS spell_flags = WAIT_FOR_CLICK diff --git a/code/modules/spells/aoe_turf/conjure/pitbulls.dm b/code/modules/spells/aoe_turf/conjure/pitbulls.dm index 435ed1629df6..b69709e3ed05 100644 --- a/code/modules/spells/aoe_turf/conjure/pitbulls.dm +++ b/code/modules/spells/aoe_turf/conjure/pitbulls.dm @@ -9,7 +9,7 @@ price = SP_BASE_PRICE level_max = list(SP_TOTAL = 3, SP_SPEED = 2, SP_POWER = 1) //empower makes them SMASHED and SLAMMED - charge_max = 300 + charge_cooldown_max = 30 SECONDS cooldown_reduc = 10 SECONDS cooldown_min = 10 SECONDS invocation = "GR'T W'TH K'DS" diff --git a/code/modules/spells/aoe_turf/conjure/pontiac.dm b/code/modules/spells/aoe_turf/conjure/pontiac.dm index d034e45c96b8..8636ba254559 100644 --- a/code/modules/spells/aoe_turf/conjure/pontiac.dm +++ b/code/modules/spells/aoe_turf/conjure/pontiac.dm @@ -8,7 +8,7 @@ specialization = SSUTILITY charge_type = SP_CHARGES - charge_max = 1 + charge_cooldown_max = 1 CHARGES school = "conjuration" spell_flags = Z2NOCAST invocation = "NO F'AT C'HX" diff --git a/code/modules/spells/aoe_turf/conjure/snakes.dm b/code/modules/spells/aoe_turf/conjure/snakes.dm index 4029fae83905..87ca229ff008 100644 --- a/code/modules/spells/aoe_turf/conjure/snakes.dm +++ b/code/modules/spells/aoe_turf/conjure/snakes.dm @@ -8,7 +8,7 @@ price = SP_BASE_PRICE / 2 range = 3 - charge_max = 300 + charge_cooldown_max = 30 SECONDS invocation = "WI'L OV SHNISSUGAH" hud_state = "wiz_snakes" diff --git a/code/modules/spells/aoe_turf/conjure/snowmobile.dm b/code/modules/spells/aoe_turf/conjure/snowmobile.dm index 491a958bacf7..1ff436486f16 100644 --- a/code/modules/spells/aoe_turf/conjure/snowmobile.dm +++ b/code/modules/spells/aoe_turf/conjure/snowmobile.dm @@ -4,7 +4,7 @@ user_type = USER_TYPE_OTHER // Unused as far as I am aware. charge_type = SP_CHARGES - charge_max = 1 + charge_cooldown_max = 1 CHARGES school = "conjuration" spell_flags = Z2NOCAST invocation = "SL'IGH B'LLS RIN'!" diff --git a/code/modules/spells/aoe_turf/conjure/spares.dm b/code/modules/spells/aoe_turf/conjure/spares.dm index fab3b81fb86b..78cc01d82727 100644 --- a/code/modules/spells/aoe_turf/conjure/spares.dm +++ b/code/modules/spells/aoe_turf/conjure/spares.dm @@ -10,7 +10,7 @@ school = "conjuration" invocation = "W'ZZ GO' T'E S'RE!" invocation_type = SP_INV_SHOUT - charge_max = 300 + charge_cooldown_max = 30 SECONDS spell_flags = 0 hud_state = "wiz_spare" diff --git a/code/modules/spells/aoe_turf/conjure/spore.dm b/code/modules/spells/aoe_turf/conjure/spore.dm index e6258a29a4c1..9372abceb25f 100644 --- a/code/modules/spells/aoe_turf/conjure/spore.dm +++ b/code/modules/spells/aoe_turf/conjure/spore.dm @@ -8,7 +8,7 @@ still_recharging_msg = "You are still recovering." spell_flags = 0 user_type = USER_TYPE_OTHER - charge_max = 300 + charge_cooldown_max = 30 SECONDS summon_type = list(/mob/living/simple_animal/hostile/blobspore/small) summon_amt = 2 diff --git a/code/modules/spells/aoe_turf/disable_tech.dm b/code/modules/spells/aoe_turf/disable_tech.dm index 1430eace5aae..40aa4db42e17 100644 --- a/code/modules/spells/aoe_turf/disable_tech.dm +++ b/code/modules/spells/aoe_turf/disable_tech.dm @@ -5,7 +5,7 @@ specialization = SSUTILITY abbreviation = "DT" - charge_max = 400 + charge_cooldown_max = 40 SECONDS spell_flags = NEEDSCLOTHES invocation = "NEC CANTIO" invocation_type = SP_INV_SHOUT diff --git a/code/modules/spells/aoe_turf/fall.dm b/code/modules/spells/aoe_turf/fall.dm index 9bcae2d2a1be..4ab7278fee2c 100644 --- a/code/modules/spells/aoe_turf/fall.dm +++ b/code/modules/spells/aoe_turf/fall.dm @@ -13,7 +13,7 @@ var/global/list/falltempoverlays = list() selection_type = "range" school = "transmutation" - charge_max = 500 // now 2min + charge_cooldown_max = 50 SECONDS invocation = "OMNIA RUINAM" invocation_type = SP_INV_SHOUT range = 6 diff --git a/code/modules/spells/aoe_turf/glare.dm b/code/modules/spells/aoe_turf/glare.dm index adddd873900a..8bcbb510e26b 100644 --- a/code/modules/spells/aoe_turf/glare.dm +++ b/code/modules/spells/aoe_turf/glare.dm @@ -7,7 +7,7 @@ user_type = USER_TYPE_VAMPIRE charge_type = SP_RECHARGE - charge_max = 3 MINUTES + charge_cooldown_max = 3 MINUTES invocation_type = SP_INV_NONE range = 3 spell_flags = NEEDSHUMAN diff --git a/code/modules/spells/aoe_turf/hangcurse.dm b/code/modules/spells/aoe_turf/hangcurse.dm index 5f00dc9c1e8d..26a52bc3fbf0 100644 --- a/code/modules/spells/aoe_turf/hangcurse.dm +++ b/code/modules/spells/aoe_turf/hangcurse.dm @@ -11,7 +11,7 @@ Removes letters in the afflicted's sentences like the virology symptom, others m specialization = SSUTILITY abbreviation = "HM" - charge_max = 500 + charge_cooldown_max = 50 SECONDS spell_flags = null invocation = "V_R'_ R_'UG_" invocation_type = SP_INV_SHOUT diff --git a/code/modules/spells/aoe_turf/knock.dm b/code/modules/spells/aoe_turf/knock.dm index 3835afea17f7..ec92fc26e7dc 100644 --- a/code/modules/spells/aoe_turf/knock.dm +++ b/code/modules/spells/aoe_turf/knock.dm @@ -6,7 +6,7 @@ specialization = SSUTILITY school = "transmutation" - charge_max = 100 + charge_cooldown_max = 10 SECONDS spell_flags = 0 invocation = "AULIE OXIN FIERA" invocation_type = SP_INV_WHISPER @@ -55,7 +55,7 @@ spell_flags = CONSTRUCT_CHECK - charge_max = 100 + charge_cooldown_max = 10 SECONDS invocation = "" invocation_type = "silent" range = 5 diff --git a/code/modules/spells/aoe_turf/lightbulb.dm b/code/modules/spells/aoe_turf/lightbulb.dm index dceb37711f84..f0d21dbeb87b 100644 --- a/code/modules/spells/aoe_turf/lightbulb.dm +++ b/code/modules/spells/aoe_turf/lightbulb.dm @@ -5,7 +5,7 @@ specialization = SSUTILITY abbreviation = "LB" - charge_max = 150 + charge_cooldown_max = 15 SECONDS spell_flags = null invocation = "EAIS' RAUG" invocation_type = SP_INV_WHISPER diff --git a/code/modules/spells/aoe_turf/magic_wardrobe.dm b/code/modules/spells/aoe_turf/magic_wardrobe.dm index 17452daf9cac..199357224bcb 100644 --- a/code/modules/spells/aoe_turf/magic_wardrobe.dm +++ b/code/modules/spells/aoe_turf/magic_wardrobe.dm @@ -5,7 +5,7 @@ specialization = SSUTILITY abbreviation = "MW" hud_state = "wardrobe_main" - charge_max = 300 SECONDS + charge_cooldown_max = 300 SECONDS cooldown_min = 150 SECONDS spell_flags = NEEDSCLOTHES | Z2NOCAST invocation_type = SP_INV_SHOUT @@ -76,7 +76,7 @@ if(upgrade_type == SP_SPEED) if(spell_levels[SP_SPEED] >= level_max[SP_SPEED]) return "The spell can't be made any quicker than this!" - var/formula = round((initial_charge_max - cooldown_min)/level_max[SP_SPEED]) + var/formula = round((initial_charge_cooldown_max - cooldown_min)/level_max[SP_SPEED]) return "Decreases the cooldown on summoning a new wardrobe by [formula/10]. Does not affect the recall or summon spells. Also increases its durability." if(upgrade_type == SP_MOVE) if(spell_levels[SP_MOVE] >= level_max[SP_MOVE]) @@ -131,7 +131,7 @@ desc = "Teleport back to your magical wardrobe, assuming it still exists." abbreviation = "WR" hud_state = "wardrobe_recall" - charge_max = 150 + charge_cooldown_max = 15 SECONDS spell_flags = Z2NOCAST | INCLUDEUSER //Creating a wardrobe needs clothes, using it doesn't range = SELFCAST var/obj/structure/closet/magical_wardrobe/mCloset = null @@ -151,7 +151,7 @@ desc = "Teleport your magical wardrobe back to you, assuming it still exists." abbreviation = "WS" hud_state = "wardrobe_summon" - charge_max = 150 + charge_cooldown_max = 15 SECONDS spell_flags = Z2NOCAST var/obj/structure/closet/magical_wardrobe/mCloset = null diff --git a/code/modules/spells/aoe_turf/screech.dm b/code/modules/spells/aoe_turf/screech.dm index 967cad29a67c..90f6ea2aca1a 100644 --- a/code/modules/spells/aoe_turf/screech.dm +++ b/code/modules/spells/aoe_turf/screech.dm @@ -7,7 +7,7 @@ user_type = USER_TYPE_VAMPIRE charge_type = SP_RECHARGE - charge_max = 5 MINUTES + charge_cooldown_max = 5 MINUTES invocation_type = SP_INV_NONE range = 4 spell_flags = STATALLOWED | NEEDSHUMAN diff --git a/code/modules/spells/aoe_turf/smoke.dm b/code/modules/spells/aoe_turf/smoke.dm index 78bb7151a9ad..ac03f03521a0 100644 --- a/code/modules/spells/aoe_turf/smoke.dm +++ b/code/modules/spells/aoe_turf/smoke.dm @@ -6,7 +6,7 @@ specialization = SSDEFENSIVE //Provides cover school = "conjuration" - charge_max = 120 + charge_cooldown_max = 12 SECONDS spell_flags = 0 invocation = "none" invocation_type = SP_INV_NONE diff --git a/code/modules/spells/aoe_turf/summons.dm b/code/modules/spells/aoe_turf/summons.dm index 53f9fb384438..b7425833e20c 100644 --- a/code/modules/spells/aoe_turf/summons.dm +++ b/code/modules/spells/aoe_turf/summons.dm @@ -16,7 +16,7 @@ user_type = USER_TYPE_OTHER school = "conjuration" - charge_max = 1200 + charge_cooldown_max = 120 SECONDS spell_flags = NEEDSCLOTHES invocation = "NOUK FHUNMM SACP RISSKA" invocation_type = SP_INV_SHOUT @@ -32,7 +32,7 @@ user_type = USER_TYPE_OTHER school = "conjuration" - charge_max = 1200 + charge_cooldown_max = 120 SECONDS spell_flags = 0 invocation = "IA IA" invocation_type = SP_INV_SHOUT @@ -49,7 +49,7 @@ user_type = USER_TYPE_OTHER school = "conjuration" - charge_max = 1200 + charge_cooldown_max = 120 SECONDS spell_flags = NEEDSCLOTHES invocation = "What did the Gingerbread Man put on his bed? A cookie sheet!" invocation_type = SP_INV_SHOUT diff --git a/code/modules/spells/changeling/absorb_dna.dm b/code/modules/spells/changeling/absorb_dna.dm index 556b11181069..1225466bc24d 100644 --- a/code/modules/spells/changeling/absorb_dna.dm +++ b/code/modules/spells/changeling/absorb_dna.dm @@ -6,7 +6,7 @@ spell_flags = NEEDSHUMAN horrorallowed = 0 - charge_max = 5 SECONDS + charge_cooldown_max = 5 SECONDS cooldown_min = 5 SECONDS /spell/changeling/absorbdna/cast_check(skipcharge = 0,mob/user = usr, var/list/targets) diff --git a/code/modules/spells/changeling/changeling_spell.dm b/code/modules/spells/changeling/changeling_spell.dm index 1285d6ec7434..02f6ba087de7 100644 --- a/code/modules/spells/changeling/changeling_spell.dm +++ b/code/modules/spells/changeling/changeling_spell.dm @@ -8,7 +8,7 @@ user_type = USER_TYPE_CHANGELING charge_type = SP_RECHARGE - charge_max = 1 SECONDS + charge_cooldown_max = 1 SECONDS invocation_type = SP_INV_NONE range = 0 diff --git a/code/modules/spells/changeling/rapidregen.dm b/code/modules/spells/changeling/rapidregen.dm index 29adaeac240b..93520c1e06fc 100644 --- a/code/modules/spells/changeling/rapidregen.dm +++ b/code/modules/spells/changeling/rapidregen.dm @@ -6,7 +6,7 @@ spell_flags = NEEDSHUMAN | STATALLOWED - charge_max = 100 SECONDS + charge_cooldown_max = 100 SECONDS cooldown_min = 100 SECONDS chemcost = 40 diff --git a/code/modules/spells/changeling/regenerative_stasis.dm b/code/modules/spells/changeling/regenerative_stasis.dm index 061802b1bf93..8406f6107705 100644 --- a/code/modules/spells/changeling/regenerative_stasis.dm +++ b/code/modules/spells/changeling/regenerative_stasis.dm @@ -5,7 +5,7 @@ hud_state = "regenstasis" spell_flags = NEEDSHUMAN | STATALLOWED - charge_max = 8 MINUTES + charge_cooldown_max = 8 MINUTES cooldown_min = 8 MINUTES horrorallowed = 0 chemcost = 20 diff --git a/code/modules/spells/changeling/split.dm b/code/modules/spells/changeling/split.dm index 6c5a0cd0a6c5..79f24ee1ff62 100644 --- a/code/modules/spells/changeling/split.dm +++ b/code/modules/spells/changeling/split.dm @@ -3,7 +3,7 @@ desc = "Split your body into two lifeforms." abbreviation = "SP" hud_state = "split" - charge_max = 300 + charge_cooldown_max = 30 SECONDS cooldown_min = 30 SECONDS still_recharging_msg = "We are not ready to do that!" chemcost = 40 diff --git a/code/modules/spells/construct_spells.dm b/code/modules/spells/construct_spells.dm index 9c59e0cbfd12..dc172da0236a 100644 --- a/code/modules/spells/construct_spells.dm +++ b/code/modules/spells/construct_spells.dm @@ -19,7 +19,7 @@ user_type = USER_TYPE_CULT hud_state = "const_juggdash" override_base = "cult" - charge_max = 150 + charge_cooldown_max = 15 SECONDS spell_flags = 0 range = 4 @@ -47,7 +47,7 @@ user_type = USER_TYPE_CULT selection_type = "range" - charge_max = 75 + charge_cooldown_max = 7.5 SECONDS spell_flags = Z2NOCAST | CONSTRUCT_CHECK | WAIT_FOR_CLICK invocation = "none" invocation_type = SP_INV_NONE diff --git a/code/modules/spells/general/area_teleport.dm b/code/modules/spells/general/area_teleport.dm index ba4b6c7b683a..c5596c62cf30 100644 --- a/code/modules/spells/general/area_teleport.dm +++ b/code/modules/spells/general/area_teleport.dm @@ -11,7 +11,7 @@ invocation = "SCYAR NILA" invocation_type = SP_INV_SHOUT - charge_max = 45 SECONDS + charge_cooldown_max = 45 SECONDS cooldown_min = 5 SECONDS cooldown_reduc = 10 SECONDS diff --git a/code/modules/spells/general/cloak.dm b/code/modules/spells/general/cloak.dm index a7150832dfe0..211ffb3051a1 100644 --- a/code/modules/spells/general/cloak.dm +++ b/code/modules/spells/general/cloak.dm @@ -7,7 +7,7 @@ user_type = USER_TYPE_VAMPIRE charge_type = SP_RECHARGE - charge_max = 1 SECONDS + charge_cooldown_max = 1 SECONDS invocation_type = SP_INV_NONE range = 0 spell_flags = STATALLOWED | NEEDSHUMAN diff --git a/code/modules/spells/general/lightning.dm b/code/modules/spells/general/lightning.dm index 4b6a0cfc720e..555f10d20540 100644 --- a/code/modules/spells/general/lightning.dm +++ b/code/modules/spells/general/lightning.dm @@ -4,7 +4,7 @@ desc = "Strike an enemy with a bolt of lightning." user_type = USER_TYPE_WIZARD specialization = SSOFFENSIVE - charge_max = 100 + charge_cooldown_max = 10 SECONDS cooldown_min = 4 SECONDS cooldown_reduc = 3 SECONDS @@ -45,11 +45,11 @@ if(charge_type == SP_RECHARGE) if(cooldown_reduc) - charge_max = max(cooldown_min, charge_max - cooldown_reduc) + charge_cooldown_max = max(cooldown_min, charge_cooldown_max - cooldown_reduc) else - charge_max = round( max(cooldown_min, initial(charge_max) * ((level_max[SP_SPEED] - spell_levels[SP_SPEED]) / level_max[SP_SPEED] ) ) ) //the fraction of the way you are to max speed levels is the fraction you lose - if(charge_max < charge_counter) - charge_counter = charge_max + charge_cooldown_max = round( max(cooldown_min, initial(charge_cooldown_max) * ((level_max[SP_SPEED] - spell_levels[SP_SPEED]) / level_max[SP_SPEED] ) ) ) //the fraction of the way you are to max speed levels is the fraction you lose + if(charge_cooldown_max < charge_counter) + charge_counter = charge_cooldown_max var/temp = "You have improved [name]" if(spell_levels[SP_SPEED] >= level_max[SP_SPEED]) @@ -95,7 +95,7 @@ else //remove overlay connected_button.name = name - charge_counter = charge_max + charge_counter = charge_cooldown_max user.overlays -= chargeoverlay if((zapzap != multicast) && (zapzap > 0)) //partial cast take_charge(holder, 0) diff --git a/code/modules/spells/general/reflect_pain.dm b/code/modules/spells/general/reflect_pain.dm index bb410e58a8ac..c0809791e316 100644 --- a/code/modules/spells/general/reflect_pain.dm +++ b/code/modules/spells/general/reflect_pain.dm @@ -6,7 +6,7 @@ specialization = SSDEFENSIVE school = "necromancy" - charge_max = 90 SECONDS + charge_cooldown_max = 90 SECONDS spell_flags = NEEDSCLOTHES invocation = "KON TEAH STOV" diff --git a/code/modules/spells/general/rejuvenate.dm b/code/modules/spells/general/rejuvenate.dm index d46c1f8aaa26..3a653872733a 100644 --- a/code/modules/spells/general/rejuvenate.dm +++ b/code/modules/spells/general/rejuvenate.dm @@ -7,7 +7,7 @@ user_type = USER_TYPE_VAMPIRE charge_type = SP_RECHARGE - charge_max = 3 MINUTES + charge_cooldown_max = 3 MINUTES invocation_type = SP_INV_NONE range = 0 spell_flags = STATALLOWED | NEEDSHUMAN diff --git a/code/modules/spells/general/ring_of_fire.dm b/code/modules/spells/general/ring_of_fire.dm index 18f12c64daa6..beecba26be95 100644 --- a/code/modules/spells/general/ring_of_fire.dm +++ b/code/modules/spells/general/ring_of_fire.dm @@ -4,7 +4,7 @@ user_type = USER_TYPE_WIZARD specialization = SSOFFENSIVE school = "conjuration" - charge_max = 300 + charge_cooldown_max = 30 SECONDS cooldown_min = 10 SECONDS spell_levels = list(SP_SPEED = 0, SP_MOVE = 0, SP_POWER = 0) diff --git a/code/modules/spells/general/rune_write.dm b/code/modules/spells/general/rune_write.dm index a4c4fda31a15..3e2cd0426cf9 100644 --- a/code/modules/spells/general/rune_write.dm +++ b/code/modules/spells/general/rune_write.dm @@ -4,7 +4,7 @@ user_type = USER_TYPE_CULT school = "evocation" - charge_max = 100 + charge_cooldown_max = 10 SECONDS charge_type = SP_RECHARGE invocation_type = SP_INV_NONE diff --git a/code/modules/spells/general/shapeshift.dm b/code/modules/spells/general/shapeshift.dm index 8e3b3187dac5..8d3641e48239 100644 --- a/code/modules/spells/general/shapeshift.dm +++ b/code/modules/spells/general/shapeshift.dm @@ -6,7 +6,7 @@ school = "vampire" user_type = USER_TYPE_VAMPIRE - charge_max = 200 + charge_cooldown_max = 20 SECONDS cooldown_min = 20 SECONDS spell_flags = NEEDSHUMAN diff --git a/code/modules/spells/general/silentbite.dm b/code/modules/spells/general/silentbite.dm index 3943ede01d8b..1539be44a676 100644 --- a/code/modules/spells/general/silentbite.dm +++ b/code/modules/spells/general/silentbite.dm @@ -7,7 +7,7 @@ user_type = USER_TYPE_VAMPIRE charge_type = SP_RECHARGE - charge_max = 1 SECONDS + charge_cooldown_max = 1 SECONDS invocation_type = SP_INV_NONE range = 0 spell_flags = STATALLOWED | NEEDSHUMAN diff --git a/code/modules/spells/general/undeath.dm b/code/modules/spells/general/undeath.dm index 80bfe4834d43..d25d09ca2890 100644 --- a/code/modules/spells/general/undeath.dm +++ b/code/modules/spells/general/undeath.dm @@ -7,7 +7,7 @@ user_type = USER_TYPE_VAMPIRE charge_type = SP_RECHARGE - charge_max = 1 SECONDS + charge_cooldown_max = 1 SECONDS invocation_type = SP_INV_NONE range = 0 spell_flags = STATALLOWED | NEEDSHUMAN diff --git a/code/modules/spells/passive/passive.dm b/code/modules/spells/passive/passive.dm index aa0de0ebdf86..c7343648db48 100644 --- a/code/modules/spells/passive/passive.dm +++ b/code/modules/spells/passive/passive.dm @@ -4,7 +4,7 @@ /spell/passive charge_type = SP_PASSIVE level_max = list(SP_TOTAL = 0) //Passive spells have no use. For the love of God, do NOT give it SP_SPEED, it will do nothing - charge_max = 0 //Redundancy + charge_cooldown_max = 0 //Redundancy /spell/passive/process() return //Does nothing, add processes to children instead \ No newline at end of file diff --git a/code/modules/spells/spell_code.dm b/code/modules/spells/spell_code.dm index b964bebaa003..11308ac56e79 100644 --- a/code/modules/spells/spell_code.dm +++ b/code/modules/spells/spell_code.dm @@ -17,14 +17,14 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now /// Used for what list they belong to in the spellbook. SSOFFENSIVE, SSDEFENSIVE, SSUTILITY var/specialization - ///can be recharge or charges, see charge_max and charge_counter descriptions; can also be based on the holder's vars now, use "holder_var" for that; can ALSO be made to gradually drain the charge with SP_GRADUAL + ///can be recharge or charges, see charge_cooldown_max and charge_counter descriptions; can also be based on the holder's vars now, use "holder_var" for that; can ALSO be made to gradually drain the charge with SP_GRADUAL ///The following are allowed: SP_RECHARGE (Recharges), SP_CHARGES (Limited uses), SP_GRADUAL (Gradually lose charges), SP_PASSIVE (Does not cast) var/charge_type = SP_RECHARGE /// Used to calculate cooldown reduction - var/initial_charge_max = 10 SECONDS + var/initial_charge_cooldown_max = 10 SECONDS /// recharge time in deciseconds if charge_type = SP_RECHARGE or starting charges if charge_type = SP_CHARGES - var/charge_max = 10 SECONDS + var/charge_cooldown_max = 10 SECONDS /// can only cast spells if it equals recharge, ++ each decisecond if charge_type = SP_RECHARGE or -- each cast if charge_type = SP_CHARGES var/charge_counter = 0 /// if set, the minimum charge_counter necessary to cast SP_GRADUAL spells @@ -100,7 +100,7 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now var/list/spell_levels = list(SP_SPEED = 0, SP_POWER = 0) /// maximum possible levels in each category. Total does cover both. var/list/level_max = list(SP_TOTAL = 4, SP_SPEED = 4, SP_POWER = 0) - /// If set, defines how much charge_max drops by every speed upgrade + /// If set, defines how much charge_cooldown_max drops by every speed upgrade var/cooldown_reduc = 0 /// For channelled spells (cast_delay > 0), reduces the delay before the spell is active. var/delay_reduc = 0 @@ -171,8 +171,8 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now ..() //still_recharging_msg = "[name] is still recharging." - charge_counter = charge_max - initial_charge_max = charge_max //Let's not add charge_max_initial to roughly 80 (at the time of this comment) spells + charge_counter = charge_cooldown_max + initial_charge_cooldown_max = charge_cooldown_max //Let's not add charge_cooldown_max_initial to roughly 80 (at the time of this comment) spells /// Private: internal sanity check for setting holder /spell/proc/set_holder(var/new_holder) @@ -182,7 +182,7 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now /// Private: master proc for channelled spells, recharging cooldown, etc. /spell/proc/process() - spawn while(charge_counter < charge_max) + spawn while(charge_counter < charge_cooldown_max) if(holder && !holder.timestopped) if(gradual_casting) if(charge_type & SP_HOLDVAR) //If the spell is both SP_GRADUAL and SP_HOLDVAR, decrement the holder var instead. @@ -200,7 +200,7 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now charge_counter-- else charge_counter++ - if(charge_counter >= charge_max) + if(charge_counter >= charge_cooldown_max) return sleep(1) return @@ -541,7 +541,7 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now if(!skipcharge) if(charge_type & SP_RECHARGE) - if(charge_counter < charge_max) + if(charge_counter < charge_cooldown_max) to_chat(user, still_recharging_msg) return 0 if(charge_type & SP_CHARGES) @@ -648,11 +648,11 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now if(charge_type == SP_RECHARGE) if(cooldown_reduc) - charge_max = max(cooldown_min, charge_max - cooldown_reduc) + charge_cooldown_max = max(cooldown_min, charge_cooldown_max - cooldown_reduc) else - charge_max = round(initial_charge_max - spell_levels[SP_SPEED] * (initial_charge_max - cooldown_min)/ level_max[SP_SPEED]) - if(charge_max < charge_counter) - charge_counter = charge_max + charge_cooldown_max = round(initial_charge_cooldown_max - spell_levels[SP_SPEED] * (initial_charge_cooldown_max - cooldown_min)/ level_max[SP_SPEED]) + if(charge_cooldown_max < charge_counter) + charge_counter = charge_cooldown_max var/temp = "" name = initial(name) @@ -748,9 +748,9 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now return "The spell can't be made any quicker than this!" var/formula if(cooldown_reduc) - formula = min(charge_max - cooldown_min, cooldown_reduc) + formula = min(charge_cooldown_max - cooldown_min, cooldown_reduc) else - formula = round((initial_charge_max - cooldown_min)/level_max[SP_SPEED], 1) + formula = round((initial_charge_cooldown_max - cooldown_min)/level_max[SP_SPEED], 1) return "Reduce this spell's cooldown by [formula/10] seconds." if(SP_POWER) if(spell_levels[SP_POWER] >= level_max[SP_POWER]) @@ -761,7 +761,7 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now /spell/proc/generate_tooltip(var/previous_data = "") var/dat = previous_data //In case you want to put some text at the top instead of bottom if(charge_type & SP_RECHARGE) - dat += "
Cooldown: [charge_max/10] second\s" + dat += "
Cooldown: [charge_cooldown_max/10] second\s" if(charge_type & SP_CHARGES) dat += "
Has [charge_counter] charge\s left" if(charge_type & SP_HOLDVAR) diff --git a/code/modules/spells/spider_spells.dm b/code/modules/spells/spider_spells.dm index 2205def9713c..e752fe671c3f 100644 --- a/code/modules/spells/spider_spells.dm +++ b/code/modules/spells/spider_spells.dm @@ -7,7 +7,7 @@ user_type = USER_TYPE_SPIDER hud_state = "spiderling_evolution" override_base = "spider" - charge_max = 0 + charge_cooldown_max = 0 spell_flags = 0 range = 0 @@ -25,7 +25,7 @@ desc = "Weave a spider web over the floor, potentially blocking non-spiders walking through them." user_type = USER_TYPE_SPIDER - charge_max = 0 + charge_cooldown_max = 0 spell_flags = 0 invocation_type = SP_INV_NONE summon_type = list(/obj/effect/spider/stickyweb) @@ -49,7 +49,7 @@ desc = "Wrap creatures and items on your tile inside a cocoon for later. You will also take a bite out of the creatures trapped this way." user_type = USER_TYPE_SPIDER - charge_max = 0 + charge_cooldown_max = 0 spell_flags = 0 range = 0 @@ -79,7 +79,7 @@ desc = "Lay some eggs that will give birth to more spiderlings after a few minutes." user_type = USER_TYPE_SPIDER - charge_max = 0 + charge_cooldown_max = 0 spell_flags = 0 range = 0 @@ -100,7 +100,7 @@ user_type = USER_TYPE_SPIDER hud_state = "spider_queen" override_base = "spider" - charge_max = 0 + charge_cooldown_max = 0 spell_flags = 0 range = 0 diff --git a/code/modules/spells/targeted/absorb.dm b/code/modules/spells/targeted/absorb.dm index 6b31a868112f..b1d0ea90cc95 100644 --- a/code/modules/spells/targeted/absorb.dm +++ b/code/modules/spells/targeted/absorb.dm @@ -5,7 +5,7 @@ user_type = USER_TYPE_SPELLBOOK school = "evocation" - charge_max = 100 + charge_cooldown_max = 10 SECONDS spell_flags = IS_HARMFUL invocation_type = SP_INV_SHOUT range = 0 diff --git a/code/modules/spells/targeted/arcanetamper.dm b/code/modules/spells/targeted/arcanetamper.dm index 401af9420694..2f9f9e7e58c3 100644 --- a/code/modules/spells/targeted/arcanetamper.dm +++ b/code/modules/spells/targeted/arcanetamper.dm @@ -10,7 +10,7 @@ user_type = USER_TYPE_WIZARD specialization = SSUTILITY school = "transmutation" - charge_max = 150 + charge_cooldown_max = 15 SECONDS spell_flags = NEEDSCLOTHES // now it's balanced invocation = "E'MAGI!" invocation_type = SP_INV_NONE // we say it in the arcane_acts diff --git a/code/modules/spells/targeted/balefulmutate.dm b/code/modules/spells/targeted/balefulmutate.dm index f038cc739215..9cb2fded1112 100644 --- a/code/modules/spells/targeted/balefulmutate.dm +++ b/code/modules/spells/targeted/balefulmutate.dm @@ -3,7 +3,7 @@ desc = "A spell that gives its victm random limbs from different species." user_type = USER_TYPE_SPELLBOOK school = "transmutation" - charge_max = 600 + charge_cooldown_max = 60 SECONDS invocation = "MAHNSTUR MACH!" invocation_type = SP_INV_SHOUT range = 1 diff --git a/code/modules/spells/targeted/buttbots_revenge.dm b/code/modules/spells/targeted/buttbots_revenge.dm index 34f0aa583643..d430cfe4b877 100644 --- a/code/modules/spells/targeted/buttbots_revenge.dm +++ b/code/modules/spells/targeted/buttbots_revenge.dm @@ -6,7 +6,7 @@ abbreviation = "AN" school = "evocation" - charge_max = 500 + charge_cooldown_max = 50 SECONDS spell_flags = NEEDSCLOTHES | WAIT_FOR_CLICK | IS_HARMFUL invocation = "ARSE NATH" invocation_type = SP_INV_SHOUT diff --git a/code/modules/spells/targeted/card.dm b/code/modules/spells/targeted/card.dm index eb97d7d39d67..3c16ded348da 100644 --- a/code/modules/spells/targeted/card.dm +++ b/code/modules/spells/targeted/card.dm @@ -5,7 +5,7 @@ user_type = USER_TYPE_WIZARD // Now it's a meme available for wizards! //It's quite the exquisite meme specialization = SSUTILITY school = "transmutation" - charge_max = 100 //10 seconds + charge_cooldown_max = 10 SECONDS //10 seconds spell_flags = WAIT_FOR_CLICK invocation_type = SP_INV_SHOUT max_targets = 1 diff --git a/code/modules/spells/targeted/disease.dm b/code/modules/spells/targeted/disease.dm index f855e4e87935..ba18744783cb 100644 --- a/code/modules/spells/targeted/disease.dm +++ b/code/modules/spells/targeted/disease.dm @@ -7,7 +7,7 @@ user_type = USER_TYPE_VAMPIRE charge_type = SP_RECHARGE - charge_max = 3 MINUTES + charge_cooldown_max = 3 MINUTES invocation_type = SP_INV_NONE range = 1 max_targets = 1 diff --git a/code/modules/spells/targeted/disintegrate.dm b/code/modules/spells/targeted/disintegrate.dm index 90297cdf9706..8d3d2d654d74 100644 --- a/code/modules/spells/targeted/disintegrate.dm +++ b/code/modules/spells/targeted/disintegrate.dm @@ -5,7 +5,7 @@ user_type = USER_TYPE_SPELLBOOK school = "evocation" - charge_max = 600 + charge_cooldown_max = 60 SECONDS spell_flags = NEEDSCLOTHES | IS_HARMFUL invocation = "EI NATH" invocation_type = SP_INV_SHOUT diff --git a/code/modules/spells/targeted/disorient.dm b/code/modules/spells/targeted/disorient.dm index da6338f768dc..203af050f9c7 100644 --- a/code/modules/spells/targeted/disorient.dm +++ b/code/modules/spells/targeted/disorient.dm @@ -6,7 +6,7 @@ specialization = SSOFFENSIVE school = "transmutation" - charge_max = 300 + charge_cooldown_max = 30 SECONDS invocation = "DII ODA BAJI" invocation_type = SP_INV_WHISPER message = "You suddenly feel completely overwhelmed!" diff --git a/code/modules/spells/targeted/enthrall.dm b/code/modules/spells/targeted/enthrall.dm index 696a721985c3..209484f99029 100644 --- a/code/modules/spells/targeted/enthrall.dm +++ b/code/modules/spells/targeted/enthrall.dm @@ -7,7 +7,7 @@ user_type = USER_TYPE_VAMPIRE charge_type = SP_RECHARGE - charge_max = 3 MINUTES + charge_cooldown_max = 3 MINUTES invocation_type = SP_INV_NONE range = 1 max_targets = 1 diff --git a/code/modules/spells/targeted/equip/cape.dm b/code/modules/spells/targeted/equip/cape.dm index 9c5b66a4ba25..09b07811cb91 100644 --- a/code/modules/spells/targeted/equip/cape.dm +++ b/code/modules/spells/targeted/equip/cape.dm @@ -6,7 +6,7 @@ abbreviation = "SC" user_type = USER_TYPE_VAMPIRE - charge_max = 300 + charge_cooldown_max = 30 SECONDS invocation_type = SP_INV_NONE range = SELFCAST spell_flags = INCLUDEUSER @@ -14,7 +14,7 @@ delete_old = 0 //Players shouldn't lose their hardsuits because they decided to summon some cape. cooldown_min = 5 MINUTES - charge_max = 5 MINUTES + charge_cooldown_max = 5 MINUTES duration = 0 override_base = "vamp" diff --git a/code/modules/spells/targeted/equip/clowncurse.dm b/code/modules/spells/targeted/equip/clowncurse.dm index d6f17891a542..241695821621 100644 --- a/code/modules/spells/targeted/equip/clowncurse.dm +++ b/code/modules/spells/targeted/equip/clowncurse.dm @@ -6,7 +6,7 @@ specialization = SSOFFENSIVE school = "evocation" - charge_max = 300 + charge_cooldown_max = 30 SECONDS invocation = "L' C'MMEDIA E F'NITA!" invocation_type = SP_INV_SHOUT range = 1 diff --git a/code/modules/spells/targeted/equip/frenchcurse.dm b/code/modules/spells/targeted/equip/frenchcurse.dm index b23fb61a54cd..3cd3935680fe 100644 --- a/code/modules/spells/targeted/equip/frenchcurse.dm +++ b/code/modules/spells/targeted/equip/frenchcurse.dm @@ -6,7 +6,7 @@ specialization = SSOFFENSIVE school = "evocation" - charge_max = 300 + charge_cooldown_max = 30 SECONDS invocation = "FU'K Y'U D'NY" invocation_type = SP_INV_SHOUT range = 1 diff --git a/code/modules/spells/targeted/equip/horsemask.dm b/code/modules/spells/targeted/equip/horsemask.dm index 6f1d98b4b441..353917563488 100644 --- a/code/modules/spells/targeted/equip/horsemask.dm +++ b/code/modules/spells/targeted/equip/horsemask.dm @@ -7,7 +7,7 @@ school = "transmutation" charge_type = SP_RECHARGE - charge_max = 150 + charge_cooldown_max = 15 SECONDS charge_counter = 0 invocation = "KN'A FTAGHU, PUCK 'BTHNK!" invocation_type = SP_INV_SHOUT diff --git a/code/modules/spells/targeted/equip/robesummon.dm b/code/modules/spells/targeted/equip/robesummon.dm index 1bc71e73a148..b501e3659839 100644 --- a/code/modules/spells/targeted/equip/robesummon.dm +++ b/code/modules/spells/targeted/equip/robesummon.dm @@ -11,7 +11,7 @@ specialization = SSUTILITY school = "evocation" - charge_max = 300 + charge_cooldown_max = 30 SECONDS level_max = list(SP_TOTAL = 5, SP_SPEED = 4, SP_POWER = 1) invocation = "I PUT ON MY ROBE AND WIZARD HAT!" diff --git a/code/modules/spells/targeted/ethereal_jaunt.dm b/code/modules/spells/targeted/ethereal_jaunt.dm index 7dfb21e29eaf..62ef9c061062 100644 --- a/code/modules/spells/targeted/ethereal_jaunt.dm +++ b/code/modules/spells/targeted/ethereal_jaunt.dm @@ -6,7 +6,7 @@ specialization = SSUTILITY school = "transmutation" - charge_max = 300 + charge_cooldown_max = 30 SECONDS spell_flags = Z2NOCAST | NEEDSCLOTHES | INCLUDEUSER invocation_type = SP_INV_NONE range = SELFCAST @@ -138,7 +138,7 @@ max_targets = 0 range = 3 - charge_max = 600 //Double cooldown, makes it less spammable + charge_cooldown_max = 60 SECONDS //Double cooldown, makes it less spammable duration = 10 SECONDS //Double jaunt time, makes it easier to cooperate /spell/targeted/ethereal_jaunt/shift @@ -146,7 +146,7 @@ desc = "This spell allows you to pass through walls." user_type = USER_TYPE_CULT - charge_max = 200 + charge_cooldown_max = 20 SECONDS spell_flags = Z2NOCAST | INCLUDEUSER | CONSTRUCT_CHECK invocation_type = SP_INV_NONE range = SELFCAST @@ -160,7 +160,7 @@ /spell/targeted/ethereal_jaunt/shift/alt desc = "Vibrate through the veil for about 5 seconds, letting you move around freely through any obstacle." - charge_max = 150 + charge_cooldown_max = 15 SECONDS hud_state = "const_phase" enteranim = "wraith2_phaseenter" exitanim = "wraith2_phaseexit" @@ -173,7 +173,7 @@ spell_flags = Z2NOCAST | INCLUDEUSER - charge_max = 1 MINUTES + charge_cooldown_max = 1 MINUTES invocation_type = SP_INV_NONE range = SELFCAST duration = 5 SECONDS diff --git a/code/modules/spells/targeted/feint.dm b/code/modules/spells/targeted/feint.dm index eaca77189879..fb2c0fe400c5 100644 --- a/code/modules/spells/targeted/feint.dm +++ b/code/modules/spells/targeted/feint.dm @@ -6,7 +6,7 @@ specialization = SSOFFENSIVE school = "transmutation" - charge_max = 300 + charge_cooldown_max = 30 SECONDS spell_flags = NEEDSCLOTHES invocation_type = SP_INV_NONE cooldown_min = 100 //50 deciseconds reduction per rank diff --git a/code/modules/spells/targeted/fist.dm b/code/modules/spells/targeted/fist.dm index eaffaf5d844c..38a7ae020140 100644 --- a/code/modules/spells/targeted/fist.dm +++ b/code/modules/spells/targeted/fist.dm @@ -6,7 +6,7 @@ specialization = SSOFFENSIVE level_max = list(SP_TOTAL = 3, SP_SPEED = 3) - charge_max = 50 + charge_cooldown_max = 5 SECONDS cooldown_min = 1 SECONDS invocation = "I CAST FIST" invocation_type = SP_INV_SHOUT diff --git a/code/modules/spells/targeted/flesh_to_coal.dm b/code/modules/spells/targeted/flesh_to_coal.dm index 7cdf33112c6a..c66e0846de43 100644 --- a/code/modules/spells/targeted/flesh_to_coal.dm +++ b/code/modules/spells/targeted/flesh_to_coal.dm @@ -28,7 +28,7 @@ desc = "This spell turns a single person into a coal golem slaved to the caster." school = "transmutation" - charge_max = 600 + charge_cooldown_max = 60 SECONDS spell_flags = NEEDSCLOTHES | SELECTABLE range = 3 max_targets = 1 diff --git a/code/modules/spells/targeted/flesh_to_stone.dm b/code/modules/spells/targeted/flesh_to_stone.dm index 9cdc3456d8f6..19ee0fe8fee2 100644 --- a/code/modules/spells/targeted/flesh_to_stone.dm +++ b/code/modules/spells/targeted/flesh_to_stone.dm @@ -6,7 +6,7 @@ specialization = SSOFFENSIVE school = "transmutation" - charge_max = 600 + charge_cooldown_max = 60 SECONDS spell_flags = NEEDSCLOTHES | WAIT_FOR_CLICK | IS_HARMFUL range = 1 max_targets = 1 diff --git a/code/modules/spells/targeted/genetic.dm b/code/modules/spells/targeted/genetic.dm index d7d1211ccb82..56abff584e40 100644 --- a/code/modules/spells/targeted/genetic.dm +++ b/code/modules/spells/targeted/genetic.dm @@ -42,7 +42,7 @@ code\game\\dna\genes\goon_powers.dm disabilities = 1 duration = 30 SECONDS - charge_max = 300 + charge_cooldown_max = 30 SECONDS spell_flags = WAIT_FOR_CLICK | IS_HARMFUL invocation = "STI KALY" @@ -69,7 +69,7 @@ code\game\\dna\genes\goon_powers.dm specialization = SSUTILITY school = "transmutation" - charge_max = 400 + charge_cooldown_max = 40 SECONDS spell_flags = NEEDSCLOTHES | INCLUDEUSER invocation = "BIRUZ BENNAR" invocation_type = SP_INV_SHOUT diff --git a/code/modules/spells/targeted/grease.dm b/code/modules/spells/targeted/grease.dm index 89123bdf1f86..5cb2a3f9ec1b 100644 --- a/code/modules/spells/targeted/grease.dm +++ b/code/modules/spells/targeted/grease.dm @@ -6,7 +6,7 @@ specialization = SSOFFENSIVE school = "evocation" - charge_max = 300 + charge_cooldown_max = 30 SECONDS invocation = "GR'ESE LIT'NING" invocation_type = SP_INV_SHOUT range = 0 diff --git a/code/modules/spells/targeted/harvest.dm b/code/modules/spells/targeted/harvest.dm index 7fe4b239fb11..fd2ade128ea4 100644 --- a/code/modules/spells/targeted/harvest.dm +++ b/code/modules/spells/targeted/harvest.dm @@ -4,7 +4,7 @@ user_type = USER_TYPE_CULT school = "transmutation" - charge_max = 200 + charge_cooldown_max = 20 SECONDS spell_flags = Z2NOCAST | CONSTRUCT_CHECK | INCLUDEUSER invocation = "" invocation_type = SP_INV_NONE diff --git a/code/modules/spells/targeted/heal.dm b/code/modules/spells/targeted/heal.dm index 2bbbb1733139..a1b357a0e6e8 100644 --- a/code/modules/spells/targeted/heal.dm +++ b/code/modules/spells/targeted/heal.dm @@ -7,7 +7,7 @@ spell_levels = list(SP_SPEED = 0, SP_POWER = 0, SP_RANGE = 0) school = "transmutation" - charge_max = 300 + charge_cooldown_max = 30 SECONDS cooldown_reduc = 7.5 SECONDS cooldown_min = 15 SECONDS invocation = "DI TIUB SEEL IM" diff --git a/code/modules/spells/targeted/hypnotise.dm b/code/modules/spells/targeted/hypnotise.dm index 05bd02b890d7..927376ad075d 100644 --- a/code/modules/spells/targeted/hypnotise.dm +++ b/code/modules/spells/targeted/hypnotise.dm @@ -7,7 +7,7 @@ user_type = USER_TYPE_VAMPIRE charge_type = SP_RECHARGE - charge_max = 3 MINUTES + charge_cooldown_max = 3 MINUTES invocation_type = SP_INV_NONE range = 1 max_targets = 1 diff --git a/code/modules/spells/targeted/ice_barrage.dm b/code/modules/spells/targeted/ice_barrage.dm index c04ac3312e25..1179316e7d2e 100644 --- a/code/modules/spells/targeted/ice_barrage.dm +++ b/code/modules/spells/targeted/ice_barrage.dm @@ -4,7 +4,7 @@ user_type = USER_TYPE_ARTIFACT school = "abjuration" - charge_max = 300 + charge_cooldown_max = 30 SECONDS spell_flags = NEEDSCLOTHES | WAIT_FOR_CLICK | IS_HARMFUL range = 7 max_targets = 1 diff --git a/code/modules/spells/targeted/invoke_emotion.dm b/code/modules/spells/targeted/invoke_emotion.dm index efdb54ce8b0e..9f00ba920c6a 100644 --- a/code/modules/spells/targeted/invoke_emotion.dm +++ b/code/modules/spells/targeted/invoke_emotion.dm @@ -12,7 +12,7 @@ var/global/list/invoked_emotions = list() spell_flags = WAIT_FOR_CLICK | SELECTABLE | INCLUDEUSER price = 0.25 * SP_BASE_PRICE range = 9 - charge_max = 150 + charge_cooldown_max = 15 SECONDS cooldown_min = 1 SECONDS valid_targets = list(/mob/living/carbon) spell_levels = list(SP_SPEED = 0, SP_POWER = 0, SP_MOVE = 0) diff --git a/code/modules/spells/targeted/mind_transfer.dm b/code/modules/spells/targeted/mind_transfer.dm index c9fd623d64c0..db716e6bf2e6 100644 --- a/code/modules/spells/targeted/mind_transfer.dm +++ b/code/modules/spells/targeted/mind_transfer.dm @@ -6,7 +6,7 @@ specialization = SSUTILITY school = "transmutation" - charge_max = 600 + charge_cooldown_max = 60 SECONDS spell_flags = 0 invocation = "GIN'YU CAPAN" invocation_type = SP_INV_WHISPER diff --git a/code/modules/spells/targeted/pacify.dm b/code/modules/spells/targeted/pacify.dm index 722bc7779e4f..19ad34329fcb 100644 --- a/code/modules/spells/targeted/pacify.dm +++ b/code/modules/spells/targeted/pacify.dm @@ -4,7 +4,7 @@ user_type = USER_TYPE_WIZARD specialization = SSDEFENSIVE - charge_max = 45 SECONDS + charge_cooldown_max = 45 SECONDS cooldown_reduc = 15 SECONDS cooldown_min = 15 SECONDS diff --git a/code/modules/spells/targeted/parrotmorph.dm b/code/modules/spells/targeted/parrotmorph.dm index d722d73306f2..b626cd55eb3e 100644 --- a/code/modules/spells/targeted/parrotmorph.dm +++ b/code/modules/spells/targeted/parrotmorph.dm @@ -6,7 +6,7 @@ school = "evocation" charge_type = SP_RECHARGE - charge_max = 600 + charge_cooldown_max = 60 SECONDS invocation = "'P'Y W'NT A CRAC'K'R!" invocation_type = SP_INV_SHOUT range = 7 diff --git a/code/modules/spells/targeted/projectile/fireball.dm b/code/modules/spells/targeted/projectile/fireball.dm index ad5847492fcf..9982621adb80 100644 --- a/code/modules/spells/targeted/projectile/fireball.dm +++ b/code/modules/spells/targeted/projectile/fireball.dm @@ -8,7 +8,7 @@ proj_type = /obj/item/projectile/spell_projectile/fireball school = "evocation" - charge_max = 100 + charge_cooldown_max = 10 SECONDS spell_flags = IS_HARMFUL invocation = "ONI SOMA" invocation_type = SP_INV_SHOUT diff --git a/code/modules/spells/targeted/projectile/firebreath.dm b/code/modules/spells/targeted/projectile/firebreath.dm index d6fdc399875e..e42fa60e7203 100644 --- a/code/modules/spells/targeted/projectile/firebreath.dm +++ b/code/modules/spells/targeted/projectile/firebreath.dm @@ -9,7 +9,7 @@ school = "evocation" price = SP_BASE_PRICE / 2 - charge_max = 100 + charge_cooldown_max = 10 SECONDS spell_flags = WAIT_FOR_CLICK | IS_HARMFUL invocation = "SPY'SI MEAT'A'BAL" invocation_type = SP_INV_SHOUT diff --git a/code/modules/spells/targeted/projectile/magic_missile.dm b/code/modules/spells/targeted/projectile/magic_missile.dm index 864e1a9d812d..45db2cdbc117 100644 --- a/code/modules/spells/targeted/projectile/magic_missile.dm +++ b/code/modules/spells/targeted/projectile/magic_missile.dm @@ -6,7 +6,7 @@ specialization = SSOFFENSIVE school = "evocation" - charge_max = 150 + charge_cooldown_max = 15 SECONDS spell_flags = NEEDSCLOTHES | IS_HARMFUL invocation = "FORTI GY AMA" invocation_type = SP_INV_SHOUT diff --git a/code/modules/spells/targeted/projectile/pie_throw.dm b/code/modules/spells/targeted/projectile/pie_throw.dm index 0e148406ad95..1f4f631e7cd0 100644 --- a/code/modules/spells/targeted/projectile/pie_throw.dm +++ b/code/modules/spells/targeted/projectile/pie_throw.dm @@ -6,7 +6,7 @@ specialization = SSOFFENSIVE school = "evocation" - charge_max = 100 + charge_cooldown_max = 10 SECONDS invocation = "FLA'K PA'STRY" invocation_type = SP_INV_SHOUT range = 20 diff --git a/code/modules/spells/targeted/pumpkinhead.dm b/code/modules/spells/targeted/pumpkinhead.dm index 094748e4ffbb..421b3e67659a 100644 --- a/code/modules/spells/targeted/pumpkinhead.dm +++ b/code/modules/spells/targeted/pumpkinhead.dm @@ -6,7 +6,7 @@ specialization = SSOFFENSIVE school = "transmutation" - charge_max = 600 + charge_cooldown_max = 60 SECONDS spell_flags = NEEDSCLOTHES | WAIT_FOR_CLICK | IS_HARMFUL range = 1 max_targets = 1 diff --git a/code/modules/spells/targeted/punch.dm b/code/modules/spells/targeted/punch.dm index 1d11f4b02f26..ae78b03c003f 100644 --- a/code/modules/spells/targeted/punch.dm +++ b/code/modules/spells/targeted/punch.dm @@ -5,7 +5,7 @@ level_max = list(SP_TOTAL = 3, SP_SPEED = 2, SP_POWER = 1) user_type = USER_TYPE_WIZARD specialization = SSOFFENSIVE - charge_max = 90 + charge_cooldown_max = 9 SECONDS invocation = "ROKETTOPANCHI" message = "You are punched with great force!" spell_flags = IS_HARMFUL | WAIT_FOR_CLICK | NEEDSCLOTHES @@ -145,7 +145,7 @@ desc = "This spell empowers your next close-and-personal unarmed attack to launch the enemy with great force" abbreviation = "RP" user_type = USER_TYPE_GYMRAT - charge_max = 300 // Much longer cooldown than the wizard spell + charge_cooldown_max = 30 SECONDS // Much longer cooldown than the wizard spell spell_flags = IS_HARMFUL | WAIT_FOR_CLICK invocation_type = SP_INV_NONE valid_targets = list(/mob/living) // Unlike the other version, this one can't target and destroy mechs diff --git a/code/modules/spells/targeted/push.dm b/code/modules/spells/targeted/push.dm index bfe85f1f3394..d74261ffd4ee 100644 --- a/code/modules/spells/targeted/push.dm +++ b/code/modules/spells/targeted/push.dm @@ -6,7 +6,7 @@ specialization = SSOFFENSIVE school = "evocation" - charge_max = 300 + charge_cooldown_max = 30 SECONDS spell_flags = Z2NOCAST | WAIT_FOR_CLICK invocation = "P'SH IT RE'L GUD" invocation_type = SP_INV_SHOUT diff --git a/code/modules/spells/targeted/recall.dm b/code/modules/spells/targeted/recall.dm index 61e353c0be0a..94cef7bf9116 100644 --- a/code/modules/spells/targeted/recall.dm +++ b/code/modules/spells/targeted/recall.dm @@ -6,7 +6,7 @@ abbreviation = "BO" school = "abjuration" - charge_max = 100 + charge_cooldown_max = 10 SECONDS minimum_charge = 10 //1 second delay spell_flags = SELECTABLE | WAIT_FOR_CLICK hud_state = "wiz_bound" @@ -190,7 +190,7 @@ desc = "Dispells any objects bound to you, allowing a new object to be bound." school = "abjuration" - charge_max = 10 + charge_cooldown_max = 1 SECONDS spell_flags = 0 hud_state = "wiz_unbind" level_max = list(SP_TOTAL = 0) diff --git a/code/modules/spells/targeted/retard.dm b/code/modules/spells/targeted/retard.dm index ad2476ebc179..fab097ba5b9d 100644 --- a/code/modules/spells/targeted/retard.dm +++ b/code/modules/spells/targeted/retard.dm @@ -5,7 +5,7 @@ abbreviation = "BD" user_type = USER_TYPE_SPELLBOOK //Whereas previously this was a normal spell, it is now found only in the ancient spellbook. school = "evocation" - charge_max = 200 // 20 seconds + charge_cooldown_max = 20 SECONDS // 20 seconds //Invocation is noted below invocation_type = SP_INV_SHOUT //Wizard will shout what they say range = 3 // Target anyone within 3 tiles of you diff --git a/code/modules/spells/targeted/shoesnatch.dm b/code/modules/spells/targeted/shoesnatch.dm index 3548c35ee505..ff1703d207e2 100644 --- a/code/modules/spells/targeted/shoesnatch.dm +++ b/code/modules/spells/targeted/shoesnatch.dm @@ -7,7 +7,7 @@ school = "evocation" charge_type = SP_RECHARGE - charge_max = 150 + charge_cooldown_max = 15 SECONDS invocation = "H'NK!" invocation_type = SP_INV_SHOUT range = 7 diff --git a/code/modules/spells/targeted/street_alchemy.dm b/code/modules/spells/targeted/street_alchemy.dm index 24fbae38987b..320d56c340d6 100644 --- a/code/modules/spells/targeted/street_alchemy.dm +++ b/code/modules/spells/targeted/street_alchemy.dm @@ -5,7 +5,7 @@ user_type = USER_TYPE_WIZARD specialization = SSUTILITY school = "transmutation" - charge_max = 250 + charge_cooldown_max = 25 SECONDS cooldown_min = 3 SECONDS invocation_type = SP_INV_SHOUT range = 10 //If you can see it, you can steal it diff --git a/code/modules/spells/targeted/summon_snacks.dm b/code/modules/spells/targeted/summon_snacks.dm index 5aed2cf52c5d..79179db62357 100644 --- a/code/modules/spells/targeted/summon_snacks.dm +++ b/code/modules/spells/targeted/summon_snacks.dm @@ -19,7 +19,7 @@ invocation = "OR'DER UHP" invocation_type = SP_INV_SHOUT message = "Suddenly your hands are full of snacks!" - charge_max = 300 + charge_cooldown_max = 30 SECONDS cooldown_min = 15 SECONDS selection_type = "range" range = 7 diff --git a/code/modules/spells/targeted/wrap.dm b/code/modules/spells/targeted/wrap.dm index b5d6ca353c7f..8a1599631f90 100644 --- a/code/modules/spells/targeted/wrap.dm +++ b/code/modules/spells/targeted/wrap.dm @@ -4,7 +4,7 @@ user_type = USER_TYPE_ARTIFACT school = "transmutation" - charge_max = 300 + charge_cooldown_max = 30 SECONDS spell_flags = NEEDSCLOTHES | WAIT_FOR_CLICK range = 7 max_targets = 1 diff --git a/maps/RandomZLevels/wildwest_props.dm b/maps/RandomZLevels/wildwest_props.dm index eea0d24b9942..a5909c2bc413 100644 --- a/maps/RandomZLevels/wildwest_props.dm +++ b/maps/RandomZLevels/wildwest_props.dm @@ -271,7 +271,7 @@ /spell/mountup name = "Mount Up" desc = "Mount a steed." - charge_max = 0 + charge_cooldown_max = 0 SECONDS spell_flags = 0 cast_delay = 2 SECONDS var/obj/effect/overlay/my_overlay From f7d2a0bb8388fec609d67ff1809df98c5102935c Mon Sep 17 00:00:00 2001 From: Shifty Date: Sat, 26 Apr 2025 11:15:36 +0100 Subject: [PATCH 7/7] oops --- __DEFINES/spell_defines.dm | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/__DEFINES/spell_defines.dm b/__DEFINES/spell_defines.dm index 242b3f9f25d9..24b4389d0c98 100644 --- a/__DEFINES/spell_defines.dm +++ b/__DEFINES/spell_defines.dm @@ -25,33 +25,33 @@ #define NO_SPELLBOOK 131072 //Does not show up in the spell list for spellbook purposes //invocation -#define SpI_SHOUT "shout" -#define SpI_WHISPER "whisper" -#define SpI_EMOTE "emote" -#define SpI_NONE "none" +#define SP_INV_SHOUT "shout" +#define SP_INV_WHISPER "whisper" +#define SP_INV_EMOTE "emote" +#define SP_INV_NONE "none" //upgrading -#define Sp_SPEED "cooldown" -#define Sp_POWER "power" -#define Sp_MOVE "mobility" -#define Sp_AMOUNT "amount" -#define Sp_RANGE "range" +#define SP_SPEED "cooldown" +#define SP_POWER "power" +#define SP_MOVE "mobility" +#define SP_AMOUNT "amount" +#define SP_RANGE "range" -#define Sp_TOTAL "total" +#define SP_TOTAL "total" //casting costs -#define Sp_RECHARGE 1 -#define Sp_CHARGES 2 -#define Sp_HOLDVAR 4 -#define Sp_GRADUAL 8 -#define Sp_PASSIVE 16 +#define SP_RECHARGE 1 +#define SP_CHARGES 2 +#define SP_HOLDVAR 4 +#define SP_GRADUAL 8 +#define SP_PASSIVE 16 //spell range #define SELFCAST -1 #define GLOBALCAST -2 //buying costs -#define Sp_BASE_PRICE 20 +#define SP_BASE_PRICE 20 //Autocast flags #define AUTOCAST_NOTARGET 1 //For spells with complex targeting (AI can't pick a target) @@ -95,3 +95,6 @@ #define SPECIFIC_TELEPATHY 1 #define LOCAL_TELEPATHY 2 #define GLOBAL_TELEPATHY 4 + +// Purely helper proc to make code more readable +#define CHARGES *1 \ No newline at end of file