12/21 modernizations from TG live (#103)
* sync (#3) * shuttle auto call * Merge /vore into /master (#39) * progress * Compile errors fixed No idea if it's test worthy tho as conflicts with race overhaul and narky removal. * Update admins.txt * efforts continue Fuck grab code, seriously * grab code is cancer * Execute the Narkism Do not hesitate. Show no mercy. * holy shit grab code is awful * have I bitched about grab code My bitching, let me show you it * código de agarre es una mierda No really it is * yeah I don't even know anymore. * Lolnope. Fuck grab code * I'm not even sure what to fix anymore * Self eating is not an acceptable fate * Taste the void, son. * My code doesn't pass it's own sanity check. Maybe it's a sign of things to come. * uncommented and notes * It Works and I Don't Know Why (#38) * shuttle auto call * it works and I don't know why * Subsystem 12/21 Most Recent TG subsystem folder * globalvars 12/21 Tossed out the flavor_misc and parallax files * Onclick 12/21 as well as .dme updates * _defines 12/21 ommited old _MC.dm * _HELPERS 12/21 Preserved snowflake placement of furry sprites * _defeines/genetics reapplied narkism holdover for snowflake races. * Oops forgot mutant colors * modules porting 12/21 + Sounds/icons Admin, Client and most of mob life files ommitted * enviroment file * Admin optimizations ahelp log system kept * Mob ports 12/21 Flavor text preserved * datums ported 12/21 * Game ported 12/21 * batch of duplicate fixes/dogborg work Dogborgs need to be modernized to refractored borg standards. * moar fixes * Maps and futher compile fixes
This commit is contained in:
@@ -13,7 +13,7 @@ var/global/list/uplinks = list()
|
||||
var/active = FALSE
|
||||
var/lockable = TRUE
|
||||
var/telecrystals = 20
|
||||
|
||||
var/selected_cat = null
|
||||
var/owner = null
|
||||
var/datum/game_mode/gamemode = null
|
||||
var/spent_telecrystals = 0
|
||||
@@ -27,6 +27,28 @@ var/global/list/uplinks = list()
|
||||
uplinks -= src
|
||||
return ..()
|
||||
|
||||
/obj/item/device/uplink/attackby(obj/item/I, mob/user, params)
|
||||
for(var/item in subtypesof(/datum/uplink_item))
|
||||
var/datum/uplink_item/UI = item
|
||||
var/path = null
|
||||
if(initial(UI.refund_path))
|
||||
path = initial(UI.refund_path)
|
||||
else
|
||||
path = initial(UI.item)
|
||||
var/cost = 0
|
||||
if(initial(UI.refund_amount))
|
||||
cost = initial(UI.refund_amount)
|
||||
else
|
||||
cost = initial(UI.cost)
|
||||
var/refundable = initial(UI.refundable)
|
||||
if(I.type == path && refundable && I.check_uplink_validity())
|
||||
telecrystals += cost
|
||||
spent_telecrystals -= cost
|
||||
user << "<span class='notice'>[I] refunded.</span>"
|
||||
qdel(I)
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/device/uplink/interact(mob/user)
|
||||
active = TRUE
|
||||
ui_interact(user)
|
||||
@@ -46,22 +68,24 @@ var/global/list/uplinks = list()
|
||||
data["lockable"] = lockable
|
||||
|
||||
var/list/uplink_items = get_uplink_items(gamemode)
|
||||
|
||||
data["categories"] = list()
|
||||
for(var/category in uplink_items)
|
||||
var/list/cat = list(
|
||||
"name" = category,
|
||||
"items" = list(),
|
||||
)
|
||||
for(var/item in uplink_items[category])
|
||||
var/datum/uplink_item/I = uplink_items[category][item]
|
||||
cat["items"] += list(list(
|
||||
"name" = I.name,
|
||||
"cost" = I.cost,
|
||||
"desc" = I.desc,
|
||||
))
|
||||
"items" = (category == selected_cat ? list() : null))
|
||||
if(category == selected_cat)
|
||||
for(var/item in uplink_items[category])
|
||||
var/datum/uplink_item/I = uplink_items[category][item]
|
||||
cat["items"] += list(list(
|
||||
"name" = I.name,
|
||||
"cost" = I.cost,
|
||||
"desc" = I.desc,
|
||||
))
|
||||
data["categories"] += list(cat)
|
||||
return data
|
||||
|
||||
|
||||
/obj/item/device/uplink/ui_act(action, params)
|
||||
if(!active)
|
||||
return
|
||||
@@ -82,6 +106,9 @@ var/global/list/uplinks = list()
|
||||
if("lock")
|
||||
active = FALSE
|
||||
SStgui.close_uis(src)
|
||||
if("select")
|
||||
selected_cat = params["category"]
|
||||
return 1
|
||||
|
||||
|
||||
/obj/item/device/uplink/ui_host()
|
||||
@@ -89,18 +116,7 @@ var/global/list/uplinks = list()
|
||||
|
||||
// Refund certain items by hitting the uplink with it.
|
||||
/obj/item/device/radio/uplink/attackby(obj/item/I, mob/user, params)
|
||||
for(var/item in subtypesof(/datum/uplink_item))
|
||||
var/datum/uplink_item/UI = item
|
||||
var/path = initial(UI.item)
|
||||
var/cost = initial(UI.cost)
|
||||
var/refundable = initial(UI.refundable)
|
||||
if(I.type == path && refundable)
|
||||
hidden_uplink.telecrystals += cost
|
||||
hidden_uplink.spent_telecrystals -= cost
|
||||
user << "<span class='notice'>[I] refunded.</span>"
|
||||
qdel(I)
|
||||
return
|
||||
..()
|
||||
return hidden_uplink.attackby(I, user, params)
|
||||
|
||||
// A collection of pre-set uplinks, for admin spawns.
|
||||
/obj/item/device/radio/uplink/New()
|
||||
|
||||
@@ -44,7 +44,9 @@ var/list/uplink_items = list() // Global list so we only initialize this once.
|
||||
var/category = "item category"
|
||||
var/desc = "item description"
|
||||
var/item = null // Path to the item to spawn.
|
||||
var/refund_path = null // Alternative path for refunds, in case the item purchased isn't what is actually refunded (ie: holoparasites).
|
||||
var/cost = 0
|
||||
var/refund_amount = 0 // specified refund amount in case there needs to be a TC penalty for refunds.
|
||||
var/refundable = FALSE
|
||||
var/surplus = 100 // Chance of being included in the surplus crate.
|
||||
var/list/include_modes = list() // Game modes to allow this item in.
|
||||
@@ -138,13 +140,13 @@ var/list/uplink_items = list() // Global list so we only initialize this once.
|
||||
name = "Stechkin Pistol"
|
||||
desc = "A small, easily concealable handgun that uses 10mm auto rounds in 8-round magazines and is compatible \
|
||||
with suppressors."
|
||||
item = /obj/item/weapon/gun/projectile/automatic/pistol
|
||||
item = /obj/item/weapon/gun/ballistic/automatic/pistol
|
||||
cost = 7
|
||||
|
||||
/datum/uplink_item/dangerous/revolver
|
||||
name = "Syndicate Revolver"
|
||||
desc = "A brutally simple syndicate revolver that fires .357 Magnum rounds and has 7 chambers."
|
||||
item = /obj/item/weapon/gun/projectile/revolver
|
||||
item = /obj/item/weapon/gun/ballistic/revolver
|
||||
cost = 13
|
||||
surplus = 50
|
||||
|
||||
@@ -152,7 +154,7 @@ var/list/uplink_items = list() // Global list so we only initialize this once.
|
||||
name = "Bulldog Shotgun"
|
||||
desc = "A fully-loaded semi-automatic drum-fed shotgun. Compatiable with all 12g rounds. Designed for close \
|
||||
quarter anti-personel engagements."
|
||||
item = /obj/item/weapon/gun/projectile/automatic/shotgun/bulldog
|
||||
item = /obj/item/weapon/gun/ballistic/automatic/shotgun/bulldog
|
||||
cost = 8
|
||||
surplus = 40
|
||||
include_modes = list(/datum/game_mode/nuclear)
|
||||
@@ -161,20 +163,20 @@ var/list/uplink_items = list() // Global list so we only initialize this once.
|
||||
name = "C-20r Submachine Gun"
|
||||
desc = "A fully-loaded Scarborough Arms bullpup submachine gun. The C-20r fires .45 rounds with a \
|
||||
20-round magazine and is compatible with suppressors."
|
||||
item = /obj/item/weapon/gun/projectile/automatic/c20r
|
||||
item = /obj/item/weapon/gun/ballistic/automatic/c20r
|
||||
cost = 10
|
||||
surplus = 40
|
||||
include_modes = list(/datum/game_mode/nuclear)
|
||||
|
||||
/datum/uplink_item/dangerous/smg/unrestricted
|
||||
item = /obj/item/weapon/gun/projectile/automatic/c20r/unrestricted
|
||||
item = /obj/item/weapon/gun/ballistic/automatic/c20r/unrestricted
|
||||
include_modes = list(/datum/game_mode/gang)
|
||||
|
||||
/datum/uplink_item/dangerous/machinegun
|
||||
name = "L6 Squad Automatic Weapon"
|
||||
desc = "A fully-loaded Aussec Armoury belt-fed machine gun. \
|
||||
This deadly weapon has a massive 50-round magazine of devastating 5.56x45mm ammunition."
|
||||
item = /obj/item/weapon/gun/projectile/automatic/l6_saw
|
||||
item = /obj/item/weapon/gun/ballistic/automatic/l6_saw
|
||||
cost = 18
|
||||
surplus = 0
|
||||
include_modes = list(/datum/game_mode/nuclear)
|
||||
@@ -190,7 +192,7 @@ var/list/uplink_items = list() // Global list so we only initialize this once.
|
||||
/datum/uplink_item/dangerous/sniper
|
||||
name = "Sniper Rifle"
|
||||
desc = "Ranged fury, Syndicate style. guaranteed to cause shock and awe or your TC back!"
|
||||
item = /obj/item/weapon/gun/projectile/automatic/sniper_rifle/syndicate
|
||||
item = /obj/item/weapon/gun/ballistic/automatic/sniper_rifle/syndicate
|
||||
cost = 16
|
||||
surplus = 25
|
||||
include_modes = list(/datum/game_mode/nuclear)
|
||||
@@ -198,7 +200,7 @@ var/list/uplink_items = list() // Global list so we only initialize this once.
|
||||
/datum/uplink_item/dangerous/bolt_action
|
||||
name = "Surplus Rifle"
|
||||
desc = "A horribly outdated bolt action weapon. You've got to be desperate to use this."
|
||||
item = /obj/item/weapon/gun/projectile/shotgun/boltaction
|
||||
item = /obj/item/weapon/gun/ballistic/shotgun/boltaction
|
||||
cost = 2
|
||||
include_modes = list(/datum/game_mode/nuclear)
|
||||
|
||||
@@ -259,7 +261,7 @@ var/list/uplink_items = list() // Global list so we only initialize this once.
|
||||
/datum/uplink_item/dangerous/foamsmg
|
||||
name = "Toy Submachine Gun"
|
||||
desc = "A fully-loaded Donksoft bullpup submachine gun that fires riot grade rounds with a 20-round magazine."
|
||||
item = /obj/item/weapon/gun/projectile/automatic/c20r/toy
|
||||
item = /obj/item/weapon/gun/ballistic/automatic/c20r/toy
|
||||
cost = 5
|
||||
surplus = 0
|
||||
include_modes = list(/datum/game_mode/nuclear)
|
||||
@@ -268,7 +270,7 @@ var/list/uplink_items = list() // Global list so we only initialize this once.
|
||||
name = "Toy Machine Gun"
|
||||
desc = "A fully-loaded Donksoft belt-fed machine gun. This weapon has a massive 50-round magazine of devastating \
|
||||
riot grade darts, that can briefly incapacitate someone in just one volley."
|
||||
item = /obj/item/weapon/gun/projectile/automatic/l6_saw/toy
|
||||
item = /obj/item/weapon/gun/ballistic/automatic/l6_saw/toy
|
||||
cost = 10
|
||||
surplus = 0
|
||||
include_modes = list(/datum/game_mode/nuclear)
|
||||
@@ -319,11 +321,29 @@ var/list/uplink_items = list() // Global list so we only initialize this once.
|
||||
|
||||
/datum/uplink_item/ammo/pistol
|
||||
name = "10mm Handgun Magazine"
|
||||
desc = "An additional 8-round 10mm magazine; compatible with the Stechkin Pistol. These subsonic rounds \
|
||||
desc = "An additional 8-round 10mm magazine; compatible with the Stechkin Pistol. These rounds \
|
||||
are dirt cheap but are half as effective as .357 rounds."
|
||||
item = /obj/item/ammo_box/magazine/m10mm
|
||||
cost = 1
|
||||
|
||||
/datum/uplink_item/ammo/pistolap
|
||||
name = "10mm Armour Piercing Magazine"
|
||||
desc = "An additional 8-round 10mm magazine; compatible with the Stechkin Pistol. These rounds are less effective at injuring the target but penetrate protective gear."
|
||||
item = /obj/item/ammo_box/magazine/m10mm/ap
|
||||
cost = 2
|
||||
|
||||
/datum/uplink_item/ammo/pistolfire
|
||||
name = "10mm Incendiary Magazine"
|
||||
desc = "An additional 8-round 10mm magazine; compatible with the Stechkin Pistol. Loaded with incendiary rounds which ignite the target."
|
||||
item = /obj/item/ammo_box/magazine/m10mm/fire
|
||||
cost = 2
|
||||
|
||||
/datum/uplink_item/ammo/pistolhp
|
||||
name = "10mm Hollow Point Magazine"
|
||||
desc = "An additional 8-round 10mm magazine; compatible with the Stechkin Pistol. These rounds are more damaging but ineffective against armour."
|
||||
item = /obj/item/ammo_box/magazine/m10mm/hp
|
||||
cost = 3
|
||||
|
||||
/datum/uplink_item/ammo/bolt_action
|
||||
name = "Surplus Rifle Clip"
|
||||
desc = "A stripper clip used to quickly load bolt action rifles. Contains 5 rounds."
|
||||
@@ -519,14 +539,23 @@ var/list/uplink_items = list() // Global list so we only initialize this once.
|
||||
deflecting all ranged weapon fire, but you also refuse to use dishonorable ranged weaponry."
|
||||
item = /obj/item/weapon/sleeping_carp_scroll
|
||||
cost = 17
|
||||
surplus = 0
|
||||
exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/gang)
|
||||
|
||||
/datum/uplink_item/stealthy_weapons/cqc
|
||||
name = "CQC Manual"
|
||||
desc = "A manual that teaches a single user tactical Close-Quarters Combat before self-destructing."
|
||||
item = /obj/item/weapon/cqc_manual
|
||||
include_modes = list(/datum/game_mode/nuclear)
|
||||
cost = 13
|
||||
surplus = 0
|
||||
|
||||
/datum/uplink_item/stealthy_weapons/throwingweapons
|
||||
name = "Box of Throwing Weapons"
|
||||
desc = "A box of shurikens and reinforced bolas from ancient Earth martial arts. They are highly effective \
|
||||
throwing weapons. The bolas can knock a target down and the shurikens will embed into limbs."
|
||||
item = /obj/item/weapon/storage/box/syndie_kit/throwing_weapons
|
||||
cost = 5
|
||||
cost = 3
|
||||
|
||||
/datum/uplink_item/stealthy_weapons/edagger
|
||||
name = "Energy Dagger"
|
||||
@@ -538,7 +567,7 @@ var/list/uplink_items = list() // Global list so we only initialize this once.
|
||||
name = "Toy Gun with Riot Darts"
|
||||
desc = "An innocent-looking toy pistol designed to fire foam darts. Comes loaded with riot-grade \
|
||||
darts effective at incapacitating a target."
|
||||
item = /obj/item/weapon/gun/projectile/automatic/toy/pistol/riot
|
||||
item = /obj/item/weapon/gun/ballistic/automatic/toy/pistol/riot
|
||||
cost = 3
|
||||
surplus = 10
|
||||
exclude_modes = list(/datum/game_mode/gang)
|
||||
@@ -624,16 +653,6 @@ var/list/uplink_items = list() // Global list so we only initialize this once.
|
||||
surplus = 10
|
||||
exclude_modes = list(/datum/game_mode/nuclear)
|
||||
|
||||
/datum/uplink_item/stealthy_weapons/boobytrap
|
||||
name = "Booby Trap"
|
||||
desc = "A small explosive device that can be attached to boxes or closets. \
|
||||
The next person to open the box or closet will trigger an explosion \
|
||||
that knocks them down and destroys the boobytrapped object."
|
||||
item = /obj/item/device/boobytrap
|
||||
cost = 4
|
||||
surplus = 10
|
||||
exclude_modes = list(/datum/game_mode/nuclear)
|
||||
|
||||
// Stealth Items
|
||||
/datum/uplink_item/stealthy_tools
|
||||
category = "Stealth and Camouflage Items"
|
||||
@@ -697,8 +716,9 @@ var/list/uplink_items = list() // Global list so we only initialize this once.
|
||||
/datum/uplink_item/stealthy_tools/smugglersatchel
|
||||
name = "Smuggler's Satchel"
|
||||
desc = "This satchel is thin enough to be hidden in the gap between plating and tiling; great for stashing \
|
||||
your stolen goods. Comes with a crowbar and a floor tile inside."
|
||||
item = /obj/item/weapon/storage/backpack/satchel_flat
|
||||
your stolen goods. Comes with a crowbar and a floor tile inside. Properly hidden satchels have been \
|
||||
known to survive intact even beyond the current shift. "
|
||||
item = /obj/item/weapon/storage/backpack/satchel/flat
|
||||
cost = 2
|
||||
surplus = 30
|
||||
|
||||
@@ -734,7 +754,14 @@ var/list/uplink_items = list() // Global list so we only initialize this once.
|
||||
item = /obj/item/weapon/storage/box/syndie_kit/cutouts
|
||||
cost = 1
|
||||
surplus = 20
|
||||
|
||||
|
||||
/datum/uplink_item/stealthy_tools/fakenucleardisk
|
||||
name = "Decoy Nuclear Authentication Disk"
|
||||
desc = "It's just a normal disk. Visually it's identical to the real deal, but it won't hold up under closer scrutiny. Don't try to give this to us to complete your objective, we know better!"
|
||||
item = /obj/item/weapon/disk/fakenucleardisk
|
||||
cost = 1
|
||||
surplus = 1
|
||||
|
||||
//Space Suits and Hardsuits
|
||||
/datum/uplink_item/suits
|
||||
category = "Space Suits and Hardsuits"
|
||||
@@ -845,12 +872,6 @@ var/list/uplink_items = list() // Global list so we only initialize this once.
|
||||
cost = 2
|
||||
surplus = 75
|
||||
|
||||
/datum/uplink_item/device_tools/selfdestruct_firingpin
|
||||
name = "Trick Firing Pin"
|
||||
desc = "This pin will detonate the weapon it is put into upon trying to use it"
|
||||
item = /obj/item/device/firing_pin/trick
|
||||
cost = 4
|
||||
|
||||
/datum/uplink_item/device_tools/ai_detector
|
||||
name = "Artificial Intelligence Detector"
|
||||
desc = "A functional multitool that turns red when it detects an artificial intelligence watching it or its \
|
||||
@@ -874,13 +895,6 @@ var/list/uplink_items = list() // Global list so we only initialize this once.
|
||||
cost = 2
|
||||
include_modes = list(/datum/game_mode/nuclear)
|
||||
|
||||
/datum/uplink_item/device_tools/thermitespray
|
||||
name = "Thermite Kit"
|
||||
desc = "A boxed zippo and 50u spray bottle filled with thermite, specially designed for spraying walls. \
|
||||
50u is enough thermite to spray 5 walls."
|
||||
item = /obj/item/weapon/storage/box/syndie_kit/thermite
|
||||
cost = 3
|
||||
|
||||
/datum/uplink_item/device_tools/c4
|
||||
name = "Composition C-4"
|
||||
desc = "C-4 is plastic explosive of the common variety Composition C. You can use it to breach walls, sabotage equipment, or connect \
|
||||
@@ -981,6 +995,13 @@ var/list/uplink_items = list() // Global list so we only initialize this once.
|
||||
cost = 4
|
||||
include_modes = list(/datum/game_mode/nuclear)
|
||||
|
||||
/datum/uplink_item/device_tools/telecrystal
|
||||
name = "Raw Telecrystal"
|
||||
desc = "A telecrystal in its rawest and purest form; can be utilized on active uplinks to increase their telecrystal count."
|
||||
item = /obj/item/stack/telecrystal
|
||||
cost = 1
|
||||
surplus = 0
|
||||
|
||||
// Implants
|
||||
/datum/uplink_item/implants
|
||||
category = "Implants"
|
||||
@@ -1132,7 +1153,7 @@ var/list/uplink_items = list() // Global list so we only initialize this once.
|
||||
exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/gang)
|
||||
|
||||
/datum/uplink_item/badass/surplus/spawn_item(turf/loc, obj/item/device/uplink/U)
|
||||
var/list/uplink_items = get_uplink_items()
|
||||
var/list/uplink_items = get_uplink_items(ticker.mode)
|
||||
|
||||
var/crate_value = 50
|
||||
var/obj/structure/closet/crate/C = new(loc)
|
||||
@@ -1159,7 +1180,7 @@ var/list/uplink_items = list() // Global list so we only initialize this once.
|
||||
cost = 0
|
||||
|
||||
/datum/uplink_item/badass/random/spawn_item(turf/loc, obj/item/device/uplink/U)
|
||||
var/list/uplink_items = get_uplink_items()
|
||||
var/list/uplink_items = get_uplink_items(ticker.mode)
|
||||
var/list/possible_items = list()
|
||||
for(var/category in uplink_items)
|
||||
for(var/item in uplink_items[category])
|
||||
|
||||
Reference in New Issue
Block a user