From b85d2ea321af494a3db201f18de9efce75d6144a Mon Sep 17 00:00:00 2001 From: LetterJay Date: Tue, 23 May 2017 06:10:40 -0500 Subject: [PATCH] Syncs all gang related PRs with upstream --- code/_onclick/autoclick.dm | 2 +- code/game/gamemodes/gang/gang.dm | 1 + code/game/gamemodes/gang/gang_datum.dm | 30 ++- code/game/gamemodes/gang/gang_items.dm | 55 ++++- code/game/gamemodes/gang/gang_pen.dm | 2 +- code/game/gamemodes/gang/recaller.dm | 1 + .../machinery/porta_turret/portable_turret.dm | 191 ++++++++++++++++-- .../boxes_magazines/external_mag.dm | 15 ++ .../projectiles/guns/ballistic/automatic.dm | 21 ++ .../projectiles/guns/ballistic/revolver.dm | 9 + icons/obj/turrets.dmi | Bin 79770 -> 82904 bytes 11 files changed, 299 insertions(+), 28 deletions(-) diff --git a/code/_onclick/autoclick.dm b/code/_onclick/autoclick.dm index 1ceeb182ed..7b6e2f108a 100644 --- a/code/_onclick/autoclick.dm +++ b/code/_onclick/autoclick.dm @@ -14,7 +14,7 @@ selected_target[1] = null /client/MouseDrag(src_object,atom/over_object,src_location,over_location,src_control,over_control,params) - if(selected_target[1] && over_object.IsAutoclickable()) + if(selected_target[1] && over_object && over_object.IsAutoclickable()) selected_target[1] = over_object selected_target[2] = params diff --git a/code/game/gamemodes/gang/gang.dm b/code/game/gamemodes/gang/gang.dm index ca51e20cc6..bb4bf455dc 100644 --- a/code/game/gamemodes/gang/gang.dm +++ b/code/game/gamemodes/gang/gang.dm @@ -332,3 +332,4 @@ GLOBAL_LIST_INIT(gang_outfit_pool, list(/obj/item/clothing/suit/jacket/leather,/ SSticker.station_explosion_cinematic(1,"gang war", null) SSticker.mode.explosion_in_progress = 0 SSticker.force_ending = TRUE + diff --git a/code/game/gamemodes/gang/gang_datum.dm b/code/game/gamemodes/gang/gang_datum.dm index 075309b9d3..0ff9ef4f2d 100644 --- a/code/game/gamemodes/gang/gang_datum.dm +++ b/code/game/gamemodes/gang/gang_datum.dm @@ -28,6 +28,7 @@ var/static/list/boss_items = list( /datum/gang_item/function/gang_ping, /datum/gang_item/function/recall, + /datum/gang_item/clothing/under, /datum/gang_item/clothing/suit, /datum/gang_item/clothing/hat, @@ -36,21 +37,29 @@ /datum/gang_item/clothing/mask, /datum/gang_item/clothing/hands, /datum/gang_item/clothing/belt, + /datum/gang_item/weapon/shuriken, /datum/gang_item/weapon/switchblade, + /datum/gang_item/weapon/improvised, + /datum/gang_item/weapon/ammo/improvised_ammo, + /datum/gang_item/weapon/surplus, + /datum/gang_item/weapon/ammo/surplus_ammo, /datum/gang_item/weapon/pistol, /datum/gang_item/weapon/ammo/pistol_ammo, /datum/gang_item/weapon/sniper, /datum/gang_item/weapon/ammo/sniper_ammo, + /datum/gang_item/weapon/machinegun, /datum/gang_item/weapon/uzi, /datum/gang_item/weapon/ammo/uzi_ammo, /datum/gang_item/equipment/sharpener, /datum/gang_item/equipment/spraycan, - /datum/gang_item/equipment/c4, + /datum/gang_item/equipment/sharpener, /datum/gang_item/equipment/emp, + /datum/gang_item/equipment/c4, /datum/gang_item/equipment/frag, - /datum/gang_item/equipment/implant_breaker, /datum/gang_item/equipment/stimpack, + /datum/gang_item/equipment/implant_breaker, + /datum/gang_item/equipment/wetwork_boots, /datum/gang_item/equipment/pen, /datum/gang_item/equipment/dominator ) @@ -66,21 +75,29 @@ /datum/gang_item/clothing/mask, /datum/gang_item/clothing/hands, /datum/gang_item/clothing/belt, - /datum/gang_item/weapon/shuriken, + + /datum/gang_item/weapon/shuriken, /datum/gang_item/weapon/switchblade, + /datum/gang_item/weapon/improvised, + /datum/gang_item/weapon/ammo/improvised_ammo, + /datum/gang_item/weapon/surplus, + /datum/gang_item/weapon/ammo/surplus_ammo, /datum/gang_item/weapon/pistol, /datum/gang_item/weapon/ammo/pistol_ammo, /datum/gang_item/weapon/sniper, /datum/gang_item/weapon/ammo/sniper_ammo, + /datum/gang_item/weapon/machinegun, /datum/gang_item/weapon/uzi, /datum/gang_item/weapon/ammo/uzi_ammo, /datum/gang_item/equipment/sharpener, /datum/gang_item/equipment/spraycan, - /datum/gang_item/equipment/c4, + /datum/gang_item/equipment/sharpener, /datum/gang_item/equipment/emp, + /datum/gang_item/equipment/c4, /datum/gang_item/equipment/frag, - /datum/gang_item/equipment/implant_breaker, /datum/gang_item/equipment/stimpack, + /datum/gang_item/equipment/implant_breaker, + /datum/gang_item/equipment/wetwork_boots, ) /datum/gang/New(loc,gangname) @@ -165,7 +182,6 @@ var/diff = domination_timer - world.time return diff / 10 - //////////////////////////////////////////// MESSAGING @@ -283,4 +299,4 @@ ganghud = new() /datum/gang/multiverse/income() - return \ No newline at end of file + return diff --git a/code/game/gamemodes/gang/gang_items.dm b/code/game/gamemodes/gang/gang_items.dm index b5237040f1..aec9b040cd 100644 --- a/code/game/gamemodes/gang/gang_items.dm +++ b/code/game/gamemodes/gang/gang_items.dm @@ -199,10 +199,34 @@ cost = 5 item_path = /obj/item/weapon/switchblade +/datum/gang_item/weapon/surplus + name = "Surplus Rifle" + id = "surplus" + cost = 8 + item_path = /obj/item/weapon/gun/ballistic/automatic/surplus + +/datum/gang_item/weapon/ammo/surplus_ammo + name = "Surplus Rifle Ammo" + id = "surplus_ammo" + cost = 5 + item_path = /obj/item/ammo_box/magazine/m10mm/rifle + +/datum/gang_item/weapon/improvised + name = "Sawn-Off Improvised Shotgun" + id = "sawn" + cost = 6 + item_path = /obj/item/weapon/gun/ballistic/revolver/doublebarrel/improvised/sawn + +/datum/gang_item/weapon/ammo/improvised_ammo + name = "Box of Buckshot" + id = "buckshot" + cost = 5 + item_path = /obj/item/weapon/storage/box/lethalshot + /datum/gang_item/weapon/pistol name = "10mm Pistol" id = "pistol" - cost = 25 + cost = 30 item_path = /obj/item/weapon/gun/ballistic/automatic/pistol /datum/gang_item/weapon/ammo/pistol_ammo @@ -223,12 +247,19 @@ cost = 15 item_path = /obj/item/ammo_box/magazine/sniper_rounds +/datum/gang_item/weapon/machinegun + name = "Mounted Machine Gun" + id = "MG" + cost = 50 + item_path = /obj/machinery/manned_turret + spawn_msg = "The mounted machine gun features enhanced responsiveness. Hold down on the trigger while firing to control where you're shooting." + /datum/gang_item/weapon/uzi name = "Uzi SMG" id = "uzi" cost = 60 item_path = /obj/item/weapon/gun/ballistic/automatic/mini_uzi - id = "uzi" + /datum/gang_item/weapon/ammo/uzi_ammo name = "Uzi Ammo" @@ -236,8 +267,6 @@ cost = 40 item_path = /obj/item/ammo_box/magazine/uzim9mm - - /////////////////// //EQUIPMENT /////////////////// @@ -274,13 +303,13 @@ /datum/gang_item/equipment/frag name = "Fragmentation Grenade" id = "frag nade" - cost = 10 + cost = 18 item_path = /obj/item/weapon/grenade/syndieminibomb/concussion/frag /datum/gang_item/equipment/stimpack name = "Black Market Stimulants" id = "stimpack" - cost = 15 + cost = 12 item_path = /obj/item/weapon/reagent_containers/syringe/stimulants /datum/gang_item/equipment/implant_breaker @@ -297,6 +326,18 @@ if(spawn_msg) to_chat(user, spawn_msg) +/datum/gang_item/equipment/wetwork_boots + name = "Wetwork boots" + id = "wetwork" + cost = 20 + item_path = /obj/item/clothing/shoes/combat/gang + +/obj/item/clothing/shoes/combat/gang + name = "Wetwork boots" + desc = "A gang's best hitmen are prepared for anything." + permeability_coefficient = 0.01 + flags = NOSLIP + /datum/gang_item/equipment/pen name = "Recruitment Pen" id = "pen" @@ -390,4 +431,4 @@ return ..() /datum/gang_item/equipment/dominator/spawn_item(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - new item_path(user.loc) \ No newline at end of file + new item_path(user.loc) diff --git a/code/game/gamemodes/gang/gang_pen.dm b/code/game/gamemodes/gang/gang_pen.dm index 01b8504e82..d60a3cb57b 100644 --- a/code/game/gamemodes/gang/gang_pen.dm +++ b/code/game/gamemodes/gang/gang_pen.dm @@ -66,4 +66,4 @@ cooldown = 0 icon_state = "pen" var/mob/M = get(src, /mob) - to_chat(M, "\icon[src] [src][(src.loc == M)?(""):(" in your [src.loc]")] vibrates softly. It is ready to be used again.") \ No newline at end of file + to_chat(M, "\icon[src] [src][(src.loc == M)?(""):(" in your [src.loc]")] vibrates softly. It is ready to be used again.") diff --git a/code/game/gamemodes/gang/recaller.dm b/code/game/gamemodes/gang/recaller.dm index c9fcf3c074..ad2da7b502 100644 --- a/code/game/gamemodes/gang/recaller.dm +++ b/code/game/gamemodes/gang/recaller.dm @@ -240,6 +240,7 @@ /obj/item/device/gangtool/spare/lt promotable = 1 + ///////////// Internal tool used by gang regulars /////////// /obj/item/device/gangtool/soldier diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index 6bab77fd6f..ae9d485447 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -1,9 +1,9 @@ #define TURRET_STUN 0 #define TURRET_LETHAL 1 -#define POPUP_ANIM_TIME 5 -#define POPDOWN_ANIM_TIME 5 //Be sure to change the icon animation at the same time or it'll look bad - +#define POPUP_ANIM_TIME 5 +#define POPDOWN_ANIM_TIME 5 //Be sure to change the icon animation at the same time or it'll look bad + /obj/machinery/porta_turret name = "turret" icon = 'icons/obj/turrets.dmi' @@ -87,9 +87,9 @@ if(has_cover) cover = new /obj/machinery/porta_turret_cover(loc) cover.parent_turret = src - underlays += image('icons/obj/turrets.dmi',icon_state = "basedark") + underlays += image('icons/obj/turrets.dmi',icon_state = "basedark") if(!has_cover) - INVOKE_ASYNC(src, .proc/popUp) + INVOKE_ASYNC(src, .proc/popUp) /obj/machinery/porta_turret/update_icon() cut_overlays() @@ -368,10 +368,10 @@ var/list/targets = list() var/turretview = view(scan_range, base) for(var/A in turretview) - var/atom/AA = A - if(AA.invisibility>SEE_INVISIBLE_LIVING) - continue - + var/atom/AA = A + if(AA.invisibility>SEE_INVISIBLE_LIVING) + continue + if(check_anomalies)//if it's set to check for simple animals if(istype(A, /mob/living/simple_animal)) var/mob/living/simple_animal/SA = A @@ -426,7 +426,7 @@ raising = 1 if(cover) flick("popup", cover) - sleep(POPUP_ANIM_TIME) + sleep(POPUP_ANIM_TIME) raising = 0 if(cover) cover.icon_state = "openTurretCover" @@ -442,7 +442,7 @@ raising = 1 if(cover) flick("popdown", cover) - sleep(POPDOWN_ANIM_TIME) + sleep(POPDOWN_ANIM_TIME) raising = 0 if(cover) cover.icon_state = "turretCover" @@ -792,7 +792,7 @@ /obj/item/wallframe/turret_control name = "turret control frame" desc = "Used for building turret control panels" - icon_state = "apc" + icon_state = "apc" result_path = /obj/machinery/turretid materials = list(MAT_METAL=MINERAL_MATERIAL_AMOUNT) @@ -921,3 +921,170 @@ on = 0 spawn(100) on = 1 + +/////// MANNED TURRET //////// + +/obj/machinery/manned_turret + name = "machine gun turret" + desc = "While the trigger is held down, this gun will redistribute recoil to allow its user to easily shift targets." + icon = 'icons/obj/turrets.dmi' + icon_state = "machinegun" + can_buckle = TRUE + density = TRUE + max_integrity = 100 + obj_integrity = 100 + buckle_lying = 0 + layer = ABOVE_MOB_LAYER + var/view_range = 10 + var/cooldown = 0 + var/projectile_type = /obj/item/projectile/bullet/weakbullet3 + var/rate_of_fire = 1 + var/number_of_shots = 40 + var/cooldown_duration = 90 + var/atom/target + var/turf/target_turf + var/warned = FALSE + +//BUCKLE HOOKS + +/obj/machinery/manned_turret/unbuckle_mob(mob/living/buckled_mob,force = 0) + playsound(src,'sound/mecha/mechmove01.ogg', 50, 1) + for(var/obj/item/I in buckled_mob.held_items) + if(istype(I, /obj/item/gun_control)) + qdel(I) + if(istype(buckled_mob)) + buckled_mob.pixel_x = 0 + buckled_mob.pixel_y = 0 + if(buckled_mob.client) + buckled_mob.client.change_view(world.view) + anchored = FALSE + . = ..() + +/obj/machinery/manned_turret/user_buckle_mob(mob/living/M, mob/living/carbon/user) + if(user.incapacitated() || !istype(user)) + return + M.forceMove(get_turf(src)) + ..() + for(var/V in M.held_items) + var/obj/item/I = V + if(istype(I)) + if(M.dropItemToGround(I)) + var/obj/item/gun_control/TC = new /obj/item/gun_control(src) + M.put_in_hands(TC) + else //Entries in the list should only ever be items or null, so if it's not an item, we can assume it's an empty hand + var/obj/item/gun_control/TC = new /obj/item/gun_control(src) + M.put_in_hands(TC) + M.pixel_y = 14 + layer = ABOVE_MOB_LAYER + setDir(SOUTH) + playsound(src,'sound/mecha/mechmove01.ogg', 50, 1) + anchored = TRUE + if(user.client) + user.client.change_view(view_range) + +/obj/item/gun_control + name = "turret controls" + icon = 'icons/obj/weapons.dmi' + icon_state = "offhand" + w_class = WEIGHT_CLASS_HUGE + flags = ABSTRACT | NODROP + resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF | NOBLUDGEON + var/obj/machinery/manned_turret/turret + +/obj/item/gun_control/New(obj/machinery/manned_turret/MT) + if(MT) + turret = MT + else + qdel(src) + +/obj/item/gun_control/CanItemAutoclick() + return 1 + +/obj/item/gun_control/afterattack(atom/targeted_atom, mob/user) + ..() + var/obj/machinery/manned_turret/E = user.buckled + E.setDir(get_dir(E,targeted_atom)) + user.setDir(E.dir) + switch(E.dir) + if(NORTH) + E.layer = BELOW_MOB_LAYER + user.pixel_x = 0 + user.pixel_y = -14 + if(NORTHEAST) + E.layer = BELOW_MOB_LAYER + user.pixel_x = -8 + user.pixel_y = -4 + if(EAST) + E.layer = ABOVE_MOB_LAYER + user.pixel_x = -14 + user.pixel_y = 0 + if(SOUTHEAST) + E.layer = BELOW_MOB_LAYER + user.pixel_x = -8 + user.pixel_y = 4 + if(SOUTH) + E.layer = ABOVE_MOB_LAYER + user.pixel_x = 0 + user.pixel_y = 14 + if(SOUTHWEST) + E.layer = BELOW_MOB_LAYER + user.pixel_x = 8 + user.pixel_y = 4 + if(WEST) + E.layer = ABOVE_MOB_LAYER + user.pixel_x = 14 + user.pixel_y = 0 + if(NORTHWEST) + E.layer = BELOW_MOB_LAYER + user.pixel_x = 8 + user.pixel_y = -4 + E.checkfire(targeted_atom, user) + +/obj/machinery/manned_turret/proc/checkfire(atom/targeted_atom, mob/user) + target = targeted_atom + if(target == user || target == get_turf(src)) + return + if(world.time < cooldown) + if(!warned && world.time > (cooldown - cooldown_duration + rate_of_fire*number_of_shots)) // To capture the window where one is done firing + warned = TRUE + playsound(src, 'sound/weapons/sear.ogg', 100, 1) + return + else + cooldown = world.time + cooldown_duration + warned = FALSE + INVOKE_ASYNC(src, /obj/machinery/manned_turret/.proc/volley) + +/obj/machinery/manned_turret/proc/volley() + target_turf = get_turf(target) + for(var/i in 1 to number_of_shots) + addtimer(CALLBACK(src, /obj/machinery/manned_turret/.proc/fire_helper), i*rate_of_fire) + + +/obj/machinery/manned_turret/proc/fire_helper() + if(!src) + return + var/turf/targets_from = get_turf(src) + if(QDELETED(target)) + target = target_turf + var/obj/item/projectile/P = new projectile_type(targets_from) + P.current = targets_from + P.starting = targets_from + P.firer = src + P.original = target + playsound(src, 'sound/weapons/Gunshot_smg.ogg', 75, 1) + P.yo = target.y - targets_from.y + rand(-1,1) + P.xo = target.x - targets_from.x + rand(-1,1) + P.fire() + +/obj/machinery/manned_turret/ultimate // Admin-only proof of concept for autoclicker automatics + name = "Infinity Gun" + view_range = 12 + projectile_type = /obj/item/projectile/bullet/weakbullet3 + + +/obj/machinery/manned_turret/ultimate/checkfire(atom/targeted_atom, mob/user) + target = targeted_atom + if(target == user || target == get_turf(src)) + return + target_turf = get_turf(target) + fire_helper(target_turf) diff --git a/code/modules/projectiles/boxes_magazines/external_mag.dm b/code/modules/projectiles/boxes_magazines/external_mag.dm index 11112ec974..72cbc25f12 100644 --- a/code/modules/projectiles/boxes_magazines/external_mag.dm +++ b/code/modules/projectiles/boxes_magazines/external_mag.dm @@ -13,6 +13,21 @@ max_ammo = 8 multiple_sprites = 2 +/obj/item/ammo_box/magazine/m10mm/rifle + name = "rifle magazine (10mm)" + desc = "A well-worn magazine fitted for the surplus rifle." + icon_state = "75-8" + origin_tech = "combat=2" + ammo_type = /obj/item/ammo_casing/c10mm + caliber = "10mm" + max_ammo = 10 + +/obj/item/ammo_box/magazine/m10mm/rifle/update_icon() + if(ammo_count()) + icon_state = "75-8" + else + icon_state = "75-0" + /obj/item/ammo_box/magazine/m10mm/fire name = "pistol magazine (10mm incendiary)" desc = "A gun magazine. Loaded with rounds which ignite the target." diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm index 1ffdaf0d29..0235bbe84d 100644 --- a/code/modules/projectiles/guns/ballistic/automatic.dm +++ b/code/modules/projectiles/guns/ballistic/automatic.dm @@ -375,8 +375,29 @@ pin = /obj/item/device/firing_pin/implant/pindicate origin_tech = "combat=7;syndicate=6" +// Old Semi-Auto Rifle // +/obj/item/weapon/gun/ballistic/automatic/surplus + name = "Surplus Rifle" + desc = "One of countless obsolete ballistic rifles that still sees use as a cheap deterrent. Uses 10mm ammo and its bulky frame prevents one-hand firing." + origin_tech = "combat=3;materials=2" + icon_state = "surplus" + item_state = "moistnugget" + weapon_weight = WEAPON_HEAVY + mag_type = /obj/item/ammo_box/magazine/m10mm/rifle + fire_delay = 30 + burst_size = 1 + can_unsuppress = 1 + can_suppress = 1 + w_class = WEIGHT_CLASS_HUGE + slot_flags = SLOT_BACK + actions_types = list() +/obj/item/weapon/gun/ballistic/automatic/surplus/update_icon() + if(magazine) + icon_state = "surplus" + else + icon_state = "surplus-e" // Laser rifle (rechargeable magazine) // diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index 6ce52748ec..ac3c56b88a 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -344,6 +344,15 @@ slung = 0 update_icon() +/obj/item/weapon/gun/ballistic/revolver/doublebarrel/improvised/sawn + name = "sawn-off improvised shotgun" + desc = "A single-shot shotgun, better not miss" + icon_state = "ishotgun" + item_state = "gun" + w_class = WEIGHT_CLASS_NORMAL + sawn_state = SAWN_OFF + slot_flags = SLOT_BELT + /obj/item/weapon/gun/ballistic/revolver/reverse //Fires directly at its user... unless the user is a clown, of course. clumsy_check = 0 diff --git a/icons/obj/turrets.dmi b/icons/obj/turrets.dmi index c4077b660169e9b9413c2921f486b116baa11cc8..b186c3f224ff9b3c645e5ce823b082d0883351e9 100644 GIT binary patch delta 12512 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 RH~;~!R|;?B%VkYN{|B?u-KGEl