Skip to content
This repository was archived by the owner on May 22, 2025. It is now read-only.

Commit 24ee9b9

Browse files
committed
TGS Test merge #12948
2 parents 465c970 + bb12277 commit 24ee9b9

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+783
-17
lines changed

code/__DEFINES/cargo.dm

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,3 +50,5 @@ GLOBAL_LIST_INIT(podstyles, list(\
5050
list(POD_SHAPE_OTHER, "gondola", FALSE, FALSE, FALSE, RUBBLE_NONE, "gondola", "The silent walker. This one seems to be part of a delivery agency."),\
5151
list(POD_SHAPE_OTHER, FALSE, FALSE, FALSE, FALSE, RUBBLE_NONE, FALSE, FALSE, "rl_click", "give_po")\
5252
))
53+
54+
GLOBAL_LIST_INIT(junkmail_messages, world.file2list("strings/junkmail.txt"))

code/__DEFINES/colors.dm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
#define COLOR_MAGENTA "#FF00FF"
3030
#define COLOR_PURPLE "#800080"
3131
#define COLOR_ORANGE "#FF9900"
32+
#define COLOR_PALE_ORANGE "#FFBE9D"
3233
#define COLOR_BEIGE "#CEB689"
3334
#define COLOR_BLUE_GRAY "#75A2BB"
3435
#define COLOR_BROWN "#BA9F6D"

code/__DEFINES/economy.dm

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
#define STARTING_PAYCHECKS 5
2+
/// How much mail the Economy SS will create per minute, regardless of firing time.
3+
#define MAX_MAIL_PER_MINUTE 3
4+
/// Probability of using letters of envelope sprites on all letters.
5+
#define FULL_CRATE_LETTER_ODDS 70
26

37
#define PAYCHECK_ASSISTANT 5
48
#define PAYCHECK_MINIMAL 5

code/controllers/subsystem/economy.dm

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,15 @@ SUBSYSTEM_DEF(economy)
5353
var/bounty_modifier = 1
5454
///The modifier multiplied to the value of cargo pack prices.
5555
var/pack_price_modifier = 1
56+
/// Number of mail items generated.
57+
var/mail_waiting = 0
58+
/// Mail Holiday: AKA does mail arrive today? Always blocked on Sundays.
59+
var/mail_blocked = FALSE
5660

5761
/datum/controller/subsystem/economy/Initialize(timeofday)
5862
var/budget_to_hand_out = round(budget_pool / department_accounts.len)
63+
if(time2text(world.timeofday, "DDD") == SUNDAY)
64+
mail_blocked = TRUE
5965
for(var/A in department_accounts)
6066
if(A == ACCOUNT_SEC)
6167
new /datum/bank_account/department(A, STARTING_SEC_BUDGET)
@@ -69,6 +75,7 @@ SUBSYSTEM_DEF(economy)
6975
secmedsrv_payout() // Payout based on crew safety, health, and mood.
7076
civ_payout() // Payout based on ??? Profit
7177
car_payout() // Cargo's natural gain in the cash moneys.
78+
var/delta_time = wait / (5 MINUTES)
7279
var/list/dictionary = list()
7380
for(var/datum/corporation/c in GLOB.corporations)
7481
dictionary[c] = list()
@@ -80,6 +87,8 @@ SUBSYSTEM_DEF(economy)
8087
if(B.account_holder in dictionary[c])
8188
B.payday(c.paymodifier, TRUE)
8289
B.payday(1)
90+
var/effective_mailcount = living_player_count()
91+
mail_waiting += clamp(effective_mailcount, 1, MAX_MAIL_PER_MINUTE * 5 * delta_time)
8392

8493
/datum/controller/subsystem/economy/proc/get_dep_account(dep_id)
8594
for(var/datum/bank_account/department/D in generated_accounts)

code/game/objects/effects/spawners/lootdrop.dm

Lines changed: 63 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,14 @@
1010
/obj/effect/spawner/lootdrop/Initialize(mapload)
1111
..()
1212
if(loot && loot.len)
13-
var/turf/T = get_turf(src)
1413
var/loot_spawned = 0
1514
while((lootcount-loot_spawned) && loot.len)
1615
var/lootspawn = pickweight(loot)
1716
if(!lootdoubles)
1817
loot.Remove(lootspawn)
1918

2019
if(lootspawn)
21-
var/atom/movable/spawned_loot = new lootspawn(T)
20+
var/atom/movable/spawned_loot = new lootspawn(loc)
2221
if (!fan_out_items)
2322
if (pixel_x != 0)
2423
spawned_loot.pixel_x = pixel_x
@@ -30,6 +29,48 @@
3029
loot_spawned++
3130
return INITIALIZE_HINT_QDEL
3231

32+
/obj/effect/spawner/lootdrop/surgery_tool_advanced
33+
name = "Advanced surgery tool spawner"
34+
loot = list( // Mail loot spawner. Drop pool of advanced medical tools typically from research. Not endgame content.
35+
/obj/item/scalpel/advanced,
36+
/obj/item/retractor/advanced,
37+
/obj/item/cautery/advanced,
38+
)
39+
40+
/obj/effect/spawner/lootdrop/surgery_tool_alien
41+
name = "Rare surgery tool spawner"
42+
loot = list( // Mail loot spawner. Some sort of random and rare surgical tool. Alien tech found here.
43+
/obj/item/scalpel/alien,
44+
/obj/item/hemostat/alien,
45+
/obj/item/retractor/alien,
46+
/obj/item/circular_saw/alien,
47+
/obj/item/surgicaldrill/alien,
48+
/obj/item/cautery/alien,
49+
)
50+
51+
/obj/effect/spawner/lootdrop/memeorgans
52+
name = "meme organ spawner"
53+
lootcount = 5
54+
loot = list(
55+
/obj/item/organ/ears/penguin,
56+
/obj/item/organ/ears/cat,
57+
/obj/item/organ/eyes/moth,
58+
/obj/item/organ/eyes/snail,
59+
/obj/item/organ/tongue/bone,
60+
/obj/item/organ/tongue/fly,
61+
/obj/item/organ/tongue/snail,
62+
/obj/item/organ/tongue/lizard,
63+
/obj/item/organ/tongue/alien,
64+
///obj/item/organ/tongue/ethereal,
65+
/obj/item/organ/tongue/robot,
66+
/obj/item/organ/tongue/zombie,
67+
/obj/item/organ/appendix,
68+
/obj/item/organ/liver/fly,
69+
/obj/item/organ/lungs/plasmaman,
70+
/obj/item/organ/tail/cat,
71+
/obj/item/organ/tail/lizard,
72+
)
73+
3374
/obj/effect/spawner/lootdrop/armory_contraband
3475
name = "armory contraband gun spawner"
3576
lootdoubles = FALSE
@@ -56,6 +97,26 @@
5697
/obj/item/toy/cards/deck/syndicate = 2
5798
)
5899

100+
/obj/effect/spawner/lootdrop/seed_rare
101+
name = "rare seed"
102+
lootcount = 5
103+
loot = list( // /obj/item/seeds/random is not a random seed, but an exotic seed.
104+
/obj/item/seeds/random = 30,
105+
/obj/item/seeds/liberty = 5,
106+
/obj/item/seeds/replicapod = 5,
107+
/obj/item/seeds/reishi = 5,
108+
/obj/item/seeds/nettle/death = 1,
109+
/obj/item/seeds/plump/walkingmushroom = 1,
110+
/obj/item/seeds/cannabis/rainbow = 1,
111+
/obj/item/seeds/cannabis/death = 1,
112+
/obj/item/seeds/cannabis/white = 1,
113+
/obj/item/seeds/cannabis/ultimate = 1,
114+
/obj/item/seeds/kudzu = 1,
115+
/obj/item/seeds/angel = 1,
116+
/obj/item/seeds/glowshroom/glowcap = 1,
117+
/obj/item/seeds/glowshroom/shadowshroom = 1,
118+
)
119+
59120
/obj/effect/spawner/lootdrop/grille_or_trash
60121
name = "maint grille or trash spawner"
61122
loot = list(/obj/structure/grille = 5,

code/game/objects/items/grenades/atmos_grenades.dm

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,29 @@
1818
playsound(src, 'sound/effects/hit_on_shattered_glass.ogg', volume, TRUE)
1919
addtimer(CALLBACK(src, .proc/prime), isnull(delayoverride)? det_time : delayoverride)
2020

21+
/obj/item/grenade/gas_crystal/proto_nitrate_crystal
22+
name = "Proto Nitrate crystal"
23+
desc = "A crystal made from the Proto Nitrate gas, you can see the liquid gases inside."
24+
icon_state = "proto_nitrate_crystal"
25+
///Range of the grenade air refilling
26+
var/refill_range = 5
27+
///Amount of Nitrogen gas released (close to the grenade)
28+
var/n2_gas_amount = 80
29+
///Amount of Oxygen gas released (close to the grenade)
30+
var/o2_gas_amount = 30
31+
32+
/obj/item/grenade/gas_crystal/proto_nitrate_crystal/prime(mob/living/lanced_by)
33+
. = ..()
34+
update_mob()
35+
playsound(src, 'sound/effects/spray2.ogg', 100, TRUE)
36+
for(var/turf/turf_loc in view(refill_range, loc))
37+
if(!isopenturf(turf_loc))
38+
continue
39+
var/distance_from_center = max(get_dist(turf_loc, loc), 1)
40+
var/turf/open/floor_loc = turf_loc
41+
floor_loc.atmos_spawn_air("n2=[n2_gas_amount / distance_from_center];o2=[o2_gas_amount / distance_from_center];TEMP=273")
42+
qdel(src)
43+
2144
/obj/item/grenade/gas_crystal/healium_crystal
2245
name = "Healium crystal"
2346
desc = "A crystal made from the Healium gas, it's cold to the touch."
@@ -94,3 +117,33 @@
94117
var/turf/open/floor_loc = turf_loc
95118
floor_loc.atmos_spawn_air("n2o=[n2o_gas_amount / distance_from_center];TEMP=273")
96119
qdel(src)
120+
121+
/obj/item/grenade/gas_crystal/crystal_foam
122+
name = "crystal foam"
123+
desc = "A crystal with a foggy inside"
124+
icon_state = "crystal_foam"
125+
var/breach_range = 7
126+
127+
/obj/item/grenade/gas_crystal/crystal_foam/prime(mob/living/lanced_by)
128+
. = ..()
129+
130+
var/datum/reagents/first_batch = new
131+
var/datum/reagents/second_batch = new
132+
var/list/datum/reagents/reactants = list()
133+
134+
first_batch.add_reagent(/datum/reagent/aluminium, 75)
135+
second_batch.add_reagent(/datum/reagent/smart_foaming_agent, 25)
136+
second_batch.add_reagent(/datum/reagent/toxin/acid/fluacid, 25)
137+
reactants += first_batch
138+
reactants += second_batch
139+
140+
var/turf/detonation_turf = get_turf(src)
141+
142+
chem_splash(detonation_turf, breach_range, reactants)
143+
144+
playsound(src, 'sound/effects/spray2.ogg', 100, TRUE)
145+
log_game("A grenade detonated at [AREACOORD(detonation_turf)]")
146+
147+
update_mob()
148+
149+
qdel(src)

0 commit comments

Comments
 (0)