diff --git a/code/modules/mob/living/silicon/ai/ai_programs.dm b/code/modules/mob/living/silicon/ai/ai_programs.dm index 827e8714089..704dfd71eb9 100644 --- a/code/modules/mob/living/silicon/ai/ai_programs.dm +++ b/code/modules/mob/living/silicon/ai/ai_programs.dm @@ -318,7 +318,9 @@ camera_beam(target, "rped_upgrade", 'icons/effects/effects.dmi', 5) /datum/spell/ai_spell/ranged/rgb_lighting/on_purchase_upgrade() - cooldown_handler.recharge_duration = base_cooldown - (spell_level * 5) + cooldown_handler.recharge_duration = max(base_cooldown - (spell_level * 5 SECONDS), cooldown_min) + if(cooldown_handler.is_on_cooldown()) + cooldown_handler.start_recharge() /// Power Shunt - Recharges things from your SMES /datum/ai_program/power_shunt @@ -391,7 +393,9 @@ /datum/spell/ai_spell/ranged/power_shunt/on_purchase_upgrade() power_sent = min(10000, 2500 + (spell_level * 2500)) - cooldown_handler.recharge_duration = max(min(base_cooldown, base_cooldown - (max(spell_level - 3, 0) * 30)), cooldown_min) + cooldown_handler.recharge_duration = max(base_cooldown - (max(spell_level - 3, 0) * 30 SECONDS), cooldown_min) + if(cooldown_handler.is_on_cooldown()) + cooldown_handler.start_recharge() /// Repair Nanites - Uses large numbers of nanites to repair things /datum/ai_program/repair_nanites @@ -450,7 +454,9 @@ camera_beam(target, "medbeam", 'icons/effects/beam.dmi', 10) /datum/spell/ai_spell/ranged/repair_nanites/on_purchase_upgrade() - cooldown_handler.recharge_duration = max(min(base_cooldown, base_cooldown - (max(spell_level - 3, 0) * 30)), cooldown_min) + cooldown_handler.recharge_duration = max(base_cooldown - (max(spell_level - 3, 0) * 30 SECONDS), cooldown_min) + if(cooldown_handler.is_on_cooldown()) + cooldown_handler.start_recharge() /// Universal Adapter - Unlocks usage of repair nanites and power shunt for IPCs /datum/ai_program/universal_adapter @@ -590,7 +596,9 @@ addtimer(CALLBACK(nanofrost, TYPE_PROC_REF(/obj/effect/nanofrost_container, Smoke)), 5 SECONDS) /datum/spell/ai_spell/ranged/extinguishing_system/on_purchase_upgrade() - cooldown_handler.recharge_duration = max(min(base_cooldown, base_cooldown - (spell_level * 15)), 30 SECONDS) + cooldown_handler.recharge_duration = max(base_cooldown - (spell_level * 15 SECONDS), cooldown_min) + if(cooldown_handler.is_on_cooldown()) + cooldown_handler.start_recharge() /// Bluespace Miner Subsystem - Makes money for science, at the cost of extra power drain /datum/ai_program/bluespace_miner @@ -699,7 +707,9 @@ camera_beam(target, "rped_upgrade", 'icons/effects/effects.dmi', 5) /datum/spell/ai_spell/ranged/light_repair/on_purchase_upgrade() - cooldown_handler.recharge_duration = base_cooldown - (spell_level * 5) + cooldown_handler.recharge_duration = max(base_cooldown - (spell_level * 5 SECONDS), cooldown_min) + if(cooldown_handler.is_on_cooldown()) + cooldown_handler.start_recharge() /// Nanosurgeon Deployment - Uses large numbers of nanites to heal things /datum/ai_program/nanosurgeon_deployment @@ -754,7 +764,9 @@ revert_cast() /datum/spell/ai_spell/ranged/nanosurgeon_deployment/on_purchase_upgrade() - cooldown_handler.recharge_duration = max(min(base_cooldown, base_cooldown - (max(spell_level - 3, 0) * 30)), cooldown_min) + cooldown_handler.recharge_duration = max(base_cooldown - (max(spell_level - 3, 0) * 30 SECONDS), cooldown_min) + if(cooldown_handler.is_on_cooldown()) + cooldown_handler.start_recharge() /// Enhanced Door Controls - Reduces delay in bolting and shocking doors /datum/ai_program/enhanced_doors @@ -854,7 +866,9 @@ upgraded = TRUE /datum/spell/ai_spell/research_subsystem/on_purchase_upgrade() - cooldown_handler.recharge_duration = max(min(base_cooldown, base_cooldown - (spell_level * 30)), cooldown_min) + cooldown_handler.recharge_duration = max(base_cooldown - (max(spell_level - 3, 0) * 30 SECONDS), cooldown_min) + if(cooldown_handler.is_on_cooldown()) + cooldown_handler.start_recharge() // Emergency Sealant - Patches holes with metal foam /datum/ai_program/emergency_sealant @@ -901,6 +915,9 @@ /datum/spell/ai_spell/ranged/emergency_sealant/on_purchase_upgrade() cooldown_handler.recharge_duration = max(min(base_cooldown, base_cooldown - (spell_level * 30)), 30 SECONDS) + cooldown_handler.recharge_duration = max(base_cooldown - (spell_level * 30 SECONDS), cooldown_min) + if(cooldown_handler.is_on_cooldown()) + cooldown_handler.start_recharge() // Holosign Deployment - Deploys a holosign on the selected turf /datum/ai_program/holosign_displayer @@ -984,7 +1001,7 @@ ranged_mousepointer = 'icons/mecha/mecha_mouse.dmi' auto_use_uses = FALSE base_cooldown = 30 SECONDS - cooldown_min = 5 SECONDS + cooldown_min = 15 SECONDS level_max = 10 selection_activated_message = "You prepare to honk..." selection_deactivated_message = "You reduce the amount of humor in your subsystems." @@ -1008,7 +1025,9 @@ AI.play_sound_remote(target, 'sound/items/bikehorn.ogg', 50) /datum/spell/ai_spell/ranged/honk_subsystem/on_purchase_upgrade() - cooldown_handler.recharge_duration = max(base_cooldown - (spell_level * 15) SECONDS, 15 SECONDS) + cooldown_handler.recharge_duration = max(base_cooldown - (spell_level * 15 SECONDS), cooldown_min) + if(cooldown_handler.is_on_cooldown()) + cooldown_handler.start_recharge() // Enhanced Tracking System - Select a target. Get alerted after a delay whenever that target enters camera sight /datum/ai_program/enhanced_tracker