mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 03:57:13 +01:00
Merge pull request #10632 from Kyep/trader_tweaks_2
Sol Trader Updates 2
This commit is contained in:
@@ -708,7 +708,8 @@
|
||||
id = /obj/item/card/id/supply
|
||||
pda = /obj/item/pda
|
||||
backpack_contents = list(
|
||||
/obj/item/storage/box/survival = 1
|
||||
/obj/item/storage/box/survival = 1,
|
||||
/obj/item/hand_labeler = 1
|
||||
)
|
||||
|
||||
/datum/outfit/admin/sol_trader/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
|
||||
@@ -724,51 +724,18 @@ var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) - /datu
|
||||
if(vox_total_kills > vox_allowed_kills) return 0
|
||||
return 1
|
||||
|
||||
// Traders
|
||||
|
||||
/datum/objective/trade // Yes, I know there's no check_completion. The objectives exist only to tell the traders what to get.
|
||||
/datum/objective/trade/proc/choose_target(var/station)
|
||||
// Traders
|
||||
// These objectives have no check_completion, they exist only to tell Sol Traders what to aim for.
|
||||
|
||||
/datum/objective/trade/proc/choose_target()
|
||||
return
|
||||
|
||||
/datum/objective/trade/stock // Stock or spare parts.
|
||||
var/target_rating = 1
|
||||
/datum/objective/trade/stock/choose_target(var/station)
|
||||
var/itemname
|
||||
switch(rand(1,8))
|
||||
if(1)
|
||||
target = /obj/item/stock_parts/cell
|
||||
target_amount = 10
|
||||
target_rating = 3
|
||||
itemname = "ten high-capacity power cells"
|
||||
if(2)
|
||||
target = /obj/item/stock_parts/manipulator
|
||||
target_amount = 20
|
||||
itemname = "twenty micro manipulators"
|
||||
if(3)
|
||||
target = /obj/item/stock_parts/matter_bin
|
||||
target_amount = 20
|
||||
itemname = "twenty matter bins"
|
||||
if(4)
|
||||
target = /obj/item/stock_parts/micro_laser
|
||||
target_amount = 15
|
||||
itemname = "fifteen micro-lasers"
|
||||
if(5)
|
||||
target = /obj/item/stock_parts/capacitor
|
||||
target_amount = 15
|
||||
itemname = "fifteen capacitors"
|
||||
if(6)
|
||||
target = /obj/item/stock_parts/subspace/filter
|
||||
target_amount = 4
|
||||
itemname = "four hyperwave filters"
|
||||
if(7)
|
||||
target = /obj/item/solar_assembly
|
||||
target_amount = 10
|
||||
itemname = "ten solar panel assemblies"
|
||||
if(8)
|
||||
target = /obj/item/flash
|
||||
target_amount = 6
|
||||
itemname = "six flashes"
|
||||
explanation_text = "We are running low on spare parts. Trade for [itemname]."
|
||||
/datum/objective/trade/plasma/choose_target()
|
||||
explanation_text = "Acquire at least 15 sheets of plasma through trade."
|
||||
|
||||
/datum/objective/trade/credits/choose_target()
|
||||
explanation_text = "Acquire at least 10,000 credits through trade."
|
||||
|
||||
//wizard
|
||||
|
||||
|
||||
@@ -189,26 +189,25 @@
|
||||
/obj/item/soap/syndie = 50,
|
||||
/obj/item/lighter/zippo/gonzofist = 50,
|
||||
/obj/item/stack/nanopaste = 50,
|
||||
/obj/item/clothing/under/psyjump = 50
|
||||
/obj/item/clothing/under/psyjump = 50,
|
||||
/obj/item/immortality_talisman = 50,
|
||||
/obj/item/grenade/clusterbuster/smoke = 50
|
||||
)
|
||||
|
||||
|
||||
/obj/effect/spawner/lootdrop/trade_sol/minerals
|
||||
name = "2. minerals"
|
||||
lootdoubles = 1
|
||||
loot = list(
|
||||
// Common stuff you get from mining which isn't already present on the station
|
||||
// Note that plasma and derived hybrid materials are NOT included in this list because plasma is the trader's objective!
|
||||
/obj/item/stack/sheet/mineral/silver = 50,
|
||||
/obj/item/stack/sheet/mineral/gold = 50,
|
||||
/obj/item/stack/sheet/mineral/plasma = 50,
|
||||
/obj/item/stack/sheet/mineral/uranium = 50,
|
||||
/obj/item/stack/sheet/mineral/diamond = 50,
|
||||
/obj/item/stack/sheet/mineral/titanium = 50,
|
||||
/obj/item/stack/sheet/plasteel = 50,
|
||||
|
||||
// Hybrid stuff you could in theory get from mining
|
||||
/obj/item/stack/sheet/plasmaglass = 50,
|
||||
/obj/item/stack/sheet/plasmarglass = 50,
|
||||
/obj/item/stack/sheet/titaniumglass = 50,
|
||||
|
||||
// Rare stuff you can't get from mining
|
||||
@@ -216,8 +215,7 @@
|
||||
/obj/item/stack/sheet/mineral/bananium = 50,
|
||||
/obj/item/stack/sheet/wood = 50,
|
||||
/obj/item/stack/sheet/plastic = 50,
|
||||
/obj/item/stack/sheet/mineral/sandstone = 50,
|
||||
|
||||
/obj/item/stack/sheet/mineral/sandstone = 50
|
||||
)
|
||||
|
||||
/obj/effect/spawner/lootdrop/trade_sol/minerals/New()
|
||||
@@ -244,7 +242,7 @@
|
||||
/obj/item/gun/projectile/automatic/toy/pistol/enforcer = 50,
|
||||
/obj/item/gun/projectile/shotgun/toy = 50,
|
||||
/obj/item/gun/projectile/shotgun/toy/crossbow = 50,
|
||||
/obj/item/gun/projectile/shotgun/toy/tommygun = 50,
|
||||
/obj/item/gun/projectile/shotgun/toy/tommygun = 50
|
||||
)
|
||||
|
||||
|
||||
@@ -259,13 +257,11 @@
|
||||
/obj/item/autoimplanter = 50,
|
||||
|
||||
// Research / Experimentor
|
||||
/obj/item/relic = 150, // strange object
|
||||
/obj/item/paper/researchnotes = 150, // papers that give random R&D levels
|
||||
|
||||
// Xenobio
|
||||
/obj/item/slimepotion/sentience = 50, // Low-value, but we want to encourage getting more players back in the round.
|
||||
/obj/item/slimepotion/transference = 50,
|
||||
/obj/item/slimepotion/speed = 50,
|
||||
/obj/item/slimepotion/transference = 50
|
||||
)
|
||||
|
||||
/obj/effect/spawner/lootdrop/trade_sol/med
|
||||
@@ -279,16 +275,16 @@
|
||||
// Surgery
|
||||
/obj/item/scalpel/laser/manager = 100,
|
||||
/obj/item/organ/internal/heart/gland/ventcrawling = 50,
|
||||
/obj/item/organ/internal/heart/gland/heals = 50,
|
||||
|
||||
// Genetics Research (should really be under science, but I was stuck for items to put in medical)
|
||||
/obj/item/dnainjector/regenerate = 50, // regeneration
|
||||
/obj/item/dnainjector/nobreath = 50,
|
||||
/obj/item/dnainjector/midgit = 50,
|
||||
/obj/item/dnainjector/telemut = 50,
|
||||
|
||||
// Virology
|
||||
/obj/item/reagent_containers/glass/bottle/regeneration = 50,
|
||||
/obj/item/reagent_containers/glass/bottle/sensory_restoration = 50,
|
||||
/obj/item/reagent_containers/glass/bottle/sensory_restoration = 50
|
||||
)
|
||||
|
||||
/obj/effect/spawner/lootdrop/trade_sol/sec
|
||||
@@ -301,17 +297,31 @@
|
||||
// Utility
|
||||
/obj/item/storage/belt/military/assault = 50,
|
||||
/obj/item/clothing/mask/gas/sechailer/swat = 50,
|
||||
/obj/item/clothing/glasses/thermal = 50, // see heat-source mobs through walls. Less powerful than already-available xray.
|
||||
|
||||
// Ranged weapons
|
||||
/obj/item/storage/box/enforcer_rubber = 50,
|
||||
/obj/item/storage/box/enforcer_lethal = 50,
|
||||
/obj/item/gun/projectile/shotgun/automatic/combat = 50, // combat shotgun, between riot and bulldog in robustness. Not illegal, can be obtained from cargo.
|
||||
/obj/item/gun/projectile/shotgun/automatic/dual_tube = 50, // cycler shotgun, not normally available to crew
|
||||
|
||||
// Cluster grenades
|
||||
/obj/item/grenade/clusterbuster = 50, // cluster flashbang
|
||||
/obj/item/grenade/clusterbuster/teargas = 50
|
||||
)
|
||||
|
||||
/obj/effect/spawner/lootdrop/trade_sol/eng
|
||||
name = "7. eng gear"
|
||||
lootcount = 3
|
||||
loot = list(
|
||||
/obj/item/storage/belt/utility/chief/full = 25,
|
||||
/obj/item/rcd/combat = 25,
|
||||
/obj/item/rpd/bluespace = 25,
|
||||
/obj/item/tank/emergency_oxygen/double/full = 25,
|
||||
/obj/item/slimepotion/speed = 25,
|
||||
/obj/item/storage/backpack/holding = 25,
|
||||
/obj/item/clothing/glasses/meson/night = 25, // NV mesons
|
||||
/obj/item/clothing/glasses/material = 25, // shows objects, but not mobs, through walls
|
||||
/obj/item/grenade/clusterbuster/metalfoam = 25 // cluster metal foam grenade
|
||||
)
|
||||
|
||||
/obj/effect/spawner/lootdrop/trade_sol/largeitem
|
||||
@@ -319,7 +329,7 @@
|
||||
lootcount = 1
|
||||
loot = list(
|
||||
/obj/machinery/disco = 20,
|
||||
/obj/mecha/combat/durand/old = 20,
|
||||
/obj/mecha/combat/durand/old = 20
|
||||
)
|
||||
|
||||
/obj/effect/spawner/lootdrop/trade_sol/vehicle
|
||||
@@ -348,18 +358,22 @@
|
||||
// Mining
|
||||
/obj/item/mining_voucher = 100,
|
||||
/obj/item/pickaxe/drill/jackhammer = 100,
|
||||
/obj/item/stack/sheet/animalhide/goliath_hide = 100,
|
||||
/obj/item/gun/energy/kinetic_accelerator/experimental = 100,
|
||||
/obj/item/borg/upgrade/modkit/aoe/turfs/andmobs = 100,
|
||||
|
||||
// Botanist
|
||||
/obj/item/seeds/random/labelled = 100,
|
||||
|
||||
// Clown
|
||||
/obj/item/grenade/bananade = 100,
|
||||
/obj/item/grenade/clusterbuster/honk = 100,
|
||||
/obj/item/bikehorn/golden = 100,
|
||||
|
||||
// Bartender
|
||||
/obj/item/storage/box/bartender_rare_ingredients_kit = 100,
|
||||
|
||||
// It would be nice to also have items for other service jobs: Bartender, Mime, Chef, Librarian, Chaplain, etc
|
||||
// Chef
|
||||
/obj/item/storage/box/chef_rare_ingredients_kit = 100
|
||||
// It would be nice to also have items for other service jobs: Mime, Librarian, Chaplain, etc
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
payload = /obj/item/grenade/chem_grenade/cleaner
|
||||
|
||||
/obj/item/grenade/clusterbuster/teargas
|
||||
name = "Oignon Grenade"
|
||||
name = "Oignon Teargas Grenade"
|
||||
payload = /obj/item/grenade/chem_grenade/teargas
|
||||
|
||||
/obj/item/grenade/clusterbuster/facid
|
||||
|
||||
@@ -680,6 +680,56 @@
|
||||
new /obj/item/clothing/head/syndicatefake(src)
|
||||
new /obj/item/clothing/suit/syndicatefake(src)
|
||||
|
||||
/obj/item/storage/box/enforcer_rubber
|
||||
name = "enforcer pistol kit (rubber)"
|
||||
desc = "A box marked with pictures of an enforcer pistol, two ammo clips, and the word 'NON-LETHAL'."
|
||||
icon_state = "box_ert"
|
||||
|
||||
/obj/item/storage/box/enforcer_rubber/New()
|
||||
..()
|
||||
new /obj/item/gun/projectile/automatic/pistol/enforcer(src) // loaded with rubber by default
|
||||
new /obj/item/ammo_box/magazine/enforcer(src)
|
||||
new /obj/item/ammo_box/magazine/enforcer(src)
|
||||
|
||||
/obj/item/storage/box/enforcer_lethal
|
||||
name = "enforcer pistol kit (lethal)"
|
||||
desc = "A box marked with pictures of an enforcer pistol, two ammo clips, and the word 'LETHAL'."
|
||||
icon_state = "box_ert"
|
||||
|
||||
/obj/item/storage/box/enforcer_lethal/New()
|
||||
..()
|
||||
new /obj/item/gun/projectile/automatic/pistol/enforcer/lethal(src)
|
||||
new /obj/item/ammo_box/magazine/enforcer/lethal(src)
|
||||
new /obj/item/ammo_box/magazine/enforcer/lethal(src)
|
||||
|
||||
/obj/item/storage/box/bartender_rare_ingredients_kit
|
||||
name = "bartender rare reagents kit"
|
||||
desc = "A box intended for experienced bartenders."
|
||||
|
||||
/obj/item/storage/box/bartender_rare_ingredients_kit/New()
|
||||
..()
|
||||
var/list/reagent_list = list("sacid", "radium", "ether", "methamphetamine", "plasma", "gold", "silver", "capsaicin", "psilocybin")
|
||||
for(var/reag in reagent_list)
|
||||
var/obj/item/reagent_containers/glass/bottle/B = new(src)
|
||||
B.reagents.add_reagent(reag, 30)
|
||||
B.name = "[reag] bottle"
|
||||
|
||||
/obj/item/storage/box/chef_rare_ingredients_kit
|
||||
name = "chef rare reagents kit"
|
||||
desc = "A box intended for experienced chefs."
|
||||
|
||||
/obj/item/storage/box/chef_rare_ingredients_kit/New()
|
||||
..()
|
||||
new /obj/item/reagent_containers/food/condiment/soysauce(src)
|
||||
new /obj/item/reagent_containers/food/condiment/enzyme(src)
|
||||
new /obj/item/reagent_containers/food/condiment/pack/hotsauce(src)
|
||||
new /obj/item/kitchen/knife/butcher(src)
|
||||
var/list/reagent_list = list("msg", "triple_citrus", "salglu_solution", "nutriment", "gravy", "honey", "vitfro")
|
||||
for(var/reag in reagent_list)
|
||||
var/obj/item/reagent_containers/glass/bottle/B = new(src)
|
||||
B.reagents.add_reagent(reag, 30)
|
||||
B.name = "[reag] bottle"
|
||||
|
||||
/obj/item/storage/box/mousetraps
|
||||
name = "box of Pest-B-Gon mousetraps"
|
||||
desc = "<B><FONT color='red'>WARNING:</FONT></B> <I>Keep out of reach of children</I>."
|
||||
|
||||
@@ -194,7 +194,7 @@ var/list/event_last_fired = list()
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Wave", /datum/event/meteor_wave, 0, list(ASSIGNMENT_ENGINEER = 5), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Abductor Visit", /datum/event/abductor, 80, is_one_shot = 1),
|
||||
new /datum/event_meta/alien(EVENT_LEVEL_MAJOR, "Alien Infestation", /datum/event/alien_infestation, 0, list(ASSIGNMENT_SECURITY = 15), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Traders", /datum/event/traders, 0, is_one_shot = 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Traders", /datum/event/traders, 180, is_one_shot = 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Terror Spiders", /datum/event/spider_terror, 0, list(ASSIGNMENT_SECURITY = 15), is_one_shot = 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Slaughter Demon", /datum/event/spawn_slaughter, 15, is_one_shot = 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Floor Cluwne", /datum/event/spawn_floor_cluwne, 15, is_one_shot = 1)
|
||||
|
||||
@@ -6,7 +6,7 @@ var/global/list/unused_trade_stations = list("sol")
|
||||
/datum/event/traders
|
||||
var/success_spawn = 0
|
||||
var/station = null
|
||||
var/spawn_count = 3
|
||||
var/spawn_count = 2
|
||||
var/list/trader_objectives = list()
|
||||
|
||||
/datum/event/traders/setup()
|
||||
@@ -16,6 +16,10 @@ var/global/list/unused_trade_stations = list("sol")
|
||||
/datum/event/traders/start()
|
||||
if(!station) // If there are no unused stations, just no.
|
||||
return
|
||||
if(seclevel2num(get_security_level()) >= SEC_LEVEL_RED)
|
||||
event_announcement.Announce("A trading shuttle from Jupiter Station has been denied docking permission due to the heightened security alert aboard [station_name()].", "Trader Shuttle Docking Request Refused")
|
||||
return
|
||||
|
||||
var/list/spawnlocs = list()
|
||||
for(var/obj/effect/landmark/landmark in GLOB.landmarks_list)
|
||||
if(landmark.name == "traderstart_[station]")
|
||||
@@ -35,6 +39,7 @@ var/global/list/unused_trade_stations = list("sol")
|
||||
var/turf/picked_loc = spawnlocs[index]
|
||||
index++
|
||||
var/mob/C = pick_n_take(candidates)
|
||||
spawn_count--
|
||||
if(C)
|
||||
GLOB.respawnable_list -= C.client
|
||||
var/mob/living/carbon/human/M = new /mob/living/carbon/human(picked_loc)
|
||||
@@ -44,7 +49,9 @@ var/global/list/unused_trade_stations = list("sol")
|
||||
M.mind.objectives += trader_objectives
|
||||
greet_trader(M)
|
||||
success_spawn = 1
|
||||
if(!success_spawn)
|
||||
if(success_spawn)
|
||||
event_announcement.Announce("A trading shuttle from Jupiter Station has been granted docking permission at [station_name()] arrivals port 4.", "Trader Shuttle Docking Request Accepted")
|
||||
else
|
||||
unused_trade_stations += station // Return the station to the list of usable stations.
|
||||
|
||||
/datum/event/traders/proc/greet_trader(var/mob/living/carbon/human/M)
|
||||
@@ -55,17 +62,14 @@ var/global/list/unused_trade_stations = list("sol")
|
||||
show_objectives(M.mind)
|
||||
|
||||
/datum/event/traders/proc/forge_trader_objectives()
|
||||
var/i = 1
|
||||
var/max_objectives = pick(2, 2, 2, 2, 3, 3, 3, 4)
|
||||
var/list/objs = list()
|
||||
var/list/goals = list("stockparts")
|
||||
while(i<= max_objectives)
|
||||
var/goal = pick(goals)
|
||||
var/datum/objective/trade/O
|
||||
if(goal == "stockparts")
|
||||
O = new /datum/objective/trade/stock(station)
|
||||
O.choose_target()
|
||||
objs += O
|
||||
|
||||
i++
|
||||
var/datum/objective/trade/plasma/P = new /datum/objective/trade/plasma
|
||||
P.choose_target()
|
||||
objs += P
|
||||
|
||||
var/datum/objective/trade/credits/C = new /datum/objective/trade/credits
|
||||
C.choose_target()
|
||||
objs += C
|
||||
|
||||
return objs
|
||||
|
||||
@@ -221,7 +221,7 @@
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_box/magazine/enforcer
|
||||
name = "handgun magazine (9mm)"
|
||||
name = "handgun magazine (9mm rubber)"
|
||||
icon_state = "enforcer"
|
||||
ammo_type = /obj/item/ammo_casing/rubber9mm
|
||||
max_ammo = 8
|
||||
@@ -250,6 +250,7 @@
|
||||
return 0
|
||||
|
||||
/obj/item/ammo_box/magazine/enforcer/lethal
|
||||
name = "handgun magazine (9mm)"
|
||||
ammo_type = /obj/item/ammo_casing/c9mm
|
||||
|
||||
/obj/item/ammo_box/magazine/wt550m9
|
||||
|
||||
@@ -142,11 +142,10 @@
|
||||
|
||||
/obj/item/gun/energy/kinetic_accelerator/experimental
|
||||
name = "experimental kinetic accelerator"
|
||||
desc = "A modified, far more dangerous version of the proto-kinetic accelerator, with half the cooldown and twice the modkit space of the standard version."
|
||||
desc = "A modified version of the proto-kinetic accelerator, with twice the modkit space of the standard version."
|
||||
icon_state = "kineticgun_h"
|
||||
item_state = "kineticgun_h"
|
||||
origin_tech = "combat=5;powerstorage=3;engineering=5"
|
||||
overheat_time = 8
|
||||
max_mod_capacity = 200
|
||||
|
||||
//Casing
|
||||
|
||||
Reference in New Issue
Block a user