Skip to content

Commit

Permalink
round aspects
Browse files Browse the repository at this point in the history
  • Loading branch information
casualspacestation14enjoyer committed Dec 26, 2024
1 parent 3736864 commit 0c559ed
Show file tree
Hide file tree
Showing 15 changed files with 168 additions and 2 deletions.
1 change: 1 addition & 0 deletions code/__HELPERS/roundend.dm
Original file line number Diff line number Diff line change
Expand Up @@ -341,6 +341,7 @@
shit += "<br><font color='#f200ff'><span class='bold'>Drugs Snorted:</span></font> [snort]"
shit += "<br><font color='#0f555c'><span class='bold'>Beards Shaved:</span></font> [beardshavers]"
shit += "<br><font color='#ffffff'><span class='bold'>Pleasures:</span></font> [cums]"
shit += "<br><font color='#ffee00'><span class='bold'>Round Aspect:</span></font> [round_aspect.name]"
// if(cuckers.len)
// shit += "<br><font color='#4e488a'><span class='bold'>Adulterers:</span></font> "
// for(var/x in cuckers.len)
Expand Down
7 changes: 6 additions & 1 deletion code/controllers/subsystem/rogue/treasury.dm
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,12 @@ SUBSYSTEM_DEF(treasury)

/datum/controller/subsystem/treasury/Initialize()
//Randomizes the roundstart amount of money and the queens tax.
treasury_value = rand(800,1500)
if(aspect_chosen(/datum/round_aspect/fulltreasury))
treasury_value = 2500
else if(aspect_chosen(/datum/round_aspect/emptytreasury))
treasury_value = 100
else
treasury_value = rand(800,1500)
queens_tax = pick(0.09, 0.15, 0.21, 0.30)

//For the merchants import and export.
Expand Down
23 changes: 23 additions & 0 deletions code/controllers/subsystem/ticker.dm
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ SUBSYSTEM_DEF(ticker)

var/hide_mode = 0
var/datum/game_mode/mode = null
var/datum/round_aspect/round_aspect = null
var/forcing_aspect = FALSE

var/login_music //music played in pregame lobby
var/round_end_sound //music/jingle played when the world reboots
Expand Down Expand Up @@ -327,6 +329,16 @@ SUBSYSTEM_DEF(ticker)
var/isroguefight = FALSE
var/isrogueworld = FALSE

/datum/controller/subsystem/ticker/proc/pickaspect()
if(!forcing_aspect)
var/list/possibilities = list()
for(var/thing in subtypesof(/datum/round_aspect))//Populate possible aspects list.
var/datum/round_aspect/A = thing
possibilities += A
var/chosen = pick(possibilities)
round_aspect = new chosen
round_aspect.apply()

/datum/controller/subsystem/ticker/proc/setup()
message_admins("<span class='boldannounce'>Starting game...</span>")
var/init_start = world.timeofday
Expand Down Expand Up @@ -471,9 +483,20 @@ SUBSYSTEM_DEF(ticker)
// SSshuttle.emergency.setTimer(ROUNDTIMERBOAT)

SSdbcore.SetRoundStart()
#ifndef TESTING
pickaspect()
#endif

message_admins("<span class='notice'><B>Welcome to [station_name()], enjoy your stay!</B></span>")

spawn(10)
if(round_aspect.sekrit)
to_chat(world, "<span class='notice'>This round's aspect is: Nothing!</span>")
to_chat(world, "<span class='info'>Normality above all.</span>")
else
to_chat(world, "<span class='notice'>This round's aspect is: [round_aspect.name]</span>")
to_chat(world, "<span class='info'>[round_aspect.description]</span>")

for(var/client/C in GLOB.clients)
if(C.mob == SSticker.rulermob)
C.mob.playsound_local(C.mob, 'sound/misc/royal_roundstart.ogg', 100, FALSE)
Expand Down
75 changes: 75 additions & 0 deletions code/datums/round_aspects.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
/datum/round_aspect
var/name = "Round Aspect"
var/description = "Uh oh."
var/sekrit = FALSE // dictates whether the aspect should be revealed on round start. if FALSE it will be only revealed after the round has ended

// Yup, that's all they are. They're basically just hollow shells and don't do much by themselves.

/datum/round_aspect/proc/apply() // Instant thing that happens when it's chosen. Used for aspects that change one single var
return

/proc/aspect_chosen(var/datum/round_aspect/aspect) // use to check if an aspects chosen
if(istype(SSticker.round_aspect, aspect))
return TRUE

/datum/round_aspect/normal
name = "Nothing!"
description = "Normality above all."

/datum/round_aspect/strongbums // these arent bums. these are fraggers.
name = "Strong Beggars"
description = "Life on the streets requires a lot of physical work, y'know."

/datum/round_aspect/kingforareason
name = "King for a Reason"
description = "The previous ruler's reign was cut unfortunately short after his throat was ripped out. Praise be the new King!"

/datum/round_aspect/somethinginthewater
name = "Something in the Water"
description = "You feel just a little bit dumber."

/datum/round_aspect/merchanthoarder
name = "Greedy Bastard"
description = "The merchant is just a little bit more greedy than usual."

/datum/round_aspect/favorsintherightplaces
name = "Favors in the Right Places"
description = "The merchant knows how to exploit people, the balloon is faster."

/datum/round_aspect/sexless
name = "Sexless"
description = "Everyone in the town is a virgin due to a rumor of a 'Lover's Plague', strange."

/datum/round_aspect/fulltreasury
name = "Full Treasury"
description = "The previous ruler was a great leader."

/datum/round_aspect/emptytreasury
name = "Empty Treasury"
description = "The previous ruler was a dick."

/datum/round_aspect/faulty
name = "Faulty Machines"
description = "SCOMs may need some maintenance from time to time so they don't scramble their messages, maybe a good slap will do the trick."

/datum/round_aspect/drugparty
name = "Town Party"
description = "Ugh... what happened last night?"

/datum/round_aspect/drunkparty
name = "Town Party"
description = "Ugh... what happened last night?"

/datum/round_aspect/drunkgarrison
name = "Delayed Inspection"
description = "The Garrison is overdue on an inspection, hopefully they aren't too rowdy."

/*
/datum/round_aspect/beggarking
name = "Peasantry Revolutionized"
description = "Well, the peasants revolted; and they won. Is this what you wanted? He looks like a fucking clown."
*/

/datum/round_aspect/crippledbeggars
name = "Crippled Beggars"
description = "Due to a previous Lord's decree all beggars got their legs broken, that was a long time ago, and they were training their arms. Better get a bow."
17 changes: 17 additions & 0 deletions code/modules/admin/admin_verbs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ GLOBAL_PROTECT(admin_verbs_admin)
return list(
/client/proc/adjusttriumph,
/client/proc/end_party, /*destroys our own admin datum so we can play as a regular player*/
/client/proc/forceaspect,
/client/proc/cmd_admin_say, /*admin-only ooc chat*/
/client/proc/hide_verbs, /*hides all our adminverbs*/
/client/proc/hide_most_verbs, /*hides all our hideable adminverbs*/
Expand Down Expand Up @@ -767,6 +768,22 @@ GLOBAL_PROTECT(admin_verbs_hideable)
log_admin("[key_name(usr)] has [AI_Interact ? "activated" : "deactivated"] Admin AI Interact")
message_admins("[key_name_admin(usr)] has [AI_Interact ? "activated" : "deactivated"] their AI interaction")

/client/proc/forceaspect()
set category = "GameMaster"
set name = "Force Aspect"
if(!holder)
return

var/list/possibilities = list()
for(var/thing in subtypesof(/datum/round_aspect))//Populate possible aspects list.
var/datum/round_aspect/A = thing
possibilities += A
var/chosen = input(usr, "Choose", "STONEMONGERS") as null|anything in possibilities
if(chosen)
SSticker.round_aspect = new chosen
SSticker.forcing_aspect = TRUE
SSticker.round_aspect.apply()

/client/proc/end_party()
set category = "GameMaster"
set name = "EndPlaytest"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,11 @@
shoes = /obj/item/clothing/shoes/roguetown/boots
belt = /obj/item/storage/belt/rogue/leather

/datum/outfit/job/roguetown/guardsman/pre_equip(mob/living/carbon/human/H, visualsOnly)
. = ..()
if(aspect_chosen(/datum/round_aspect/drunkgarrison))
H.reagents.add_reagent(/datum/reagent/consumable/ethanol/beer, 72) // 3 goblets worth

/* ! ! ! Class Selection Section Below ! ! !
Design philosphy:
- Footman, specializes in using axes/maces and shields. - Medium armor
Expand Down
3 changes: 3 additions & 0 deletions code/modules/jobs/job_types/roguetown/nobility/lord.dm
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,9 @@
H.change_stat("speed", 1)
H.change_stat("perception", 2)
H.change_stat("fortune", 5)
if(aspect_chosen(/datum/round_aspect/kingforareason))
H.change_stat("strength", 5)
H.change_stat("intelligence", -5)
if(H.gender == MALE)
pants = /obj/item/clothing/under/roguetown/tights/black
shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt/black
Expand Down
5 changes: 5 additions & 0 deletions code/modules/jobs/job_types/roguetown/nobility/merchant.dm
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,11 @@
min_pq = 0
selection_color = "#61679d"

/datum/job/roguetown/merchant/after_spawn(mob/living/H, mob/M, latejoin)
if(aspect_chosen(/datum/round_aspect/merchanthoarder))
give_bank_account = 250
. = ..()

/datum/outfit/job/roguetown/merchant/pre_equip(mob/living/carbon/human/H)
..()

Expand Down
7 changes: 7 additions & 0 deletions code/modules/jobs/job_types/roguetown/peasants/beggar.dm
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,13 @@
H.change_stat("intelligence", -3)
H.change_stat("constitution", -2)
H.change_stat("endurance", -2)
if(aspect_chosen(/datum/round_aspect/strongbums))
H.change_stat("strength", 5)
H.change_stat("intelligence", -2)
if(aspect_chosen(/datum/round_aspect/crippledbeggars))
var/datum/brain_trauma/severe/paralysis/paraplegic/T = new()
H.change_stat("strength", 6)
H.gain_trauma(T, TRAUMA_RESILIENCE_ABSOLUTE)

/datum/outfit/job/roguetown/vagrant
name = "Beggar"
6 changes: 6 additions & 0 deletions code/modules/jobs/job_types/roguetown/roguetown.dm
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,12 @@
if(check_crownlist(H.ckey))
H.mind.special_items["Champion Circlet"] = /obj/item/clothing/head/roguetown/crown/sparrowcrown
give_special_items(H)
if(aspect_chosen(/datum/round_aspect/somethinginthewater))
H.change_stat("intelligence", -1)
if(aspect_chosen(/datum/round_aspect/drugparty))
H.reagents.add_reagent(pick(/datum/reagent/ozium, /datum/reagent/moondust, /datum/reagent/druqks), 15)
if(aspect_chosen(/datum/round_aspect/drunkparty))
H.reagents.add_reagent(/datum/reagent/consumable/ethanol/beer, 72) // 3 goblets worth
for(var/list_key in SStriumphs.post_equip_calls)
var/datum/triumph_buy/thing = SStriumphs.post_equip_calls[list_key]
thing.on_activate(H)
Expand Down
2 changes: 2 additions & 0 deletions code/modules/mob/living/carbon/human/human.dm
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@
#ifdef MATURESERVER
sexcon = new /datum/sex_controller(src)
#endif
if(aspect_chosen(/datum/round_aspect/sexless))
virginity = TRUE
verbs += /mob/living/proc/mob_sleep
verbs += /mob/living/proc/lay_down

Expand Down
5 changes: 4 additions & 1 deletion code/modules/roguetown/roguemachine/merchant.dm
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,10 @@
if(!anchored)
return TRUE
if(world.time > next_airlift)
next_airlift = world.time + rand(2 MINUTES, 3 MINUTES)
if(aspect_chosen(/datum/round_aspect/favorsintherightplaces))
next_airlift = world.time + 1 MINUTES
else
next_airlift = world.time + rand(2 MINUTES, 3 MINUTES)
#ifdef TESTSERVER
next_airlift = world.time + 5 SECONDS
#endif
Expand Down
13 changes: 13 additions & 0 deletions code/modules/roguetown/roguemachine/scomm.dm
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
var/listening = TRUE
var/speaking = TRUE
var/dictating = FALSE
var/fucked = FALSE

/obj/structure/roguemachine/scomm/r
pixel_y = 0
Expand Down Expand Up @@ -46,6 +47,11 @@
if(.)
return
user.changeNext_move(CLICK_CD_MELEE)
if(user.used_intent.type == INTENT_HARM)
playsound(loc, 'sound/combat/hits/punch/punch (1).ogg', 100, FALSE, -1)
fucked = FALSE
update_icon()
return
playsound(loc, 'sound/misc/beep.ogg', 100, FALSE, -1)
listening = !listening
speaking = !speaking
Expand Down Expand Up @@ -94,6 +100,8 @@
icon_state = "scomm1"
else
icon_state = "scomm0"
if(fucked)
icon_state = "scomm-fucked"

/obj/structure/roguemachine/scomm/Destroy()
SSroguemachine.scomm_machines -= src
Expand Down Expand Up @@ -128,6 +136,11 @@
if(lowertext(raw_message) == "say laws")
dictate_laws()
return
if(aspect_chosen(/datum/round_aspect/faulty))
if(prob(22))
fucked = TRUE
if(fucked)
raw_message = stars(raw_message)
for(var/obj/structure/roguemachine/scomm/S in SSroguemachine.scomm_machines)
S.repeat_message(raw_message, src, usedcolor, message_language)
for(var/obj/item/scomstone/S in SSroguemachine.scomm_machines)
Expand Down
Binary file modified icons/roguetown/misc/machines.dmi
Binary file not shown.
1 change: 1 addition & 0 deletions stonekeep.dme
Original file line number Diff line number Diff line change
Expand Up @@ -406,6 +406,7 @@
#include "code\datums\progressbar.dm"
#include "code\datums\radiation_wave.dm"
#include "code\datums\recipe.dm"
#include "code\datums\round_aspects.dm"
#include "code\datums\ruins.dm"
#include "code\datums\saymode.dm"
#include "code\datums\shuttles.dm"
Expand Down

0 comments on commit 0c559ed

Please sign in to comment.