From 90235adbc1b698efb15b7b696ece6e7b5395c955 Mon Sep 17 00:00:00 2001 From: Whitellama Date: Sun, 9 Dec 2012 17:12:59 -0800 Subject: [PATCH] WIP Guncode --- code/game/atoms.dm | 2 + code/game/hud.dm | 6 +- .../carbon/alien/humanoid/update_icons.dm | 15 +- .../mob/living/carbon/human/update_icons.dm | 32 +-- .../mob/living/carbon/monkey/update_icons.dm | 16 +- .../modules/mob/living/silicon/robot/robot.dm | 10 +- .../living/simple_animal/friendly/corgi.dm | 17 +- .../mob/living/simple_animal/simple_animal.dm | 10 +- code/modules/mob/mob_movement.dm | 2 +- code/modules/mob/update_icons.dm | 1 - code/modules/projectiles/gun.dm | 231 +++++++++++------- .../projectiles/guns/projectile/automatic.dm | 3 +- icons/effects/Targeted.dmi | Bin 613 -> 648 bytes icons/mob/screen1.dmi | Bin 158885 -> 158871 bytes 14 files changed, 213 insertions(+), 132 deletions(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 313a9106f48..47e77e1bccb 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -574,6 +574,8 @@ its easier to just keep the beam vertical. /atom/Click(location,control,params) //world << "atom.Click() on [src] by [usr] : src.type is [src.type]" + if(!istype(src,/obj/item/weapon/gun)) + usr.last_target_click = world.time if(usr.client.buildmode) build_click(usr, usr.client.buildmode, location, control, params, src) return diff --git a/code/game/hud.dm b/code/game/hud.dm index 9a29adc082b..a3022719807 100644 --- a/code/game/hud.dm +++ b/code/game/hud.dm @@ -46,9 +46,9 @@ #define ui_borg_panel "14:28,2:7" //Gun buttons -#define ui_gun1 "13:26,2:5" -#define ui_gun2 "12:24,2:5" -#define ui_gun3 "11:22,2:5" +#define ui_gun1 "13:26,3:7" +#define ui_gun2 "14:28, 4:7" +#define ui_gun3 "13:26,4:7" #define ui_gun_select "14:28,3:7" //Upper-middle right (damage indicators) diff --git a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm index 0e2c6bed099..f1d65d271db 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm @@ -3,7 +3,8 @@ #define X_SUIT_LAYER 2 #define X_L_HAND_LAYER 3 #define X_R_HAND_LAYER 4 -#define X_TOTAL_LAYERS 4 +#define TARGETED_LAYER 5 +#define X_TOTAL_LAYERS 5 ///////////////////////////////// /mob/living/carbon/alien/humanoid @@ -120,10 +121,22 @@ overlays_standing[X_L_HAND_LAYER] = null if(update_icons) update_icons() +//Call when target overlay should be added/removed +/mob/living/carbon/alien/humanoid/update_targeted(var/update_icons=1) + if (targeted_by && target_locked) + overlays_lying[TARGETED_LAYER] = target_locked + overlays_standing[TARGETED_LAYER] = target_locked + else if (!targeted_by && target_locked) + del(target_locked) + if (!targeted_by) + overlays_lying[TARGETED_LAYER] = null + overlays_standing[TARGETED_LAYER] = null + if(update_icons) update_icons() //Xeno Overlays Indexes////////// #undef X_HEAD_LAYER #undef X_SUIT_LAYER #undef X_L_HAND_LAYER #undef X_R_HAND_LAYER +#undef TARGETED_LAYER #undef X_TOTAL_LAYERS diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 07d1541f929..c0a9d4128d5 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -132,7 +132,6 @@ Please contact me on #coderbus IRC. ~Carn x //this proc is messy as I was forced to include some old laggy cloaking code to it so that I don't break cloakers //I'll work on removing that stuff by rewriting some of the cloaking stuff at a later date. /mob/living/carbon/human/update_icons() - world << "[src] CALLED THE HUMAN VERSION OF UPDATE_ICONS" lying_prev = lying //so we don't update overlays for lying/standing unless our stance changes again update_hud() //TODO: remove the need for this overlays = null @@ -471,29 +470,17 @@ proc/get_damage_icon_part(damage_state, body_part) update_hair(0) if(update_icons) update_icons() +//Call when target overlay should be added/removed /mob/living/carbon/human/update_targeted(var/update_icons=1) - // If someone's targeting you - if (targeted_by.len) - - //If the target is already there and finished locking (after two seconds), put in locked state and be done - if (overlays_standing[TARGETED_LAYER]||overlays_lying[TARGETED_LAYER]) - var/target_locked = image("icon" = 'icons/effects/Targeted.dmi', "icon_state" = "locked") - overlays_lying[TARGETED_LAYER] = target_locked - overlays_standing[TARGETED_LAYER] = target_locked - return - - var/target_locking = image("icon" = 'icons/effects/Targeted.dmi', "icon_state" = "locking") - world << "TARGET_LOCKING IS [target_locking]" - - //Put in our overlay, since it isn't already there - overlays_lying[TARGETED_LAYER] = target_locking - overlays_standing[TARGETED_LAYER] = target_locking - - else + if (targeted_by && target_locked) + overlays_lying[TARGETED_LAYER] = target_locked + overlays_standing[TARGETED_LAYER] = target_locked + else if (!targeted_by && target_locked) + del(target_locked) + if (!targeted_by) overlays_lying[TARGETED_LAYER] = null overlays_standing[TARGETED_LAYER] = null - - if(update_icons) update_icons() + if(update_icons) update_icons() /* --------------------------------------- */ @@ -877,4 +864,5 @@ proc/get_damage_icon_part(damage_state, body_part) #undef L_HAND_LAYER #undef R_HAND_LAYER #undef TAIL_LAYER -#undef TOTAL_LAYERS +#undef TARGETED_LAYER +#undef TOTAL_LAYERS diff --git a/code/modules/mob/living/carbon/monkey/update_icons.dm b/code/modules/mob/living/carbon/monkey/update_icons.dm index 4df4f6623b4..08d0c58cdfc 100644 --- a/code/modules/mob/living/carbon/monkey/update_icons.dm +++ b/code/modules/mob/living/carbon/monkey/update_icons.dm @@ -4,7 +4,8 @@ #define M_HANDCUFF_LAYER 3 #define M_L_HAND_LAYER 4 #define M_R_HAND_LAYER 5 -#define M_TOTAL_LAYERS 5 +#define TARGETED_LAYER 6 +#define M_TOTAL_LAYERS 6 ///////////////////////////////// /mob/living/carbon/monkey @@ -101,11 +102,24 @@ if (client) client.screen |= contents +//Call when target overlay should be added/removed +/mob/living/carbon/monkey/update_targeted(var/update_icons=1) + if (targeted_by && target_locked) + overlays_lying[TARGETED_LAYER] = target_locked + overlays_standing[TARGETED_LAYER] = target_locked + else if (!targeted_by && target_locked) + del(target_locked) + if (!targeted_by) + overlays_lying[TARGETED_LAYER] = null + overlays_standing[TARGETED_LAYER] = null + if(update_icons) update_icons() + //Monkey Overlays Indexes//////// #undef M_MASK_LAYER #undef M_BACK_LAYER #undef M_HANDCUFF_LAYER #undef M_L_HAND_LAYER #undef M_R_HAND_LAYER +#undef TARGETED_LAYER #undef M_TOTAL_LAYERS diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 203e1c029f2..e373bd3f5ff 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -1,7 +1,7 @@ /mob/living/silicon/robot name = "Cyborg" real_name = "Cyborg" - icon = 'icons/mob/robots.dmi'// + icon = 'icons/mob/robots.dmi' icon_state = "robot" maxHealth = 300 health = 300 @@ -790,7 +790,13 @@ overlays += "ov-openpanel -c" return - +//Call when target overlay should be added/removed +/mob/living/silicon/robot/update_targeted() + if(!targeted_by && target_locked) + del(target_locked) + updateicon() + if (targeted_by && target_locked) + overlays += target_locked /mob/living/silicon/robot/proc/installed_modules() if(weapon_lock) diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm index 5b9b46edf81..416bb6fea7c 100644 --- a/code/modules/mob/living/simple_animal/friendly/corgi.dm +++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm @@ -23,10 +23,12 @@ /mob/living/simple_animal/corgi/Life() ..() - regenerate_icons() + //regenerate_icons() //Don't call this every life tick. + //I'm serious. If you're going to enable dressing up Ian, + //Find a GOOD place to call regenerate_icons(). /mob/living/simple_animal/corgi/show_inv(mob/user as mob) - /* + /* If you're turning this back on, scroll down and uncomment target_updated user.machine = src if(user.stat) return @@ -391,7 +393,14 @@ overlays += back_icon return - +//UNCOMMENT THIS WHEN YOU UNCOMMENT CODE FOR DRESSING UP IAN +/*//Call when target overlay should be added/removed +/mob/living/simple_animal/friendly/corgi/update_targeted() + if(!targeted_by && target_locked) + del(target_locked) + regenerate_icons() + if (targeted_by && target_locked) + overlays += target_locked*/ /mob/living/simple_animal/corgi/puppy name = "\improper corgi puppy" @@ -406,4 +415,4 @@ if(href_list["remove_inv"] || href_list["add_inv"]) usr << "\red You can't fit this on [src]" return - ..() + ..() diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index b2f2f33287f..d9ed6512a12 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -432,4 +432,12 @@ var/obj/mecha/M = target_mob if (M.occupant) return (0) - return (1) \ No newline at end of file + return (1) + +//Call when target overlay should be added/removed +/mob/living/simple_animal/update_targeted() + if(!targeted_by && target_locked) + del(target_locked) + overlays = null + if (targeted_by && target_locked) + overlays += target_locked \ No newline at end of file diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index a6c3ebe5877..e208c04638f 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -282,7 +282,7 @@ return 0 move_delay = world.time//set move delay - + mob.last_move_intent = world.time + 10 switch(mob.m_intent) if("run") if(mob.drowsyness > 0) diff --git a/code/modules/mob/update_icons.dm b/code/modules/mob/update_icons.dm index 32ea610cd10..a6ae6dc4a09 100644 --- a/code/modules/mob/update_icons.dm +++ b/code/modules/mob/update_icons.dm @@ -5,7 +5,6 @@ return /mob/proc/update_icons() - world << "[src] CALLED THE MOB VERSION OF UPDATE_ICONS" return /mob/proc/update_hud() diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index a44abf2a9ff..bf6bc3032c7 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -28,6 +28,8 @@ var/automatic = 0 //Used to determine if you can target multiple people. var/tmp/mob/living/last_moved_mob //Used to fire faster at more than one person. var/tmp/told_cant_shoot = 0 //So that it doesn't spam them with the fact they cannot hit them. + var/firerate = 1 // 0 for one bullet after tarrget moves and aim is lowered, + //1 for keep shooting until aim is lowered proc/load_into_chamber() return @@ -39,7 +41,7 @@ load_into_chamber() return 0 -//Removing the lock and the buttons. + //Removing the lock and the buttons. dropped(mob/user as mob) if(target) for(var/mob/living/M in target) @@ -59,19 +61,32 @@ for(var/obj/O in contents) O.emp_act(severity) -//Handling lowering yer gun. - attack_self() + verb/lower_aim() + set name = "Lower Aim" + set category = "Object" if(target) for(var/mob/living/M in target) if(M) M.NotTargeted(src) del(target) usr.visible_message("\blue \The [usr] lowers \the [src]...") - return 0 - return 1 + + //Clicking gun will still lower aim for guns that don't overwrite this + attack_self() + lower_aim() + + verb/toggle_firerate() + set name = "Toggle Firerate" + set category = "Object" + firerate = !firerate + if (firerate == 0) + loc << "You will now continue firing when your target moves." + else + loc << "You will now only fire once, then lower your aim, when your target moves." //Suiciding. attack(mob/living/M as mob, mob/living/user as mob, def_zone) + world << "[user] USED ATTACK()" if (M == user && user.zone_sel.selecting == "mouth" && load_into_chamber() && !mouthshoot) //Suicide handling. mouthshoot = 1 M.visible_message("\red \The [user] sticks their gun in their mouth, ready to pull the trigger...") @@ -117,11 +132,11 @@ update_icon() return else if(user.a_intent != "hurt" && load_into_chamber() && istype(in_chamber,/obj/item/projectile/energy/electrode)) //Point blank tasering. - /*if (M.canstun == 0 || M.canweaken == 0) + if (!(M.status_flags & CANSTUN) || !(M.status_flags & CANWEAKEN)) user.visible_message("\red \The [M] has been stunned with the taser gun by \the [user] to no effect!") del(in_chamber) update_icon() - return*/ + return if (prob(50)) if (M.paralysis < 60 && (!(HULK in M.mutations)) ) M.paralysis = 60 @@ -146,11 +161,57 @@ if(!load_into_chamber()) //No ammo, hit them! return ..() else + world << "\red PREFIRE IS CALLED TO SHOOT AT [M] BY [user]" PreFire(M,user) ///Otherwise, shoot! return else return ..() //Pistolwhippin' +//Compute how to fire..... + proc/PreFire(atom/A as mob|obj|turf|area, mob/living/user as mob|obj, params) + //GraphicTrace(usr.x,usr.y,A.x,A.y,usr.z) + if(lock_time > world.time - 2) return //Lets not spam it. + if(!ismob(A)) //Didn't click someone, check if there is anyone along that guntrace +// var/mob/M = locate() in range(0,A) +// if(M && !ismob(A)) +// if(M.type == /mob) +// return FindTarget(M,user,params) + var/mob/M = GunTrace(usr.x,usr.y,A.x,A.y,usr.z,usr) //Find dat mob. + if(M && ismob(M) && isliving(M) && M in view(user)) + //if(!(M.client && M.client.admin_invis)) TODO: Look into admin invisibility in post-merge code + Aim(M) //Aha! Aim at them! + return + else if(!ismob(M) || (ismob(M) && !(M in view(user)))) //Nope! They weren't there! + world << "\red CLICKED BUT COULDN'T FIND MOB, FIRED" + Fire(A,user,params) //Fire like normal, then. + if(ismob(A) && isliving(A) && !(A in target)) + Aim(A) //Clicked a mob, aim at them. + else if(lock_time < world.time + 10) + world << "\red LOCK TIME IS > WORLD TIME, FIRED" + Fire(A,user,params) //Bang! + else if(!target) + world << "\red DIDN'T HAVE A TARGET, FIRED" + Fire(A,user,params) //Boom! + //else + //var/item/gun/G = usr.OHand + //if(!G) + //Fire(A,0) + //else if(istype(G)) + //G.Fire(A,3) + //Fire(A,2) + //else + //Fire(A) + // Stolen from sd_get_approx_dir, didn't want to reinclude + var/d=get_dir(usr,A) + var/dir_to_fire = d //Turn them to face their target. + if(d&d-1) // diagonal + var/ax=abs(usr.x-A.x) + var/ay=abs(usr.y-A.y) + if(ax>=ay<<1) dir_to_fire = d&12 // keep east/west (4 and 8) + else if(ay>=ax<<1) dir_to_fire = d&3 // keep north/south (1 and 2) + if(dir_to_fire != usr.dir) + usr.dir = dir_to_fire + proc/Fire(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, params, reflex = 0)//TODO: go over this //Exclude lasertag guns from the CLUMSY check. @@ -158,7 +219,7 @@ if(istype(user, /mob/living)) var/mob/living/M = user if ((CLUMSY in M.mutations) && prob(50)) - M << "\red The [src.name] blows up in your face." + M << "\red The [src.name] blows up in your face!" M.take_organ_damage(0,20) M.drop_item() del(src) @@ -251,8 +312,6 @@ usr.visible_message("\red [usr] turns \the [src] on [M]!") else usr.visible_message("\red [usr] aims \a [src] at [M]!") - for(var/mob/K in viewers(usr)) - K << 'TargetOn.ogg' M.Targeted(src) @@ -291,6 +350,8 @@ else if(ay>=ax<<1) dir_to_fire = d&3 // keep north/south (1 and 2) if(dir_to_fire != M.dir) M.dir = dir_to_fire + if (!firerate) // If firerate is set to lower aim after one shot, untarget the target + T.NotTargeted(src) afterattack(atom/A as mob|obj|turf|area, mob/living/user as mob|obj, flag, params) if(flag) return //we're placing gun on a table or in backpack @@ -300,50 +361,6 @@ else Fire(A,user,params) //Otherwise, fire normally. -//Compute how to fire..... - proc/PreFire(atom/A as mob|obj|turf|area, mob/living/user as mob|obj, params) - //GraphicTrace(usr.x,usr.y,A.x,A.y,usr.z) - if(lock_time > world.time - 2) return //Lets not spam it. - if(!ismob(A)) //Didn't click someone, check if there is anyone along that guntrace -// var/mob/M = locate() in range(0,A) -// if(M && !ismob(A)) -// if(M.type == /mob) -// return FindTarget(M,user,params) - var/mob/M = GunTrace(usr.x,usr.y,A.x,A.y,usr.z,usr) //Find dat mob. - if(M && ismob(M) && isliving(M) && M in view(user)) - //if(!(M.client && M.client.admin_invis)) TODO: Look into admin invisibility in post-merge code - Aim(M) //Aha! Aim at them! - return - else if(!ismob(M) || (ismob(M) && !(M in view(user)))) //Nope! They weren't there! - Fire(A,user,params) //Fire like normal, then. - if(ismob(A) && isliving(A) && !(A in target)) - Aim(A) //Clicked a mob, aim at them. - else if(lock_time < world.time + 10) - Fire(A,user,params) //Bang! - else if(!target) - Fire(A,user,params) //Boom! - //else - //var/item/gun/G = usr.OHand - //if(!G) - //Fire(A,0) - //else if(istype(G)) - //G.Fire(A,3) - //Fire(A,2) - //else - //Fire(A) - // Stolen from sd_get_approx_dir, didn't want to reinclude - var/d=get_dir(usr,A) - var/dir_to_fire = d //Turn them to face their target. - if(d&d-1) // diagonal - var/ax=abs(usr.x-A.x) - var/ay=abs(usr.y-A.y) - if(ax>=ay<<1) dir_to_fire = d&12 // keep east/west (4 and 8) - else if(ay>=ax<<1) dir_to_fire = d&3 // keep north/south (1 and 2) - if(dir_to_fire != usr.dir) - usr.dir = dir_to_fire - - - //Yay, math! #define SIGN(X) ((X<0)?-1:1) @@ -391,7 +408,7 @@ mob/var target_time = -100 last_move_intent = -100 last_target_click = -5 - obj/effect/target_locked/target_locked = null + target_locked = null mob/proc Targeted(var/obj/item/weapon/gun/I) //Self explanitory. @@ -399,12 +416,14 @@ mob/proc I.target = list(src) else if(I.automatic && I.target.len < 5) //Automatic weapon, they can hold down a room. I.target += src - else if(I.target.len >= 5) //Otherwise, they can just aim at one person. + else if(I.target.len >= 5) if(ismob(I.loc)) I.loc << "You can only target 5 people at once!" return else return + for(var/mob/K in viewers(usr)) + K << 'TargetOn.ogg' if(!targeted_by) targeted_by = list() targeted_by += I I.lock_time = world.time + 20 //Target has 2 second to realize they're targeted and stop (or target the opponent). @@ -414,20 +433,13 @@ mob/proc so try not to get on their bad side.\black ))" if(targeted_by.len == 1) spawn(0) - //target_locked = new /obj/effect/target_locked(src) //Add the overlay - //overlays += target_locked - spawn(0) //Make it show the 2 states properly - //if(target_locked) - // target_locked.icon_state = "locking" - //update_icons() - update_targeted() - //overlays += target_locked + target_locked = image("icon" = 'icons/effects/Targeted.dmi', "icon_state" = "locking") + overlays += target_locked + spawn(0) sleep(20) - //if(target_locked) - // target_locked.icon_state = "locked" - //update_icons() - update_targeted() - //overlays += target_locked + if(target_locked) + target_locked = image("icon" = 'icons/effects/Targeted.dmi', "icon_state" = "locked") + update_targeted() var/mob/T = I.loc //Adding the buttons to the controler person if(T) @@ -436,12 +448,15 @@ mob/proc if(T.client) T.client.screen += T.item_use_icon T.client.screen += T.gun_move_icon - if(m_intent == "run" && T.client && T.client.target_can_move == 1 && T.client.target_can_run == 0) + else //If the client's gone, stop aiming + I.lower_aim() + return + if(m_intent == "run" && T.client.target_can_move == 1 && T.client.target_can_run == 0) src << "\red Your move intent is now set to walk, as your targeter permits it." //Self explanitory. m_intent = "walk" hud_used.move_intent.icon_state = "walking" while(targeted_by && T.client) - if(last_move_intent > I.lock_time + 10 && !T.client.target_can_move) //If the target moved while targeted + if(last_move_intent > I.lock_time + 10 && !T.client.target_can_move) //If target moved when not allowed to I.TargetActed(src) if(I.last_moved_mob == src) //If they were the last ones to move, give them more of a grace period, so that an automatic weapon can hold down a room better. I.lock_time = world.time + 5 @@ -465,7 +480,7 @@ mob/proc if(!I.silenced) for(var/mob/M in viewers(src)) M << 'TargetOff.ogg' - //del(target_locked) //Remove the overlay + del(target_locked) //Remove the overlay targeted_by -= I I.target.Remove(src) //De-target them if(!I.target.len) @@ -475,8 +490,8 @@ mob/proc del(T.item_use_icon) del(T.gun_move_icon) del(T.gun_run_icon) - //if(!targeted_by.len) del targeted_by - spawn(1) /*update_icons()*/ update_targeted() + if(!targeted_by.len) del targeted_by + spawn(1) update_targeted() /* Captive(var/obj/item/weapon/gun/I) Sound(src,'CounterAttack.ogg') @@ -505,15 +520,15 @@ mob/proc //Used to overlay the awesome stuff -/obj/effect +///obj/effect // target_locking // icon = 'icons/effects/Targeted.dmi' // icon_state = "locking" // layer = 99 - target_locked - icon = 'icons/effects/Targeted.dmi' - icon_state = "locked" - layer = 17.9 +// target_locked +// icon = 'icons/effects/Targeted.dmi' +// icon_state = "locking" +// layer = 17.9 // captured // icon = 'Captured.dmi' // layer = 99 @@ -521,9 +536,13 @@ mob/proc //If you move out of range, it isn't going to still stay locked on you any more. client/var target_can_move = 0 + move_dir = 2 target_can_run = 0 + run_dir = 2 target_can_click = 0 + click_dir = 2 gun_mode = 0 + mode_dir = 1 mob/Move() . = ..() for(var/obj/item/weapon/gun/G in targeted_by) //Handle moving out of the gunner's view. @@ -541,14 +560,18 @@ client/verb //These are called by the on-screen buttons, adjusting what the victim can and cannot do. AllowTargetMove() set hidden=1 - spawn(1) target_can_move = !target_can_move + target_can_move = !target_can_move + if (move_dir == 2) + move_dir = 1 + else + move_dir = 2 if(!target_can_move) // winset(usr,"default.target_can_move","is-flat=true;border=sunken") usr << "Target may now walk." usr.gun_run_icon = new /obj/screen/gun/run(null) screen += usr.gun_run_icon if(usr.gun_move_icon) - usr.gun_move_icon.dir = 1 + usr.gun_move_icon.dir = move_dir usr.gun_move_icon.name = "Disallow Walking" else // winset(usr,"default.target_can_move","is-flat=false;border=none") @@ -556,7 +579,7 @@ client/verb target_can_run = 0 del(usr.gun_run_icon) if(usr.gun_move_icon) - usr.gun_move_icon.dir = 2 + usr.gun_move_icon.dir = move_dir usr.gun_move_icon.name = "Allow Walking" for(var/obj/item/weapon/gun/G in usr) G.lock_time = world.time + 5 @@ -573,18 +596,22 @@ client/verb M << "\red Your character will now be shot if they move." AllowTargetRun() set hidden=1 - spawn(1) target_can_run = !target_can_run + target_can_run = !target_can_run + if (run_dir == 2) + run_dir = 1 + else + run_dir = 2 if(!target_can_run) // winset(usr,"default.target_can_move","is-flat=true;border=sunken") usr << "Target may now run." if(usr.gun_run_icon) - usr.gun_run_icon.dir = 1 + usr.gun_run_con.dir = run_dir usr.gun_run_icon.name = "Disallow Running" else // winset(usr,"default.target_can_move","is-flat=false;border=none") usr << "Target may no longer run." if(usr.gun_run_icon) - usr.gun_run_icon.dir = 2 + usr.gun_run_icon.dir = run_dir usr.gun_run_icon.name = "Allow Running" for(var/obj/item/weapon/gun/G in src) G.lock_time = world.time + 5 @@ -596,18 +623,22 @@ client/verb M << "\red Your character will now be shot if they run." AllowTargetClick() set hidden=1 - spawn(1) target_can_click = !target_can_click + target_can_click = !target_can_click + if (click_dir == 2) + click_dir = 1 + else + click_dir = 2 if(!target_can_click) // winset(usr,"default.target_can_click","is-flat=true;border=sunken") usr << "Target may now use items." if(usr.item_use_icon) - usr.item_use_icon.dir = 1 + usr.item_use_icon.dir = click_dir usr.item_use_icon.name = "Disallow Item Use" else // winset(usr,"default.target_can_click","is-flat=false;border=none") usr << "Target may no longer use items." if(usr.item_use_icon) - usr.item_use_icon.dir = 2 + usr.item_use_icon.dir = click_dir usr.item_use_icon.name = "Allow Item Use" for(var/obj/item/weapon/gun/G in src) G.lock_time = world.time + 5 @@ -619,18 +650,28 @@ client/verb M << "\red Your character will now be shot if they use items." ToggleGunMode() + world << "\red [usr] called ToggleGuMode BEFORE:" + world << "gun_mode = [gun_mode]" + world << "mode_dir = [mode_dir]" + world << "[usr].gun_setting_icon.dir = [usr.gun_setting_icon.dir]" set hidden = 1 - spawn(1) gun_mode = !gun_mode - if(!gun_mode) + gun_mode = !gun_mode + if (mode_dir == 1) + mode_dir = 2 + else if (mode_dir == 2) + mode_dir = 1 + if(gun_mode) // winset(usr,"default.target_can_click","is-flat=true;border=sunken") usr << "You will now take people captive." - if(usr.gun_setting_icon) - usr.gun_setting_icon.dir = 2 else // winset(usr,"default.target_can_click","is-flat=false;border=none") usr << "You will now shoot where you target." - if(usr.gun_setting_icon) - usr.gun_setting_icon.dir = 1 + if(usr.gun_setting_icon) + usr.gun_setting_icon.dir = mode_dir + world << "\red AFTER:" + world << "gun_mode = [gun_mode]" + world << "mode_dir = [mode_dir]" + world << "[usr].gun_setting_icon.dir = [usr.gun_setting_icon.dir]" /obj/item/weapon/gun/proc/isHandgun() - return 1 \ No newline at end of file + return 1 diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index 70a21307644..aca91221415 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -7,6 +7,7 @@ caliber = "9mm" origin_tech = "combat=4;materials=2" ammo_type = "/obj/item/ammo_casing/c9mm" + automatic = 1 isHandgun() return 0 @@ -18,7 +19,7 @@ icon_state = "mini-uzi" w_class = 3.0 max_shells = 20 - caliber = ".45" + caliber = " .45" origin_tech = "combat=5;materials=2;syndicate=8" ammo_type = "/obj/item/ammo_casing/c45" diff --git a/icons/effects/Targeted.dmi b/icons/effects/Targeted.dmi index f0d4b95f64f9e147b6f549d70ff39674898bfb51..6d61505e6c5afdda88fc99f79fd81068bf350a11 100644 GIT binary patch delta 488 zcmaFL(!r|O8Q|y6%O%Cdz`(%k>ERLtqz?e`0v2W9b^rqdW4)(~V@O8h+v&b}hYSQ-=TBaiJ^SAp zZuN|*G73|R8p<56zij(0zmU&q({aW$!yQQ<_q85fzA@>HFc{^-nvd2v&1FZ@CA74wrnd1C*VYSi1yGmfYF0EG>P_TN^U|7eEwHM^(#*uPDG zuG~^_P_yO9X>%Q!o!?vK8xBAHxqP>JHACU~=m)mnGi~E5*lSX4EiOM<)VW$se6~a8 zrh{r-$~OHICOZ(Z0GAa(XTlroQ4kY_m=XiS^~P%O({>y`bR8Sgn2TLgeM!ik^Z Z{}}Y1MY?x|?E^&~gQu&X%Q~loCIA8b?G*q3 delta 453 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 Ef-H}7-~a#s delta 20930 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

ZCWn_ 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