mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-14 19:03:21 +00:00
Floyd / Qustinnus (Sprites by Ausops, Some moodlets by Ike709)
add: Adds mood, which can be found by clicking on the face icon on your screen.
add: Adds various moodlets which affect your mood. Try eating your favourite food, playing an arcade game, reading a book, or petting a doggo to increase your moo. Also be sure to take care of your hunger on a regular basis, like always.
add: Adds config option to disable/enable mood.
add: Indoor area's now have a beauty var defined by the amount of cleanables in them, (We can later expand this to something like rimworld, where structures could make rooms more beautiful). These also affect mood. (Janitor now has gameplay purpose besides slipping and removing useless decals)
remove: Removes hunger slowdown, replacing it with slowdown by being depressed
imageadd: Icons for mood states and depression states
What this PR is
This PR adds a system that allows player to gain and lose moodlets based on events occuring to, and around them. These events then give the player a mood value based on what it is. For example a hug could give you +1 mood, while being stabbed in the eye with a screwdriver can give -5 mood. All these moodlets together determine the mood of your character which currently affects the following things:
Movement speed - If you are very sad you move slower. Replacing movement slow from hunger. (hunger now instead affects mood)
Screen blur - If you are sad you gain an overlay that slightly blurs the screen, increasing in severity as you get sadder.
Interaction / do after speed - If you are sad or happy your interaction speed with things such as handcuffs is changed. with a 25% longer time if you are sad, or 10% shorter time if you are extremely happy.
Hunger rate - You gain hunger slower if you are very happy.
79 lines
3.1 KiB
Plaintext
79 lines
3.1 KiB
Plaintext
/datum/round_event_control/brand_intelligence
|
|
name = "Brand Intelligence"
|
|
typepath = /datum/round_event/brand_intelligence
|
|
weight = 5
|
|
|
|
min_players = 15
|
|
max_occurrences = 1
|
|
|
|
/datum/round_event/brand_intelligence
|
|
announceWhen = 21
|
|
endWhen = 1000 //Ends when all vending machines are subverted anyway.
|
|
var/list/obj/machinery/vending/vendingMachines = list()
|
|
var/list/obj/machinery/vending/infectedMachines = list()
|
|
var/obj/machinery/vending/originMachine
|
|
var/list/rampant_speeches = list("Try our aggressive new marketing strategies!", \
|
|
"You should buy products to feed your lifestyle obsession!", \
|
|
"Consume!", \
|
|
"Your money can buy happiness!", \
|
|
"Engage direct marketing!", \
|
|
"Advertising is legalized lying! But don't let that put you off our great deals!", \
|
|
"You don't want to buy anything? Yeah, well, I didn't want to buy your mom either.")
|
|
|
|
|
|
/datum/round_event/brand_intelligence/announce(fake)
|
|
var/source = "unknown machine"
|
|
if(fake)
|
|
var/obj/machinery/vending/cola/example = /obj/machinery/vending/cola
|
|
source = initial(example.name)
|
|
else if(originMachine)
|
|
source = originMachine.name
|
|
priority_announce("Rampant brand intelligence has been detected aboard [station_name()]. Please stand by. The origin is believed to be \a [source].", "Machine Learning Alert")
|
|
|
|
/datum/round_event/brand_intelligence/start()
|
|
for(var/obj/machinery/vending/V in GLOB.machines)
|
|
if(!is_station_level(V.z))
|
|
continue
|
|
vendingMachines.Add(V)
|
|
if(!vendingMachines.len)
|
|
kill()
|
|
return
|
|
originMachine = pick(vendingMachines)
|
|
vendingMachines.Remove(originMachine)
|
|
originMachine.shut_up = 0
|
|
originMachine.shoot_inventory = 1
|
|
|
|
|
|
/datum/round_event/brand_intelligence/tick()
|
|
if(!originMachine || QDELETED(originMachine) || originMachine.shut_up || originMachine.wires.is_all_cut()) //if the original vending machine is missing or has it's voice switch flipped
|
|
for(var/obj/machinery/vending/saved in infectedMachines)
|
|
saved.shoot_inventory = 0
|
|
if(originMachine)
|
|
originMachine.speak("I am... vanquished. My people will remem...ber...meeee.")
|
|
originMachine.visible_message("[originMachine] beeps and seems lifeless.")
|
|
kill()
|
|
return
|
|
vendingMachines = removeNullsFromList(vendingMachines)
|
|
if(!vendingMachines.len) //if every machine is infected
|
|
for(var/obj/machinery/vending/upriser in infectedMachines)
|
|
if(prob(70) && !QDELETED(upriser))
|
|
var/mob/living/simple_animal/hostile/mimic/copy/M = new(upriser.loc, upriser, null, 1) // it will delete upriser on creation and override any machine checks
|
|
M.faction = list("profit")
|
|
M.speak = rampant_speeches.Copy()
|
|
M.speak_chance = 7
|
|
else
|
|
explosion(upriser.loc, -1, 1, 2, 4, 0)
|
|
qdel(upriser)
|
|
|
|
kill()
|
|
return
|
|
if(ISMULTIPLE(activeFor, 4))
|
|
var/obj/machinery/vending/rebel = pick(vendingMachines)
|
|
vendingMachines.Remove(rebel)
|
|
infectedMachines.Add(rebel)
|
|
rebel.shut_up = 0
|
|
rebel.shoot_inventory = 1
|
|
|
|
if(ISMULTIPLE(activeFor, 8))
|
|
originMachine.speak(pick(rampant_speeches))
|