diff --git a/code/defines/mob/mob.dm b/code/defines/mob/mob.dm index 4f67c079ec..bc772f9ffc 100644 --- a/code/defines/mob/mob.dm +++ b/code/defines/mob/mob.dm @@ -44,6 +44,7 @@ var/obj/screen/gun/item/item_use_icon = null var/obj/screen/gun/move/gun_move_icon = null var/obj/screen/gun/run/gun_run_icon = null + var/obj/screen/gun/mode/gun_setting_icon var/total_luminosity = 0 //This controls luminosity for mobs, when you pick up lights and such this is edited. If you want the mob to use lights it must update its lum in its life proc or such. Note clamp this value around 7 or such to prevent massive light lag. var/last_luminosity = 0 diff --git a/code/game/hud.dm b/code/game/hud.dm index 5f3e1e7c75..d265ec0d13 100644 --- a/code/game/hud.dm +++ b/code/game/hud.dm @@ -44,9 +44,10 @@ #define ui_inv3 "SOUTH-1,3" -#define ui_gun1 "WEST,NORTH" -#define ui_gun2 "WEST+1,NORTH" -#define ui_gun3 "WEST+2,NORTH" +#define ui_gun1 "SOUTH,8" +#define ui_gun2 "SOUTH,9" +#define ui_gun3 "SOUTH,10" +#define ui_gun_select "SOUTH-1,9" diff --git a/code/game/objects/closets.dm b/code/game/objects/closets.dm index 3f431081f9..d4ee7745cb 100644 --- a/code/game/objects/closets.dm +++ b/code/game/objects/closets.dm @@ -149,6 +149,8 @@ src.welded =! src.welded for(var/mob/M in viewers(src)) M.show_message("\red [src] has been [welded?"welded shut":"unwelded"] by [user.name].", 3, "\red You hear welding.", 2) + else if(istype(W,/obj/item/weapon/packageWrap)) + return else src.attack_hand(user) return diff --git a/code/game/objects/devices/PDA/PDA.dm b/code/game/objects/devices/PDA/PDA.dm index e8783ac589..17915b0c44 100755 --- a/code/game/objects/devices/PDA/PDA.dm +++ b/code/game/objects/devices/PDA/PDA.dm @@ -333,6 +333,7 @@ /obj/item/device/pda/Topic(href, href_list) ..() var/mob/living/U = usr + U.last_target_click = world.time //Looking for master was kind of pointless since PDAs don't appear to have one. if ((src in U.contents) || ( istype(loc, /turf) && in_range(src, U) ) ) if ( !(U.stat || U.restrained()) ) @@ -382,6 +383,8 @@ mode = 2 if("21")//Read messeges mode = 21 + if("41")//Read messeges + mode = 41 if("3")//Atmos scan mode = 3 if("4")//Redirects to hub diff --git a/code/modules/mob/living/carbon/alien/humanoid/hud.dm b/code/modules/mob/living/carbon/alien/humanoid/hud.dm index 608dd6464d..ec2a726538 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/hud.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/hud.dm @@ -291,6 +291,8 @@ mymob.rest.name = "rest" mymob.rest.screen_loc = ui_rest + mymob.gun_setting_icon = new /obj/screen/gun/mode(null) + mymob.zone_sel = new /obj/screen/zone_sel( null ) mymob.zone_sel.overlays = null @@ -298,6 +300,6 @@ mymob.client.screen = null - mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.toxin, mymob.fire, mymob.hands, mymob.healths, mymob.pullin, mymob.blind, mymob.flash, mymob.rest, mymob.sleep) //, mymob.mach ) + mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.toxin, mymob.fire, mymob.hands, mymob.healths, mymob.pullin, mymob.blind, mymob.flash, mymob.rest, mymob.sleep, mymob.gun_setting_icon) //, mymob.mach ) mymob.client.screen += src.adding + src.other diff --git a/code/modules/mob/living/carbon/human/hud.dm b/code/modules/mob/living/carbon/human/hud.dm index 632220c09b..0748588199 100644 --- a/code/modules/mob/living/carbon/human/hud.dm +++ b/code/modules/mob/living/carbon/human/hud.dm @@ -663,10 +663,12 @@ mymob.zone_sel.overlays = null mymob.zone_sel.overlays += image("icon" = 'zone_sel.dmi', "icon_state" = text("[]", mymob.zone_sel.selecting)) + mymob.gun_setting_icon = new /obj/screen/gun/mode(null) + mymob.client.screen = null //, mymob.i_select, mymob.m_select - mymob.client.screen += list( mymob.pain, mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.hands, mymob.healths, mymob.nutrition_icon, mymob.pullin, mymob.blind, mymob.flash, mymob.rest, mymob.sleep) //, mymob.mach ) + mymob.client.screen += list( mymob.pain, mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.hands, mymob.healths, mymob.nutrition_icon, mymob.pullin, mymob.blind, mymob.flash, mymob.rest, mymob.sleep, mymob.gun_setting_icon) //, mymob.mach ) mymob.client.screen += src.adding + src.other //if(istype(mymob,/mob/living/carbon/monkey)) mymob.client.screen += src.mon_blo diff --git a/code/modules/mob/living/carbon/monkey/hud.dm b/code/modules/mob/living/carbon/monkey/hud.dm index 645e93c2da..f41726cf1d 100644 --- a/code/modules/mob/living/carbon/monkey/hud.dm +++ b/code/modules/mob/living/carbon/monkey/hud.dm @@ -563,10 +563,12 @@ mymob.zone_sel.overlays = null mymob.zone_sel.overlays += image("icon" = 'zone_sel.dmi', "icon_state" = text("[]", mymob.zone_sel.selecting)) + mymob.gun_setting_icon = new /obj/screen/gun/mode(null) + mymob.client.screen = null //, mymob.i_select, mymob.m_select - mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.hands, mymob.healths, mymob.pullin, mymob.blind, mymob.flash, mymob.rest, mymob.sleep) //, mymob.mach ) + mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.hands, mymob.healths, mymob.pullin, mymob.blind, mymob.flash, mymob.rest, mymob.sleep, mymob.gun_setting_icon) //, mymob.mach ) mymob.client.screen += src.adding + src.other //if(istype(mymob,/mob/living/carbon/monkey)) mymob.client.screen += src.mon_blo diff --git a/code/modules/mob/living/silicon/robot/hud.dm b/code/modules/mob/living/silicon/robot/hud.dm index 0dbc0eda88..fb8c639719 100644 --- a/code/modules/mob/living/silicon/robot/hud.dm +++ b/code/modules/mob/living/silicon/robot/hud.dm @@ -242,9 +242,11 @@ mymob.zone_sel.overlays = null mymob.zone_sel.overlays += image("icon" = 'zone_sel.dmi', "icon_state" = text("[]", mymob.zone_sel.selecting)) + mymob.gun_setting_icon = new /obj/screen/gun/mode(null) + mymob.client.screen = null - mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.fire, mymob.hands, mymob.healths, mymob:cells, mymob.pullin, mymob.blind, mymob.flash, mymob.rest, mymob.sleep) //, mymob.mach ) + mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.fire, mymob.hands, mymob.healths, mymob:cells, mymob.pullin, mymob.blind, mymob.flash, mymob.rest, mymob.sleep, mymob.gun_setting_icon) //, mymob.mach ) mymob.client.screen += src.adding + src.other return diff --git a/code/modules/mob/screen.dm b/code/modules/mob/screen.dm index d1d0949704..dc5a633a1b 100644 --- a/code/modules/mob/screen.dm +++ b/code/modules/mob/screen.dm @@ -30,6 +30,7 @@ name = "gun" icon = 'screen1.dmi' master = null + dir = 1 move name = "Allow Walking" @@ -46,6 +47,12 @@ icon_state = "no_item" screen_loc = ui_gun1 + mode + name = "Toggle Gun Mode" + desc = "The shortcut key for this is \"F6\"" + icon_state = "gun" + screen_loc = ui_gun_select + /obj/screen/zone_sel/MouseDown(location, control,params) // Changes because of 4.0 var/list/PL = params2list(params) @@ -590,78 +597,75 @@ usr:module_active = null if("Allow Walking") - if(gun_click_time > world.time - 15) //give them 1.5 seconds between mode changes. - usr << "You need to wait some before you can change what they can do!" + if(gun_click_time > world.time - 30) //give them 3 seconds between mode changes. return if(!istype(usr.equipped(),/obj/item/weapon/gun)) usr << "You need your gun in your active hand to do that!" return usr.AllowTargetMove() - icon_state = "walking" + dir = (dir%2)+1 name = "Disallow Walking" gun_click_time = world.time if("Disallow Walking") - if(gun_click_time > world.time - 15) //give them 1.5 seconds between mode changes. - usr << "You need to wait some before you can change what they can do!" + if(gun_click_time > world.time - 30) //give them 3 seconds between mode changes. return if(!istype(usr.equipped(),/obj/item/weapon/gun)) usr << "You need your gun in your active hand to do that!" return usr.AllowTargetMove() - icon_state = "no_walk" + dir = (dir%2)+1 name = "Allow Walking" gun_click_time = world.time if("Allow Running") - if(gun_click_time > world.time - 15) //give them 1.5 seconds between mode changes. - usr << "You need to wait some before you can change what they can do!" + if(gun_click_time > world.time - 30) //give them 3 seconds between mode changes. return if(!istype(usr.equipped(),/obj/item/weapon/gun)) usr << "You need your gun in your active hand to do that!" return usr.AllowTargetRun() - icon_state = "running" + dir = (dir%2)+1 name = "Disallow Running" gun_click_time = world.time if("Disallow Running") - if(gun_click_time > world.time - 15) //give them 1.5 seconds between mode changes. - usr << "You need to wait some before you can change what they can do!" + if(gun_click_time > world.time - 30) //give them 3 seconds between mode changes. return if(!istype(usr.equipped(),/obj/item/weapon/gun)) usr << "You need your gun in your active hand to do that!" return usr.AllowTargetRun() - icon_state = "no_run" + dir = (dir%2)+1 name = "Allow Running" gun_click_time = world.time if("Allow Item Use") - if(gun_click_time > world.time - 15) //give them 1.5 seconds between mode changes. - usr << "You need to wait some before you can change what they can do!" + if(gun_click_time > world.time - 30) //give them 3 seconds between mode changes. return if(!istype(usr.equipped(),/obj/item/weapon/gun)) usr << "You need your gun in your active hand to do that!" return name = "Disallow Item Use" - icon_state = "act_throw_off" + dir = (dir%2)+1 usr.AllowTargetClick() gun_click_time = world.time if("Disallow Item Use") - if(gun_click_time > world.time - 15) //give them 1.5 seconds between mode changes. - usr << "You need to wait some before you can change what they can do!" + if(gun_click_time > world.time - 30) //give them 3 seconds between mode changes. return if(!istype(usr.equipped(),/obj/item/weapon/gun)) usr << "You need your gun in your active hand to do that!" return name = "Allow Item Use" - icon_state = "no_item" + dir = (dir%2)+1 usr.AllowTargetClick() gun_click_time = world.time + if("Toggle Gun Mode") + usr.ToggleGunMode() + else DblClick() return diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index bbd3cf4586..0ae8a0c0a3 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -190,42 +190,43 @@ 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 if(istype(target, /obj/machinery/recharger) && istype(src, /obj/item/weapon/gun/energy)) return//Shouldnt flag take care of this? - PreFire(A,user,params) + if(user && user.gun_mode) + PreFire(A,user,params) + else + Fire(A,user,params) //Compute how to fire..... proc/PreFire(atom/A as mob|obj|turf|area, mob/living/user as mob|obj, params) - if(usr.a_intent in list("help","grab","disarm")) - //GraphicTrace(usr.x,usr.y,A.x,A.y,usr.z) - if(lock_time > world.time - 2) return - if(!ismob(A)) + //GraphicTrace(usr.x,usr.y,A.x,A.y,usr.z) + if(lock_time > world.time - 2) return + if(!ismob(A)) // 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) - if(M && ismob(M) && !target) - Aim(M) - return - if(ismob(A) && target != A) - Aim(A) - else if(lock_time < world.time + 10) - Fire(A,user,params) - else if(!target) - Fire(A,user,params) + var/mob/M = GunTrace(usr.x,usr.y,A.x,A.y,usr.z,usr) + if(M && ismob(M) && !target && !M.client.admin_invis) + Aim(M) + return + if(ismob(A) && target != A) + Aim(A) + else if(lock_time < world.time + 10) + Fire(A,user,params) + else if(!target) + Fire(A,user,params) + //else + //var/item/gun/G = usr.OHand + //if(!G) + //Fire(A,0) + //else if(istype(G)) + //G.Fire(A,3) + //Fire(A,2) //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) - var/dir_to_fire = sd_get_approx_dir(usr,A) - if(dir_to_fire != usr.dir) - usr.dir = dir_to_fire - else - Fire(A, user) + //Fire(A) + var/dir_to_fire = sd_get_approx_dir(usr,A) + if(dir_to_fire != usr.dir) + usr.dir = dir_to_fire + //Yay, math! @@ -372,6 +373,7 @@ mob/var target_can_move = 0 target_can_run = 0 target_can_click = 0 + gun_mode = 0 mob/Move() . = ..() for(var/obj/item/weapon/gun/G in targeted_by) @@ -438,4 +440,16 @@ mob/verb if(!target_can_click) G.target << "Your character may now use items at the discretion of their targeter." else - G.target << "\red Your character will now be shot if they use items." \ No newline at end of file + G.target << "\red Your character will now be shot if they use items." + + ToggleGunMode() + set hidden = 1 + spawn(1) gun_mode = !gun_mode + if(!gun_mode) +// winset(usr,"default.target_can_click","is-flat=true;border=sunken") + usr << "You will now take people captive." + 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 = (usr.gun_setting_icon.dir%2)+1 \ No newline at end of file diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 821179b957..ef37ca12b9 100755 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -172,7 +172,7 @@ afterattack(var/obj/target as obj, mob/user as mob) - if(istype(target, /obj/structure/table) || istype(target, /obj/structure/rack)) + if(istype(target, /obj/structure/table) || istype(target, /obj/structure/rack) || istype(target,/obj/item/smallDelivery)) return if(target.anchored) return @@ -193,17 +193,16 @@ src.amount -= 1 else if (istype(target, /obj/structure/closet/crate)) var/obj/structure/closet/crate/O = target - if (src.amount > 3) + if (src.amount > 3 && !O.opened) var/obj/structure/bigDelivery/P = new /obj/structure/bigDelivery(get_turf(O.loc)) P.wrapped = O O.loc = P src.amount -= 3 - else + else if(src.amount > 3) user << "\blue You need more paper." else if (istype (target, /obj/structure/closet)) var/obj/structure/closet/O = target - if (src.amount > 3) - O.close() + if (src.amount > 3 && !O.opened) var/obj/structure/bigDelivery/P = new /obj/structure/bigDelivery(get_turf(O.loc)) P.wrapped = O P.waswelded = O.welded @@ -211,7 +210,7 @@ O.welded = 1 O.loc = P src.amount -= 3 - else + else if(src.amount > 3) user << "\blue You need more paper." else user << "\blue The object you are trying to wrap is unsuitable for the sorting machinery!" diff --git a/icons/mob/screen1.dmi b/icons/mob/screen1.dmi index 3b56a6cd6c..16e6b814c3 100644 Binary files a/icons/mob/screen1.dmi and b/icons/mob/screen1.dmi differ diff --git a/icons/mob/screen1_old.dmi b/icons/mob/screen1_old.dmi index c214d6441d..1918ebce9f 100644 Binary files a/icons/mob/screen1_old.dmi and b/icons/mob/screen1_old.dmi differ diff --git a/icons/mob/screen1_robot.dmi b/icons/mob/screen1_robot.dmi index da10c176b4..636a720842 100644 Binary files a/icons/mob/screen1_robot.dmi and b/icons/mob/screen1_robot.dmi differ diff --git a/interface/skin.dmf b/interface/skin.dmf index adab69791f..61d3bdec5b 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -131,13 +131,21 @@ macro "macro" name = "F3" command = "say" is-disabled = false + elem + name = "F4" + command = "me" + is-disabled = false elem name = "F5" command = "asay" is-disabled = false + elem + name = "F6" + command = "ToggleGunMode" + is-disabled = false macro "tcside" - + macro "vending" elem name = "NORTHEAST" @@ -292,6 +300,7 @@ menu "menu" is-disabled = false saved-params = "is-checked" + window "Telecomms IDE" elem "Telecomms IDE" type = MAIN