Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
75 commits
Select commit Hold shift + click to select a range
b525283
sloppiest tgui known to man, and the start of shop 2
dwasint May 19, 2026
fd1bdcf
fixes, patreon item placeholder, unique unlock placeholder, some fixe…
dwasint May 19, 2026
ec4ec33
makes it show up on the ui
dwasint May 19, 2026
a0504a2
adds donator tag
dwasint May 19, 2026
7c955a8
adds donator info fixes search bar and tab overflow
dwasint May 19, 2026
867a1b1
adds a dedicated proc for fe
dwasint May 19, 2026
de7a946
adds in color pallettes
dwasint May 19, 2026
75db582
does this far better
dwasint May 19, 2026
7ec00d2
kills triumph buy menu entirely since its now part of the shop as Sea…
dwasint May 19, 2026
66d1ea4
Update traits.dm
dwasint May 19, 2026
3e8fb38
makes these all cost 1 for single rounds
dwasint May 20, 2026
28c32b6
fixes
dwasint May 20, 2026
ae546aa
adds in Try for patreons basically the old system in the way of infin…
dwasint May 20, 2026
5d04622
whoops
dwasint May 20, 2026
c0a65c2
moves validation around
dwasint May 20, 2026
642f53d
Update shop.dm
dwasint May 20, 2026
dc625af
Update special_traits.dm
dwasint May 20, 2026
0cf1356
Merge remote-tracking branch 'upstream/main' into special-request
dwasint May 20, 2026
911d1da
Update shop.dm
dwasint May 20, 2026
df9ef96
removes single cost and makes it % of total cost (5%)
dwasint May 20, 2026
287dac9
adds in a framework for trade and tickets
dwasint May 20, 2026
a4cb4e4
triumph tickets
dwasint May 20, 2026
04f0d01
trades are persistant through rounds and support offline keys fully
dwasint May 20, 2026
e2affbf
fixes job boosts and special tickets
dwasint May 20, 2026
2712fe6
online keys
dwasint May 21, 2026
8663d10
Update triumph.dm
dwasint May 21, 2026
4c8a98b
Update shop.dm
dwasint May 22, 2026
d2a81bf
adds in admin panel (kinda weird admin panel but eh) makes ticket log…
dwasint May 22, 2026
0c48458
Update __helpers.dm
dwasint May 22, 2026
32f36e4
Merge remote-tracking branch 'upstream/main' into special-request
dwasint May 23, 2026
42ac71f
adds a shop elascat
dwasint May 24, 2026
5569b5d
only non free
dwasint May 24, 2026
69de265
Out of the corpse of Psydon, clothing for the young. Their flesh is n…
dwasint May 26, 2026
0a26fd4
Update mirespider.dm
dwasint May 26, 2026
ca743ce
adds rings, and cloaks to the shop and a puffer for 100k
dwasint May 26, 2026
a4fa89a
adds these
dwasint May 26, 2026
e3651bd
helmets
dwasint May 26, 2026
385ca35
shirts
dwasint May 26, 2026
94fb555
Update loadout.dm
dwasint May 27, 2026
010bfd9
armors
dwasint May 27, 2026
6df9c80
new masks.
dwasint May 27, 2026
5201542
fixes
dwasint May 27, 2026
15aa153
belts
dwasint May 27, 2026
72d0f11
neck items
dwasint May 27, 2026
aa24d35
Update misc.dm
dwasint May 27, 2026
766913e
reanmes to Blackmeadow
dwasint May 27, 2026
0e3873c
renames, ups cost
dwasint May 27, 2026
452c2d6
pants and shoes
dwasint May 27, 2026
a2633a7
gloves
dwasint May 27, 2026
2da2539
justice tabard
dwasint May 27, 2026
435ed66
Update vanderlin.dme
dwasint May 27, 2026
ddc4719
Merge branch 'main' into special-request
dwasint May 27, 2026
6b477df
Update _lists.dm
dwasint May 27, 2026
ae0a9b6
Revert "Update _lists.dm"
dwasint May 27, 2026
e26127a
adds ring crafting and a bunch of new materials that are going to be …
dwasint May 28, 2026
e6f2811
recipe for dragon ring
dwasint May 28, 2026
7975057
adds some non craftables
dwasint May 28, 2026
b569660
whoops
dwasint May 28, 2026
ee98c28
adds missing race armor and files for them, moves dwarf stuff into n…
dwasint May 28, 2026
7221a31
removes the rare now
dwasint May 28, 2026
90a280e
whoops
dwasint May 28, 2026
51c6f59
wowie
dwasint May 29, 2026
50f483f
golden recipes
dwasint May 29, 2026
45065ef
some more crafting recipes
dwasint May 29, 2026
b3033ca
Update sewing.dm
dwasint May 29, 2026
e2f1160
adds blackmeadow stuff to blacklist since we don't have kitsune smiths
dwasint May 29, 2026
4fdb547
Update craftable_clothes.dm
dwasint May 29, 2026
8c38593
bronze recipes
dwasint May 29, 2026
460f277
rest of em
dwasint May 29, 2026
f4a39ba
whoops
dwasint May 29, 2026
fc0e3f2
whoops x2
dwasint May 29, 2026
1fa3a0b
last of em
dwasint May 29, 2026
fb6df03
some tweaks
dwasint May 29, 2026
63f2740
Update valuables.dm
dwasint May 29, 2026
4b264df
Update shoes_loadout_items.dm
dwasint May 31, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions _maps/map_files/shared/CentCom.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -5665,10 +5665,10 @@
pixel_x = -24
},
/obj/structure/mannequin/male,
/obj/item/clothing/head/rare/dwarfplate,
/obj/item/clothing/armor/rare/dwarfplate,
/obj/item/clothing/shoes/boots/rare/dwarfplate,
/obj/item/clothing/gloves/rare/dwarfplate,
/obj/item/clothing/head/helmet/heavy/dwarven,
/obj/item/clothing/shoes/boots/armor/dwarven,
/obj/item/clothing/armor/plate/full/dwarven,
/obj/item/clothing/gloves/plate/dwarven,
/obj/machinery/light/fueled/torchholder/l{
pixel_x = 4
},
Expand Down
6 changes: 3 additions & 3 deletions _maps/map_files/vanderlin/vanderlin_mountain.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -1219,7 +1219,7 @@
/turf/open/lava,
/area/under/cavelava)
"afL" = (
/obj/item/clothing/shoes/boots/rare/dwarfplate,
/obj/item/clothing/shoes/boots/armor/dwarven,
/obj/item/reagent_containers/food/snacks/rotten/egg,
/turf/open/floor/naturalstone,
/area/under/mountains/anvil/lower)
Expand Down Expand Up @@ -3488,7 +3488,7 @@
/area/indoors/town/church/inquisition)
"aqZ" = (
/obj/structure/rack,
/obj/item/clothing/gloves/rare/dwarfplate,
/obj/item/clothing/gloves/plate/dwarven,
/turf/open/floor/sand,
/area/indoors/mountains/anvil/keep)
"ara" = (
Expand Down Expand Up @@ -9050,7 +9050,7 @@
/area/under/mountains/anvil/upper)
"aRq" = (
/obj/structure/closet/crate/drawer,
/obj/item/clothing/head/rare/dwarfplate,
/obj/item/clothing/head/helmet/heavy/dwarven,
/obj/effect/spawner/map_spawner/loot/coin/med,
/turf/open/floor/cobble,
/area/indoors/mountains/anvil/keep)
Expand Down
8 changes: 4 additions & 4 deletions _maps/matthios_tomb/room/hctomb3.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -618,11 +618,11 @@
/area/under/tomb/cave/spider)
"ws" = (
/obj/structure/rack,
/obj/item/clothing/shoes/boots/rare/dwarfplate{
/obj/item/clothing/shoes/boots/armor/dwarven{
pixel_x = -6;
pixel_y = 7
},
/obj/item/clothing/gloves/rare/dwarfplate{
/obj/item/clothing/gloves/plate/dwarven{
pixel_y = -3;
pixel_x = 1
},
Expand Down Expand Up @@ -1181,7 +1181,7 @@
/area/under/tomb/indoors)
"LV" = (
/obj/structure/rack,
/obj/item/clothing/head/rare/dwarfplate{
/obj/item/clothing/head/helmet/heavy/dwarven{
pixel_y = 5;
pixel_x = -6
},
Expand Down Expand Up @@ -1418,7 +1418,7 @@
/obj/structure/spider/stickyweb,
/obj/machinery/light/fueled/wallfire/candle/blue/l,
/obj/structure/closet/crate/chest/lootbox,
/obj/item/clothing/armor/rare/dwarfplate,
/obj/item/clothing/armor/plate/full/dwarven,
/turf/open/floor/blocks/stonered/tiny,
/area/under/tomb/indoors)
"Vz" = (
Expand Down
2 changes: 1 addition & 1 deletion _maps/matthios_tomb/unusable/Malphpiece7.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
/obj/item/clothing/head/hatfur,
/obj/item/clothing/shoes/boots/furlinedboots,
/obj/item/clothing/armor/plate,
/obj/item/clothing/head/rare/dwarfplate,
/obj/item/clothing/head/helmet/heavy/dwarven,
/obj/item/weapon/polearm/spear/billhook,
/obj/item/clothing/ring/gold/ravox,
/obj/item/coin/gold/pile,
Expand Down
1 change: 1 addition & 0 deletions code/__DEFINES/elastic.dm
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
#define ELASCAT_COMBAT "combat"
#define ELASCAT_CRAFTING "crafting"
#define ELASCAT_ECONOMY "economy"
#define ELASCAT_SHOP "shop"
#define ELASCAT_STORYTELLER "storyteller"
#define ELASCAT_BALANCE "balance"
#define ELASCAT_MEDICAL "medical"
Expand Down
18 changes: 18 additions & 0 deletions code/__DEFINES/loadout.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
// Bitflags for loadout item restrictions/properties
#define LOADOUT_FLAG_NONE 0
#define LOADOUT_FLAG_NO_RENT (1<<0) // Cannot be rented for single rounds, must be owned permanently
#define LOADOUT_FLAG_NO_EQUIP (1<<1) // Cannot be manually equipped (granted automatically on spawn, cosmetic/species grants)
#define LOADOUT_FLAG_PATREON_LOCKED (1<<2) // Requires active patreon/donator status to use
#define LOADOUT_FLAG_ACHIEVEMENT_LOCKED (1<<3) // requires required_award to be satisfied (replaces checking required_award != null implicitly)
#define LOADOUT_FLAG_NO_DONATOR_FREE (1<<4)

#define TICKET_TYPE_LOADOUT "loadout"
#define TICKET_TYPE_SPECIAL "special"
#define TICKET_TYPE_JOB_BOOST "job_boost"
#define TICKET_TYPE_UNKNOWN "unknown"
#define TICKET_TYPE_TRIUMPH "triumph"

// Seconds the *sender* must wait before a cancel is processed
// (prevents accepting+cancelling race that would dupe tickets)
#define TICKET_TRADE_CANCEL_LOCK 5
#define TRIUMPH_TICKET_MIN_CONVERT 10
19 changes: 12 additions & 7 deletions code/__DEFINES/triumphs.dm
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// Character category and its buys
#define TRIUMPH_CAT_CHARACTER "CHARACTER"
#define TRIUMPH_CAT_CHARACTER "Character"

#define TRIUMPH_BUY_RACE_ALL "race_all"
#define TRIUMPH_BUY_ANY_CLASS "pick_any"
Expand All @@ -8,13 +8,13 @@
#define TRIUMPH_BUY_SECRET_OFFICIANT "secret_officiant"

// Character category and its buys
#define TRIUMPH_CAT_CHALLENGES "CHALLENGES"
#define TRIUMPH_CAT_CHALLENGES "Challenges"

#define TRIUMPH_BUY_LEPROSY "leprosy"
#define TRIUMPH_BUY_CURSE "curse"

// Storyteller category and its buys
#define TRIUMPH_CAT_STORYTELLER "STORYTELLER"
#define TRIUMPH_CAT_STORYTELLER "Storyteller"

#define TRIUMPH_BUY_ASTRATA_INFLUENCE "astrata_influence"
#define TRIUMPH_BUY_NOC_INFLUENCE "noc_influence"
Expand Down Expand Up @@ -47,22 +47,27 @@
#define TRIUMPH_BUY_ASTRATA_INFLUENCE_REDUCTION "astrata_influence_reduction"

// Misc category and its buys
#define TRIUMPH_CAT_MISC "MISC"
#define TRIUMPH_CAT_MISC "Misc"

#define TRIUMPH_BUY_PSYDON_FAVOURITE "psydon_favourite"

// Misc category and its buys
#define TRIUMPH_CAT_COMMUNAL "COMMUNAL"
#define TRIUMPH_CAT_COMMUNAL "Communal"

#define TRIUMPH_BUY_PSYDON_RETIREMENT "psydon_retirement"
#define TRIUMPH_BUY_ORPHANAGE_RENOVATION "orphanage_renovation"
#define TRIUMPH_BUY_LONGER_WEEK "longer_week"
#define TRIUMPH_BUY_EXOTIC_TASTES "exotic_tastes"

#define TRIUMPH_CAT_SEASONAL "SEASONAL"
#define TRIUMPH_CAT_SEASONAL "Seasonal"

#define TRIUMPH_BUY_SUBTERRAN_DWARF "subterran_dwarf"
#define TRIUMPH_BUY_FORMIKRAG_KOBOLD "formikrag_kobold"

// Bought triumph buys category
#define TRIUMPH_CAT_ACTIVE_DATUMS "BOUGHT"
#define TRIUMPH_CAT_ACTIVE_DATUMS "Bought"

/// Cost to roll a random eligible special trait
#define TRIUMPH_COST_RANDOM_SPECIAL 1
/// Cost to directly pick a specific eligible special trait
#define TRIUMPH_COST_SPECIFIC_SPECIAL 400
1 change: 1 addition & 0 deletions code/_globalvars/lists/mobs.dm
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
GLOBAL_LIST_EMPTY(keys_by_ckey) //all client ckeys, and their associated keys (keys_by_ckey[ckey] -> key), isn't cleared when the client leaves the game
GLOBAL_LIST_EMPTY(clients) //all clients
GLOBAL_LIST_EMPTY(key_list)
GLOBAL_LIST_EMPTY(admins) //all clients whom are admins
GLOBAL_PROTECT(admins)
GLOBAL_LIST_EMPTY(deadmins) //all ckeys who have used the de-admin verb.
Expand Down
13 changes: 2 additions & 11 deletions code/_globalvars/special_traits/special_traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ GLOBAL_LIST_INIT(special_traits, build_special_traits())

/proc/try_apply_character_post_equipment(mob/living/carbon/human/character, client/player)
var/datum/job/job
apply_loadouts(character, player)
if(character.job)
job = SSjob.name_occupations[character.job]
if(!job)
Expand All @@ -41,7 +42,6 @@ GLOBAL_LIST_INIT(special_traits, build_special_traits())
return
// Apply the stuff if we have a job that has no adv classes
apply_character_post_equipment(character, player)
apply_loadouts(arglist(args))

/proc/apply_character_post_equipment(mob/living/carbon/human/character, client/player)
if(!player)
Expand All @@ -61,6 +61,7 @@ GLOBAL_LIST_INIT(special_traits, build_special_traits())
return
apply_special_trait_if_able(character, player, trait_type)
player.prefs.next_special_trait = null
player.prefs.save_preferences()

/proc/apply_voicepacks(mob/living/carbon/human/character, client/player)
switch(player.prefs.voice_type)
Expand All @@ -72,16 +73,6 @@ GLOBAL_LIST_INIT(special_traits, build_special_traits())
character.dna.species.soundpack_f = new /datum/voicepack/female/haughty()
return

/proc/apply_loadouts(mob/living/carbon/human/character, client/player)
if(!player)
player = character.client
if(!player?.prefs)
return
for(var/i in 1 to 3)
if(isnull(player.prefs.vars["loadout[i]"]))
continue
character.mind.special_items["[player.prefs.vars["loadout[i]"]:item_path:name]"] = player.prefs.vars["loadout[i]"]:item_path

/proc/apply_special_trait_if_able(mob/living/carbon/human/character, client/player, trait_type)
if(!charactet_eligible_for_trait(character, player, trait_type))
log_game("SPECIALS: Failed to apply [trait_type] for [key_name(character)]")
Expand Down
1 change: 1 addition & 0 deletions code/_globalvars/special_traits/traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
var/list/restricted_races
var/list/restricted_jobs
var/allowed_flaw
var/cost_modifier = 2

/// check if this characters can be applied this special_trait
/datum/special_trait/proc/can_apply(mob/living/carbon/human/character)
Expand Down
7 changes: 6 additions & 1 deletion code/controllers/subsystem/achievements.dm
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,12 @@ SUBSYSTEM_DEF(achievements)
var/list/datum/award/awards = list()

/datum/controller/subsystem/achievements/Initialize(timeofday)
setup()
return ..()

/datum/controller/subsystem/achievements/proc/setup()
if(length(awards))
return
// Instantiate all award singletons
for(var/T in subtypesof(/datum/award/achievement))
var/datum/award/A = new T
Expand All @@ -33,7 +39,6 @@ SUBSYSTEM_DEF(achievements)
if(C.player_details?.achievements && !C.player_details.achievements.initialized)
C.player_details.achievements.InitializeData()

return ..()

/datum/controller/subsystem/achievements/Shutdown()
force_save_all()
Expand Down
3 changes: 3 additions & 0 deletions code/controllers/subsystem/elastic/config.dm
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
/datum/config_entry/string/elastic_endpoint
protection = CONFIG_ENTRY_HIDDEN

/datum/config_entry/string/shop_endpoint
protection = CONFIG_ENTRY_HIDDEN

/datum/config_entry/string/combat_endpoint
protection = CONFIG_ENTRY_HIDDEN

Expand Down
7 changes: 7 additions & 0 deletions code/controllers/subsystem/elastic/shards/shop.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/datum/elastic_shard/shop
name = "Shop"
upload_frequency = 5 MINUTES
shard_category = ELASCAT_SHOP

/datum/elastic_shard/shop/get_endpoint()
return CONFIG_GET(string/shop_endpoint)
3 changes: 1 addition & 2 deletions code/controllers/subsystem/ticker.dm
Original file line number Diff line number Diff line change
Expand Up @@ -469,7 +469,6 @@ SUBSYSTEM_DEF(ticker)

job_change_locked = FALSE

SStriumphs.fire_on_PostSetup()
for(var/obj/effect/landmark/start/S as anything in GLOB.roundstart_landmarks)
if(!istype(S))//we can not runtime here. not in this important of a proc.
stack_trace("[S] [S.type] found in roundstart landmarks list, which isn't a start landmark!")
Expand Down Expand Up @@ -533,7 +532,7 @@ SUBSYSTEM_DEF(ticker)
livings += living
GLOB.character_ckey_list[living.real_name] = living.ckey
if(ishuman(living))
try_apply_character_post_equipment(living)
try_apply_character_post_equipment(living, living.client)

if(livings.len)
addtimer(CALLBACK(src, PROC_REF(release_characters), livings), 30, TIMER_CLIENT_TIME)
Expand Down
Loading
Loading