diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm index 5e65bc57536..e7721b4a4a6 100644 --- a/code/_onclick/ai.dm +++ b/code/_onclick/ai.dm @@ -15,7 +15,6 @@ return if(control_disabled || stat) return - next_move = world.time + 9 if(ismob(A)) ai_actual_track(A) @@ -60,7 +59,6 @@ if(world.time <= next_move) return - next_move = world.time + 9 if(aiCamera.in_camera_mode) aiCamera.camera_mode_off() diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index fb2f17d46a9..1e14f780704 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -77,6 +77,7 @@ return M.click_action(A,src) if(restrained()) + changeNext_move(CLICK_CD_HANDCUFFED) //Doing shit in cuffs shall be vey slow RestrainedClickOn(A) return @@ -87,37 +88,26 @@ var/obj/item/W = get_active_hand() if(W == A) - next_move = world.time + 6 - if(W.flags&USEDELAY) - next_move += 5 W.attack_self(src) if(hand) update_inv_l_hand(0) else update_inv_r_hand(0) - return // operate two STORAGE levels deep here (item in backpack in src; NOT item in box in backpack in src) var/sdepth = A.storage_depth(src) if(A == loc || (A in loc) || (sdepth != -1 && sdepth <= 1)) - - // faster access to objects already on you - if(A in contents) - next_move = world.time + 6 // on your person - else - next_move = world.time + 8 // in a box/bag or in your square - // No adjacency needed if(W) - if(W.flags&USEDELAY) - next_move += 5 - var/resolved = A.attackby(W,src) if(!resolved && A && W) W.afterattack(A,src,1,params) // 1 indicates adjacency else + if(ismob(A)) + changeNext_move(CLICK_CD_MELEE) UnarmedAttack(A, 1) + return if(!isturf(loc)) // This is going to stop you from telekinesing from inside a closet, but I don't shed many tears for that @@ -126,19 +116,17 @@ // Allows you to click on a box's contents, if that box is on the ground, but no deeper than that sdepth = A.storage_depth_turf() if(isturf(A) || isturf(A.loc) || (sdepth != -1 && sdepth <= 1)) - next_move = world.time + 10 - if(A.Adjacent(src)) // see adjacent.dm if(W) - if(W.flags&USEDELAY) - next_move += 5 - // Return 1 in attackby() to prevent afterattack() effects (when safely moving items for example) var/resolved = A.attackby(W,src) if(!resolved && A && W) W.afterattack(A,src,1,params) // 1: clicking something Adjacent else + if(ismob(A)) + changeNext_move(CLICK_CD_MELEE) UnarmedAttack(A, 1) + return else // non-adjacent click if(W) @@ -148,10 +136,12 @@ return +/mob/proc/changeNext_move(num) + next_move = world.time + num + // Default behavior: ignore double clicks, consider them normal clicks instead /mob/proc/DblClickOn(var/atom/A, var/params) - ClickOn(A,params) - + return /* Translates into attack_hand, etc. @@ -164,6 +154,8 @@ in human click code to allow glove touches only at melee range. */ /mob/proc/UnarmedAttack(var/atom/A, var/proximity_flag) + if(ismob(A)) + changeNext_move(CLICK_CD_MELEE) return /* @@ -181,19 +173,9 @@ if((M_LASER in mutations) && a_intent == "harm") LaserEyes(A) // moved into a proc below return - else if(M_TK in mutations) - switch(get_dist(src,A)) - if(0) - ; - if(1 to 5) // not adjacent may mean blocked by window - next_move += 2 - if(5 to 7) - next_move += 5 - if(8 to tk_maxrange) - next_move += 10 - else - return - A.attack_tk(src) + else + if(M_TK in mutations) + A.attack_tk(src) /* Restrained ClickOn @@ -309,7 +291,7 @@ return /mob/living/LaserEyes(atom/A) - next_move = world.time + 6 + changeNext_move(CLICK_CD_RANGE) var/turf/T = get_turf(src) var/turf/U = get_turf(A) diff --git a/code/_onclick/cyborg.dm b/code/_onclick/cyborg.dm index 4e20ef9ec32..846fe9c741e 100644 --- a/code/_onclick/cyborg.dm +++ b/code/_onclick/cyborg.dm @@ -72,20 +72,12 @@ return if(W == A) - next_move = world.time + 8 - if(W.flags&USEDELAY) - next_move += 5 - W.attack_self(src) return // cyborgs are prohibited from using storage items so we can I think safely remove (A.loc in contents) if(A == loc || (A in loc) || (A in contents)) // No adjacency checks - next_move = world.time + 8 - if(W.flags&USEDELAY) - next_move += 5 - var/resolved = A.attackby(W,src) if(!resolved && A && W) W.afterattack(A,src,1,params) @@ -97,16 +89,11 @@ // cyborgs are prohibited from using storage items so we can I think safely remove (A.loc && isturf(A.loc.loc)) if(isturf(A) || isturf(A.loc)) if(A.Adjacent(src)) // see adjacent.dm - next_move = world.time + 10 - if(W.flags&USEDELAY) - next_move += 5 - var/resolved = A.attackby(W, src) if(!resolved && A && W) W.afterattack(A, src, 1, params) return else - next_move = world.time + 10 W.afterattack(A, src, 0, params) return return diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 1e07b13142a..073fe9733ec 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -52,7 +52,6 @@ return 1 if(usr.next_move >= world.time) return - usr.next_move = world.time + 6 if(usr.stat || usr.restrained() || usr.stunned || usr.lying) return 1 @@ -98,7 +97,6 @@ var/obj/item/I = usr.get_active_hand() if(I) master.attackby(I, usr) - usr.next_move = world.time+2 return 1 /obj/screen/gun @@ -583,12 +581,10 @@ if(iscarbon(usr)) var/mob/living/carbon/C = usr C.activate_hand("r") - usr.next_move = world.time+2 if("l_hand") if(iscarbon(usr)) var/mob/living/carbon/C = usr C.activate_hand("l") - usr.next_move = world.time+2 if("swap") usr:swap_hand() if("hand") @@ -597,5 +593,4 @@ if(usr.attack_ui(slot_id)) usr.update_inv_l_hand(0) usr.update_inv_r_hand(0) - usr.next_move = world.time+6 return 1 diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 07fb74b8359..84351db1821 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -12,6 +12,7 @@ /mob/living/attackby(obj/item/I, mob/user) if(istype(I) && ismob(user)) + user.changeNext_move(CLICK_CD_MELEE) I.attack(src, user) diff --git a/code/_onclick/observer.dm b/code/_onclick/observer.dm index 210140bdf9f..79e080e74bd 100644 --- a/code/_onclick/observer.dm +++ b/code/_onclick/observer.dm @@ -19,8 +19,8 @@ if(client.buildmode) build_click(src, client.buildmode, params, A) return - if(world.time <= next_move) return - next_move = world.time + 8 + if(world.time <= next_move) + return var/list/modifiers = params2list(params) if(modifiers["shift"]) diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index c6527855100..48db14eff84 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -37,15 +37,6 @@ return else if(M_TK in mutations) - switch(get_dist(src,A)) - if(1 to 5) // not adjacent may mean blocked by window - next_move += 2 - if(5 to 7) - next_move += 5 - if(8 to 15) - next_move += 10 - if(16 to 128) - return A.attack_tk(src) */ diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm index c06485ee0ec..f4785d6d381 100644 --- a/code/_onclick/telekinesis.dm +++ b/code/_onclick/telekinesis.dm @@ -108,20 +108,11 @@ var/const/tk_maxrange = 15 return var/d = get_dist(user, target) - if(focus) d = max(d,get_dist(user,focus)) // whichever is further - switch(d) - if(0) - ; - if(1 to 5) // not adjacent may mean blocked by window - if(!proximity) - user.next_move += 2 - if(5 to 7) - user.next_move += 5 - if(8 to tk_maxrange) - user.next_move += 10 - else - user << "\blue Your mind won't reach that far." - return + if(focus) + d = max(d,get_dist(user,focus)) // whichever is further + if(d > tk_maxrange) + user << "Your mind won't reach that far." + return if(!focus) focus_object(target, user) diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index ccfda6b21c3..a95fe3a4ac2 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -830,7 +830,6 @@ icon = 'icons/obj/lightning.dmi' icon_state = "lightning" desc = "test lightning" - flags = USEDELAY New() icon = midicon diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm index 9fdcc7ce7ba..9bcdefdd0b8 100644 --- a/code/game/gamemodes/blob/theblob.dm +++ b/code/game/gamemodes/blob/theblob.dm @@ -130,6 +130,7 @@ attackby(var/obj/item/weapon/W, var/mob/user) + user.changeNext_move(CLICK_CD_MELEE) playsound(get_turf(src), 'sound/effects/attackblob.ogg', 50, 1) src.visible_message("\red The [src.name] has been attacked with \the [W][(user ? " by [user]." : ".")]") var/damage = 0 diff --git a/code/game/gamemodes/heist/heist.dm b/code/game/gamemodes/heist/heist.dm index 91289631400..96aacffa9b4 100644 --- a/code/game/gamemodes/heist/heist.dm +++ b/code/game/gamemodes/heist/heist.dm @@ -15,7 +15,7 @@ var/global/list/obj/cortical_stacks = list() //Stacks for 'leave nobody behind' required_players = 15 required_players_secret = 25 required_enemies = 4 - recommended_enemies = 6 + recommended_enemies = 5 votable = 0 var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds) diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 429bc886068..2dafc4b32cd 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -195,6 +195,7 @@ /obj/machinery/door/window/proc/attack_generic(mob/user as mob, damage = 0) if(src.operating) return + user.changeNext_move(CLICK_CD_MELEE) playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1) user.visible_message("[user] smashes against the [src.name].", \ "[user] smashes against the [src.name].") @@ -330,6 +331,7 @@ //If it's a weapon, smash windoor. Unless it's an id card, agent card, ect.. then ignore it (Cards really shouldnt damage a door anyway) if(src.density && istype(I, /obj/item/weapon) && !istype(I, /obj/item/weapon/card) ) + user.changeNext_move(CLICK_CD_MELEE) if( (I.flags&NOBLUDGEON) || !I.force ) return var/aforce = I.force diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 24af225a8ab..9f3f7548d5a 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -155,7 +155,6 @@ else if(isliving(loc)) return 0 - user.next_move = max(user.next_move+2,world.time + 2) pickup(user) add_fingerprint(user) @@ -187,7 +186,6 @@ if(istype(src.loc, /mob/living)) return src.pickup(user) - user.next_move = max(user.next_move+2,world.time + 2) user.put_in_active_hand(src) return diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm index d3ba41ca58c..b4400ec0a7f 100644 --- a/code/game/objects/items/devices/laserpointer.dm +++ b/code/game/objects/items/devices/laserpointer.dm @@ -5,7 +5,7 @@ icon_state = "pointer" item_state = "pen" var/pointer_icon_state - flags = CONDUCT | USEDELAY + flags = CONDUCT slot_flags = SLOT_BELT m_amt = 500 g_amt = 500 diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 2475ee9eeed..11d68d9e6f9 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -59,6 +59,7 @@ attack_hand(user) /obj/structure/grille/attack_hand(mob/user as mob) + user.changeNext_move(CLICK_CD_MELEE) playsound(loc, 'sound/effects/grillehit.ogg', 80, 1) user.visible_message("[user] kicks [src].", \ "You kick [src].", \ @@ -74,7 +75,7 @@ /obj/structure/grille/attack_alien(mob/user as mob) if(istype(user, /mob/living/carbon/alien/larva)) return - + user.changeNext_move(CLICK_CD_MELEE) playsound(loc, 'sound/effects/grillehit.ogg', 80, 1) user.visible_message("[user] mangles [src].", \ "You mangle [src].", \ @@ -86,6 +87,7 @@ return /obj/structure/grille/attack_slime(mob/user as mob) + user.changeNext_move(CLICK_CD_MELEE) var/mob/living/carbon/slime/S = user if (!S.is_adult) return @@ -101,6 +103,7 @@ /obj/structure/grille/attack_animal(var/mob/living/simple_animal/M as mob) if(M.melee_damage_upper == 0) return + M.changeNext_move(CLICK_CD_MELEE) playsound(loc, 'sound/effects/grillehit.ogg', 80, 1) M.visible_message("[M] smashes against [src].", \ @@ -137,6 +140,7 @@ return /obj/structure/grille/attackby(obj/item/weapon/W as obj, mob/user as mob) + user.changeNext_move(CLICK_CD_MELEE) if(iswirecutter(W)) if(!shock(user, 100)) playsound(loc, 'sound/items/Wirecutter.ogg', 100, 1) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 8cdc2666bc2..be28a7be0f8 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -162,11 +162,13 @@ var/global/wcColored log_admin("Window destroyed by hulk [user.real_name] ([user.ckey]) with pdiff [pdiff] at [loc]!") destroy() else if (usr.a_intent == "harm") + user.changeNext_move(CLICK_CD_MELEE) playsound(get_turf(src), 'sound/effects/glassknock.ogg', 80, 1) usr.visible_message("\red [usr.name] bangs against the [src.name]!", \ "\red You bang against the [src.name]!", \ "You hear a banging sound.") else + user.changeNext_move(CLICK_CD_MELEE) playsound(src.loc, 'sound/effects/glassknock.ogg', 80, 1) usr.visible_message("[usr.name] knocks on the [src.name].", \ "You knock on the [src.name].", \ @@ -178,6 +180,7 @@ var/global/wcColored return attack_hand(user) /obj/structure/window/proc/attack_generic(mob/user as mob, damage = 0) //used by attack_alien, attack_animal, and attack_slime + user.changeNext_move(CLICK_CD_MELEE) health -= damage if(health <= 0) user.visible_message("[user] smashes through [src]!") @@ -298,6 +301,7 @@ var/global/wcColored del(src) else if(W.damtype == BRUTE || W.damtype == BURN) + user.changeNext_move(CLICK_CD_MELEE) hit(W.force) if(health <= 7) anchored = 0 diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index 4fbe7180941..ee840bcbe5d 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -241,6 +241,7 @@ //Interactions /turf/simulated/wall/attack_paw(mob/user as mob) + user.changeNext_move(CLICK_CD_MELEE) if ((M_HULK in user.mutations)) if (prob(40)) usr << text("\blue You smash through the wall.") @@ -255,6 +256,7 @@ return src.attack_hand(user) /turf/simulated/wall/attack_animal(var/mob/living/simple_animal/M) + M.changeNext_move(CLICK_CD_MELEE) if(M.environment_smash >= 2) if(istype(src, /turf/simulated/wall/r_wall)) if(M.environment_smash == 3) @@ -269,6 +271,7 @@ return /turf/simulated/wall/attack_hand(mob/user as mob) + user.changeNext_move(CLICK_CD_MELEE) if (M_HULK in user.mutations) if (prob(40) || rotting) user << text("\blue You smash through the wall.") @@ -291,7 +294,7 @@ return /turf/simulated/wall/attackby(obj/item/weapon/W as obj, mob/user as mob) - + user.changeNext_move(CLICK_CD_MELEE) if (!(istype(user, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") user << "You don't have the dexterity to do this!" return diff --git a/code/game/verbs/atom_verbs.dm b/code/game/verbs/atom_verbs.dm index 34b6e2cad71..aa55f33da0a 100644 --- a/code/game/verbs/atom_verbs.dm +++ b/code/game/verbs/atom_verbs.dm @@ -29,7 +29,7 @@ return var/P = new /obj/effect/decal/point(tile) - usr.next_move = world.time + 10 + usr.changeNext_move(CLICK_CD_POINT) spawn (20) if(P) del(P) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 246f6a1ba01..367281f49db 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -456,7 +456,7 @@ if(!isliving(usr) || usr.next_move > world.time) return - usr.next_move = world.time + 20 + usr.changeNext_move(CLICK_CD_RESIST) var/mob/living/L = usr @@ -539,8 +539,8 @@ if(iscarbon(L)) var/mob/living/carbon/C = L if( C.handcuffed ) - C.next_move = world.time + 100 - C.last_special = world.time + 100 + C.changeNext_move(CLICK_CD_BREAKOUT) + C.last_special = world.time + CLICK_CD_BREAKOUT C << "\red You attempt to unbuckle yourself. (This will take around 2 minutes and you need to stand still)" for(var/mob/O in viewers(L)) O.show_message("\red [usr] attempts to unbuckle themself!", 1) @@ -573,8 +573,8 @@ // breakout_time++ //Harder to get out of welded lockers than locked lockers //okay, so the closet is either welded or locked... resist!!! - usr.next_move = world.time + 100 - L.last_special = world.time + 100 + L.changeNext_move(CLICK_CD_BREAKOUT) + L.last_special = world.time + CLICK_CD_BREAKOUT L << "\red You lean on the back of \the [C] and start pushing the door open. (this will take about [breakout_time] minutes)" for(var/mob/O in viewers(usr.loc)) O.show_message("\red The [L.loc] begins to shake violently!", 1) @@ -640,8 +640,8 @@ ExtinguishMob() return if(CM.handcuffed && CM.canmove && (CM.last_special <= world.time)) - CM.next_move = world.time + 100 - CM.last_special = world.time + 100 + CM.changeNext_move(CLICK_CD_BREAKOUT) + CM.last_special = world.time + CLICK_CD_BREAKOUT if(isalienadult(CM) || (M_HULK in usr.mutations))//Don't want to do a lot of logic gating here. usr << "\red You attempt to break your handcuffs. (This will take around 5 seconds and you need to stand still)" for(var/mob/O in viewers(CM)) @@ -677,8 +677,8 @@ CM.unEquip(CM.handcuffed) else if(CM.legcuffed && CM.canmove && (CM.last_special <= world.time)) - CM.next_move = world.time + 100 - CM.last_special = world.time + 100 + CM.changeNext_move(CLICK_CD_BREAKOUT) + CM.last_special = world.time + CLICK_CD_BREAKOUT if(isalienadult(CM) || (M_HULK in usr.mutations))//Don't want to do a lot of logic gating here. usr << "\red You attempt to break your legcuffs. (This will take around 5 seconds and you need to stand still)" for(var/mob/O in viewers(CM)) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 6d0694c3073..80290e7c514 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -402,6 +402,7 @@ if(istype(O, /obj/item/weapon/kitchenknife) || istype(O, /obj/item/weapon/butch)) harvest() else + user.changeNext_move(CLICK_CD_MELEE) var/damage = 0 if(O.force) if(O.force >= force_threshold) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 5f0f4e1768f..81b4877f09d 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -503,8 +503,6 @@ var/list/slot_equipment_priority = list( \ if (W) W.attack_self(src) update_inv_r_hand() - if(next_move < world.time) - next_move = world.time + 2 return /* @@ -1151,7 +1149,7 @@ mob/proc/yank_out_object() if(!isliving(usr) || usr.next_move > world.time) return - usr.next_move = world.time + 20 + usr.changeNext_move(CLICK_CD_RESIST) if(usr.stat == 1) usr << "You are unconcious and cannot do that!" diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index cdda2f6d268..dcb5f31ff0f 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -160,7 +160,7 @@ affecting.LAssailant = null else affecting.LAssailant = assailant - assailant.next_move = world.time + 10 + assailant.changeNext_move(CLICK_CD_TKSTRANGLE) affecting.losebreath += 1 else assailant.visible_message("[assailant] was unable to tighten \his grip on [affecting]'s neck!") diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 35fbeb2de35..566cc667745 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -153,7 +153,7 @@ in_chamber.loc = get_turf(user) in_chamber.starting = get_turf(user) in_chamber.shot_from = src - user.next_move = world.time + 4 + user.changeNext_move(CLICK_CD_RANGE) in_chamber.silenced = silenced in_chamber.current = curloc in_chamber.yo = targloc.y - curloc.y diff --git a/code/modules/projectiles/guns/projectile/rocket.dm b/code/modules/projectiles/guns/projectile/rocket.dm index d21987e4a1c..8829993c0ae 100644 --- a/code/modules/projectiles/guns/projectile/rocket.dm +++ b/code/modules/projectiles/guns/projectile/rocket.dm @@ -8,7 +8,7 @@ throw_speed = 2 throw_range = 10 force = 5.0 - flags = CONDUCT | USEDELAY + flags = CONDUCT origin_tech = "combat=8;materials=5" projectile = /obj/item/missile var/missile_speed = 2 diff --git a/code/setup.dm b/code/setup.dm index 2d05f300323..a262ad31c0f 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -198,7 +198,7 @@ var/MAX_EX_FLASH_RANGE = 14 #define NODROP 2 // This flag makes it so that an item literally cannot be removed at all, or at least that's how it should be. Only deleted. #define NOBLUDGEON 4 // when an item has this it produces no "X has been hit by Y with Z" message with the default handler #define MASKINTERNALS 8 // mask allows internals -#define USEDELAY 16 // 1 second extra delay on use (Can be used once every 2s) +//#define USEDELAY 16 // 1 second extra delay on use (Can be used once every 2s) #define NOSHIELD 32 // weapon not affected by shield #define CONDUCT 64 // conducts electricity (metal etc.) #define ABSTRACT 128 // for all things that are technically items but used for various different stuff, made it 128 because it could conflict with other flags other way @@ -964,3 +964,12 @@ var/list/hit_appends = list("-OOF", "-ACK", "-UGH", "-HRNK", "-HURGH", "-GLORF") #define STATUS_UPDATE 1 // ORANGE Visability #define STATUS_DISABLED 0 // RED Visability #define STATUS_CLOSE -1 // Close the interface + +//Click cooldowns, in tenths of a second +#define CLICK_CD_MELEE 8 +#define CLICK_CD_RANGE 4 +#define CLICK_CD_BREAKOUT 100 +#define CLICK_CD_HANDCUFFED 10 +#define CLICK_CD_TKSTRANGLE 10 +#define CLICK_CD_POINT 10 +#define CLICK_CD_RESIST 20