/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) if(gang && real_cost) gang.message_gangtools("A [get_name_display(user, gang, gangtool)] was purchased by [user.real_name] for [real_cost] Influence.") log_game("A [id] was purchased by [key_name(user)] ([gang.name] Gang) for [real_cost] Influence.") gang.points -= 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.points >= 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) /datum/gang_item/function/outfit name = "Create Armored Gang Outfit" id = "outfit" /datum/gang_item/function/outfit/can_buy(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) return gangtool && (gangtool.outfits > 0) && ..() /datum/gang_item/function/outfit/get_cost_display(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) if(gangtool && !gangtool.outfits) return "(Restocking)" return ..() /datum/gang_item/function/outfit/spawn_item(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) if(gang && gang.gang_outfit(user, gangtool)) to_chat(user, "Gang Outfits can act as armor with moderate protection against ballistic and melee attacks. Every gangster wearing one will also help grow your gang's influence.") if(gangtool) gangtool.outfits -= 1 /////////////////// //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/switchblade name = "Switchblade" id = "switchblade" cost = 10 item_path = /obj/item/weapon/switchblade /datum/gang_item/weapon/pistol name = "10mm Pistol" id = "pistol" cost = 25 item_path = /obj/item/weapon/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/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" id = "uzi_ammo" cost = 40 item_path = /obj/item/ammo_box/magazine/uzim9mm //SLEEPING CARP /datum/gang_item/weapon/bostaff name = "Bo Staff" id = "bostaff" cost = 10 item_path = /obj/item/weapon/twohanded/bostaff /datum/gang_item/weapon/sleeping_carp_scroll name = "Sleeping Carp Scroll (one-use)" id = "sleeping_carp_scroll" cost = 30 item_path = /obj/item/weapon/sleeping_carp_scroll spawn_msg = "Anyone who reads the sleeping carp scroll will learn secrets of the sleeping carp martial arts style." /datum/gang_item/weapon/wrestlingbelt name = "Wrestling Belt" id = "wrastling_belt" cost = 20 item_path = /obj/item/weapon/storage/belt/champion/wrestling spawn_msg = "Anyone wearing the wresting belt will know how to be effective with wrestling." /////////////////// //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/necklace name = "Gold Necklace" id = "necklace" cost = 1 item_path = /obj/item/clothing/neck/necklace/dope /datum/gang_item/equipment/c4 name = "C4 Explosive" id = "c4" cost = 10 item_path = /obj/item/weapon/grenade/plastic/c4 /datum/gang_item/equipment/implant_breaker name = "Implant Breaker" id = "implant_breaker" cost = 10 item_path = /obj/item/weapon/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/pen name = "Recruitment Pen" id = "pen" cost = 50 item_path = /obj/item/weapon/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 != 1) 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(!(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)