/datum/gang_item var/name var/item_path var/cost var/spawn_msg var/category var/id /datum/gang_item/proc/purchase(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool, check_canbuy = TRUE) if(check_canbuy && !can_buy(user, gang, gangtool)) return FALSE var/real_cost = get_cost(user, gang, gangtool) gang.adjust_influence(user.mind, -real_cost) spawn_item(user, gang, gangtool) return TRUE /datum/gang_item/proc/spawn_item(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) if(item_path) var/obj/item/O = new item_path(user.loc) user.put_in_hands(O) if(spawn_msg) to_chat(user, spawn_msg) /datum/gang_item/proc/can_buy(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) return gang && (gang.get_influence(user.mind) >= get_cost(user, gang, gangtool)) && can_see(user, gang, gangtool) /datum/gang_item/proc/can_see(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) return TRUE /datum/gang_item/proc/get_cost(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) return cost /datum/gang_item/proc/get_cost_display(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) return "([get_cost(user, gang, gangtool)] Influence)" /datum/gang_item/proc/get_name_display(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) return name /datum/gang_item/proc/isboss(mob/living/carbon/user, datum/gang/gang) return user && gang && (user.mind == gang.bosses[1]) /datum/gang_item/proc/get_extra_info(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) return /////////////////// //FUNCTIONS /////////////////// /datum/gang_item/function category = "Gangtool Functions:" cost = 0 /datum/gang_item/function/get_cost_display(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) return "" /datum/gang_item/function/gang_ping name = "Send Message to Gang" id = "gang_ping" /datum/gang_item/function/gang_ping/spawn_item(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) if(gangtool) gangtool.ping_gang(user) /datum/gang_item/function/recall name = "Recall Emergency Shuttle" id = "recall" /datum/gang_item/function/recall/can_see(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) return isboss(user, gang) /datum/gang_item/function/recall/spawn_item(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) if(gangtool) gangtool.recall(user) /////////////////// //CLOTHING /////////////////// /datum/gang_item/clothing category = "Purchase Influence-Enhancing Clothes:" /datum/gang_item/clothing/under name = "Gang Uniform" id = "under" cost = 1 /datum/gang_item/clothing/under/spawn_item(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) if(gang.inner_outfit) var/obj/item/O = new gang.inner_outfit(user.loc) user.put_in_hands(O) to_chat(user, " This is your gang's official uniform, wearing it will increase your influence") /datum/gang_item/clothing/suit name = "Gang Armored Outerwear" id = "suit" cost = 1 /datum/gang_item/clothing/suit/spawn_item(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) if(gang.outer_outfit) var/obj/item/O = new gang.outer_outfit(user.loc) O.armor = list(melee = 20, bullet = 35, laser = 10, energy = 10, bomb = 30, bio = 0, rad = 0, fire = 30, acid = 30) O.desc += " Tailored for the [gang.name] Gang to offer the wearer moderate protection against ballistics and physical trauma." user.put_in_hands(O) to_chat(user, " This is your gang's official outerwear, wearing it will increase your influence") /datum/gang_item/clothing/hat name = "Pimp Hat" id = "hat" cost = 16 item_path = /obj/item/clothing/head/collectable/petehat/gang /obj/item/clothing/head/collectable/petehat/gang name = "pimpin' hat" desc = "The undisputed king of style." /obj/item/clothing/head/collectable/petehat/gang/gang_contraband_value() return 4 /datum/gang_item/clothing/mask name = "Golden Death Mask" id = "mask" cost = 18 item_path = /obj/item/clothing/mask/gskull /obj/item/clothing/mask/gskull name = "golden death mask" icon_state = "gskull" desc = "Strike terror, and envy, into the hearts of your enemies." /obj/item/clothing/mask/gskull/gang_contraband_value() return 5 /datum/gang_item/clothing/shoes name = "Bling Boots" id = "boots" cost = 22 item_path = /obj/item/clothing/shoes/gang /obj/item/clothing/shoes/gang name = "blinged-out boots" desc = "Stand aside peasants." icon_state = "bling" /obj/item/clothing/shoes/gang/gang_contraband_value() return 6 /datum/gang_item/clothing/neck name = "Gold Necklace" id = "necklace" cost = 9 item_path = /obj/item/clothing/neck/necklace/dope /datum/gang_item/clothing/hands name = "Decorative Brass Knuckles" id = "hand" cost = 11 item_path = /obj/item/clothing/gloves/gang /obj/item/clothing/gloves/gang name = "braggadocio's brass knuckles" desc = "Purely decorative, don't find out the hard way." icon_state = "knuckles" w_class = 3 /obj/item/clothing/gloves/gang/gang_contraband_value() return 3 /datum/gang_item/clothing/belt name = "Badass Belt" id = "belt" cost = 13 item_path = /obj/item/storage/belt/military/gang /obj/item/storage/belt/military/gang name = "badass belt" icon_state = "gangbelt" item_state = "gang" desc = "The belt buckle simply reads 'BAMF'." storage_slots = 1 /obj/item/storage/belt/military/gang/gang_contraband_value() return 4 /////////////////// //WEAPONS /////////////////// /datum/gang_item/weapon category = "Purchase Weapons:" /datum/gang_item/weapon/ammo /datum/gang_item/weapon/ammo/get_cost_display(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) return " ↳" + ..() //this is pretty hacky but it looks nice on the popup /datum/gang_item/weapon/shuriken name = "Shuriken" id = "shuriken" cost = 3 item_path = /obj/item/throwing_star /datum/gang_item/weapon/switchblade name = "Switchblade" id = "switchblade" cost = 5 item_path = /obj/item/switchblade /datum/gang_item/weapon/surplus name = "Surplus Rifle" id = "surplus" cost = 8 item_path = /obj/item/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/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/storage/box/lethalshot /datum/gang_item/weapon/pistol name = "10mm Pistol" id = "pistol" cost = 30 item_path = /obj/item/gun/ballistic/automatic/pistol /datum/gang_item/weapon/ammo/pistol_ammo name = "10mm Ammo" id = "pistol_ammo" cost = 10 item_path = /obj/item/ammo_box/magazine/m10mm /datum/gang_item/weapon/sniper name = "Black Market .50cal Sniper Rifle" id = "sniper" cost = 40 item_path = /obj/item/gun/ballistic/automatic/sniper_rifle/gang /datum/gang_item/weapon/ammo/sniper_ammo name = "Smuggled .50cal Sniper Rounds" id = "sniper_ammo" cost = 15 item_path = /obj/item/ammo_box/magazine/sniper_rounds/gang /datum/gang_item/weapon/ammo/sleeper_ammo name = "Illicit Tranquilizer Cartridges" id = "sniper_ammo" cost = 15 item_path = /obj/item/ammo_box/magazine/sniper_rounds/gang/sleeper /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/gun/ballistic/automatic/mini_uzi /datum/gang_item/weapon/ammo/uzi_ammo name = "Uzi Ammo" id = "uzi_ammo" cost = 40 item_path = /obj/item/ammo_box/magazine/uzim9mm /////////////////// //EQUIPMENT /////////////////// /datum/gang_item/equipment category = "Purchase Equipment:" /datum/gang_item/equipment/spraycan name = "Territory Spraycan" id = "spraycan" cost = 5 item_path = /obj/item/toy/crayon/spraycan/gang /datum/gang_item/equipment/sharpener name = "Sharpener" id = "whetstone" cost = 3 item_path = /obj/item/sharpener /datum/gang_item/equipment/emp name = "EMP Grenade" id = "EMP" cost = 5 item_path = /obj/item/grenade/empgrenade /datum/gang_item/equipment/c4 name = "C4 Explosive" id = "c4" cost = 7 item_path = /obj/item/grenade/plastic/c4 /datum/gang_item/equipment/frag name = "Fragmentation Grenade" id = "frag nade" cost = 18 item_path = /obj/item/grenade/syndieminibomb/concussion/frag /datum/gang_item/equipment/stimpack name = "Black Market Stimulants" id = "stimpack" cost = 12 item_path = /obj/item/reagent_containers/syringe/stimulants /datum/gang_item/equipment/implant_breaker name = "Implant Breaker" id = "implant_breaker" cost = 10 item_path = /obj/item/implanter/gang spawn_msg = "The implant breaker is a single-use device that destroys all implants within the target before trying to recruit them to your gang. Also works on enemy gangsters." /datum/gang_item/equipment/implant_breaker/spawn_item(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) if(item_path) var/obj/item/O = new item_path(user.loc, gang) //we need to override this whole proc for this one argument user.put_in_hands(O) 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_1 = NOSLIP_1 /datum/gang_item/equipment/pen name = "Recruitment Pen" id = "pen" cost = 50 item_path = /obj/item/pen/gang spawn_msg = "More recruitment pens will allow you to recruit gangsters faster. Only gang leaders can recruit with pens." /datum/gang_item/equipment/pen/purchase(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) if(..()) gangtool.free_pen = FALSE return TRUE return FALSE /datum/gang_item/equipment/pen/get_cost(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) if(gangtool && gangtool.free_pen) return 0 return ..() /datum/gang_item/equipment/pen/get_cost_display(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) if(gangtool && gangtool.free_pen) return "(GET ONE FREE)" return ..() /datum/gang_item/equipment/gangtool id = "gangtool" cost = 10 /datum/gang_item/equipment/gangtool/spawn_item(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) var/item_type if(gang && isboss(user, gang)) item_type = /obj/item/device/gangtool/spare/lt if(gang.bosses.len < 3) to_chat(user, "Gangtools allow you to promote a gangster to be your Lieutenant, enabling them to recruit and purchase items like you. Simply have them register the gangtool. You may promote up to [3-gang.bosses.len] more Lieutenants") else item_type = /obj/item/device/gangtool/spare var/obj/item/device/gangtool/spare/tool = new item_type(user.loc) user.put_in_hands(tool) /datum/gang_item/equipment/gangtool/get_name_display(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) if(gang && isboss(user, gang) && (gang.bosses.len < 3)) return "Promote a Gangster" return "Spare Gangtool" /datum/gang_item/equipment/dominator name = "Station Dominator" id = "dominator" cost = 30 item_path = /obj/machinery/dominator spawn_msg = "The dominator will secure your gang's dominance over the station. Turn it on when you are ready to defend it." /datum/gang_item/equipment/dominator/can_buy(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) if(!gang || !gang.dom_attempts) return FALSE return ..() /datum/gang_item/equipment/dominator/get_name_display(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) if(!gang || !gang.dom_attempts) return ..() return "[..()]" /datum/gang_item/equipment/dominator/get_cost_display(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) if(!gang || !gang.dom_attempts) return "(Out of stock)" return ..() /datum/gang_item/equipment/dominator/get_extra_info(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) if(gang) return "(Estimated Takeover Time: [round(determine_domination_time(gang)/60,0.1)] minutes)" /datum/gang_item/equipment/dominator/purchase(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) var/area/usrarea = get_area(user.loc) var/usrturf = get_turf(user.loc) if(initial(usrarea.name) == "Space" || isspaceturf(usrturf) || usr.z != ZLEVEL_STATION || !usrarea.valid_territory) to_chat(user, "You can only use this on the station!") return FALSE for(var/obj/obj in usrturf) if(obj.density) to_chat(user, "There's not enough room here!") return FALSE if(dominator_excessive_walls(user)) to_chat(user, "The dominator will not function here! The dominator requires a sizable open space within three standard units so that walls do not interfere with the signal.") return FALSE if(!(usrarea.type in gang.territory|gang.territory_new)) to_chat(user, "The dominator can be spawned only on territory controlled by your gang!") return FALSE 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)