Merge pull request #26397 from coiax/stops-easter-loot

Fixes easter eggs spawning during non-easter; SSevent now inits before SSticker
This commit is contained in:
oranges
2017-04-25 11:06:28 +12:00
committed by GitHub
39 changed files with 227 additions and 178 deletions

View File

@@ -19,3 +19,26 @@
//For servers that can't do with any additional lag, set this to none in flightpacks.dm in subsystem/processing.
#define FLIGHTSUIT_PROCESSING_NONE 0
#define FLIGHTSUIT_PROCESSING_FULL 1
// Subsystem init_order, from highest priority to lowest priority
// The numbers just define the ordering, they are meaningless otherwise.
#define INIT_ORDER_JOBS 15
#define INIT_ORDER_EVENTS 14
#define INIT_ORDER_TICKER 13
#define INIT_ORDER_MAPPING 12
#define INIT_ORDER_ATOMS 11
#define INIT_ORDER_MACHINES 9
#define INIT_ORDER_SHUTTLE 3
#define INIT_ORDER_TIMER 1
#define INIT_ORDER_DEFAULT 0
#define INIT_ORDER_AIR -1
#define INIT_ORDER_MINIMAP -2
#define INIT_ORDER_ASSETS -3
#define INIT_ORDER_ICON_SMOOTHING -5
#define INIT_ORDER_OVERLAY -6
#define INIT_ORDER_XKEYSCORE -10
#define INIT_ORDER_STICKY_BAN -10
#define INIT_ORDER_LIGHTING -20
#define INIT_ORDER_SQUEAK -40
#define INIT_ORDER_PERSISTENCE -100

View File

@@ -55,20 +55,25 @@ GLOBAL_VAR(command_name)
return capitalize(name)
/proc/station_name()
if(GLOB.station_name)
return GLOB.station_name
if(!GLOB.station_name)
var/newname
if(config && config.station_name)
newname = config.station_name
else
newname = new_station_name()
if(config && config.station_name)
GLOB.station_name = config.station_name
else
GLOB.station_name = new_station_name()
set_station_name(newname)
return GLOB.station_name
/proc/set_station_name(newname)
GLOB.station_name = newname
if(config && config.server_name)
world.name = "[config.server_name][config.server_name==GLOB.station_name ? "" : ": [GLOB.station_name]"]"
else
world.name = GLOB.station_name
return GLOB.station_name
/proc/new_station_name()
var/random = rand(1,5)
@@ -235,10 +240,3 @@ GLOBAL_VAR(syndicate_code_response) //Code response for traitors.
code_phrase += ", "
return code_phrase
/proc/change_station_name(designation)
if(config && config.server_name)
world.name = "[config.server_name]: [designation]"
else
world.name = designation
GLOB.station_name = designation

View File

@@ -0,0 +1,108 @@
//How to balance this table
//-------------------------
//The total added weight of all the entries should be (roughly) equal to the total number of lootdrops
//(take in account those that spawn more than one object!)
//
//While this is random, probabilities tells us that item distribution will have a tendency to look like
//the content of the weighted table that created them.
//The less lootdrops, the less even the distribution.
//
//If you want to give items a weight <1 you can multiply all the weights by 10
//
//the "" entry will spawn nothing, if you increase this value,
//ensure that you balance it with more spawn points
//table data:
//-----------
//aft maintenance: 24 items, 18 spots 2 extra (28/08/2014)
//asmaint: 16 items, 11 spots 0 extra (08/08/2014)
//asmaint2: 36 items, 26 spots 2 extra (28/08/2014)
//fpmaint: 5 items, 4 spots 0 extra (08/08/2014)
//fpmaint2: 12 items, 11 spots 2 extra (28/08/2014)
//fsmaint: 0 items, 0 spots 0 extra (08/08/2014)
//fsmaint2: 40 items, 27 spots 5 extra (28/08/2014)
//maintcentral: 2 items, 2 spots 0 extra (08/08/2014)
//port: 5 items, 5 spots 0 extra (08/08/2014)
GLOBAL_LIST_INIT(maintenance_loot, list(
/obj/item/bodybag = 1,
/obj/item/clothing/glasses/meson = 2,
/obj/item/clothing/glasses/sunglasses = 1,
/obj/item/clothing/gloves/color/fyellow = 1,
/obj/item/clothing/head/hardhat = 1,
/obj/item/clothing/head/hardhat/red = 1,
/obj/item/clothing/head/that = 1,
/obj/item/clothing/head/ushanka = 1,
/obj/item/clothing/head/welding = 1,
/obj/item/clothing/mask/gas = 15,
/obj/item/clothing/suit/hazardvest = 1,
/obj/item/clothing/under/rank/vice = 1,
/obj/item/device/assembly/prox_sensor = 4,
/obj/item/device/assembly/timer = 3,
/obj/item/device/flashlight = 4,
/obj/item/device/flashlight/pen = 1,
/obj/item/device/flashlight/glowstick/random = 4,
/obj/item/device/multitool = 2,
/obj/item/device/radio/off = 2,
/obj/item/device/t_scanner = 5,
/obj/item/weapon/airlock_painter = 1,
/obj/item/stack/cable_coil/random = 4,
/obj/item/stack/cable_coil/random/five = 6,
/obj/item/stack/medical/bruise_pack = 1,
/obj/item/stack/rods/ten = 9,
/obj/item/stack/rods/twentyfive = 1,
/obj/item/stack/rods/fifty = 1,
/obj/item/stack/sheet/cardboard = 2,
/obj/item/stack/sheet/metal/twenty = 1,
/obj/item/stack/sheet/mineral/plasma = 1,
/obj/item/stack/sheet/rglass = 1,
/obj/item/weapon/book/manual/wiki/engineering_construction = 1,
/obj/item/weapon/book/manual/wiki/engineering_hacking = 1,
/obj/item/clothing/head/cone = 1,
/obj/item/weapon/coin/silver = 1,
/obj/item/weapon/coin/twoheaded = 1,
/obj/item/weapon/poster/random_contraband = 1,
/obj/item/weapon/poster/random_official = 1,
/obj/item/weapon/crowbar = 1,
/obj/item/weapon/crowbar/red = 1,
/obj/item/weapon/extinguisher = 11,
//obj/item/weapon/gun/ballistic/revolver/russian = 1, //disabled until lootdrop is a proper world proc.
/obj/item/weapon/hand_labeler = 1,
/obj/item/weapon/paper/crumpled = 1,
/obj/item/weapon/pen = 1,
/obj/item/weapon/reagent_containers/spray/pestspray = 1,
/obj/item/weapon/reagent_containers/glass/rag = 3,
/obj/item/weapon/stock_parts/cell = 3,
/obj/item/weapon/storage/belt/utility = 2,
/obj/item/weapon/storage/box = 2,
/obj/item/weapon/storage/box/cups = 1,
/obj/item/weapon/storage/box/donkpockets = 1,
/obj/item/weapon/storage/box/lights/mixed = 3,
/obj/item/weapon/storage/box/hug/medical = 1,
/obj/item/weapon/storage/fancy/cigarettes/dromedaryco = 1,
/obj/item/weapon/storage/toolbox/mechanical = 1,
/obj/item/weapon/screwdriver = 3,
/obj/item/weapon/tank/internals/emergency_oxygen = 2,
/obj/item/weapon/vending_refill/cola = 1,
/obj/item/weapon/weldingtool = 3,
/obj/item/weapon/wirecutters = 1,
/obj/item/weapon/wrench = 4,
/obj/item/weapon/relic = 3,
/obj/item/weaponcrafting/receiver = 2,
/obj/item/clothing/head/cone = 2,
/obj/item/weapon/grenade/smokebomb = 2,
/obj/item/device/geiger_counter = 3,
/obj/item/weapon/reagent_containers/food/snacks/grown/citrus/orange = 1,
/obj/item/device/radio/headset = 1,
/obj/item/device/assembly/infra = 1,
/obj/item/device/assembly/igniter = 2,
/obj/item/device/assembly/signaler = 2,
/obj/item/device/assembly/mousetrap = 2,
/obj/item/weapon/reagent_containers/syringe = 2,
/obj/item/clothing/gloves/color/random = 8,
/obj/item/clothing/shoes/laceup = 1,
/obj/item/weapon/storage/secure/briefcase = 3,
/obj/item/weapon/storage/toolbox/artistic = 2,
/obj/item/toy/eightball = 1,
"" = 3
))

View File

@@ -2,7 +2,7 @@
/datum/controller/subsystem
// Metadata; you should define these.
name = "fire coderbus" //name of the subsystem
var/init_order = 0 //order of initialization. Higher numbers are initialized first, lower numbers later. Can be decimal and negative values.
var/init_order = INIT_ORDER_DEFAULT //order of initialization. Higher numbers are initialized first, lower numbers later. Use defines in __DEFINES/subsystems.dm for easy understanding of order.
var/wait = 20 //time to wait (in deciseconds) between each call to fire(). Must be a positive integer.
var/priority = 50 //When mutiple subsystems need to run in the same tick, higher priority subsystems will run first and be given a higher share of the tick before MC_TICK_CHECK triggers a sleep

View File

@@ -8,7 +8,7 @@
SUBSYSTEM_DEF(air)
name = "Air"
init_order = -1
init_order = INIT_ORDER_AIR
priority = 20
wait = 5
flags = SS_BACKGROUND

View File

@@ -1,6 +1,6 @@
SUBSYSTEM_DEF(assets)
name = "Assets"
init_order = -3
init_order = INIT_ORDER_ASSETS
flags = SS_NO_FIRE
var/list/cache = list()

View File

@@ -4,7 +4,7 @@
SUBSYSTEM_DEF(atoms)
name = "Atoms"
init_order = 11
init_order = INIT_ORDER_ATOMS
flags = SS_NO_FIRE
var/initialized = INITIALIZATION_INSSATOMS

View File

@@ -1,6 +1,6 @@
SUBSYSTEM_DEF(events)
name = "Events"
init_order = 6
init_order = INIT_ORDER_EVENTS
var/list/control = list() //list of all datum/round_event_control. Used for selecting events based on weight and occurrences.
var/list/running = list() //list of all existing /datum/round_event
@@ -179,9 +179,13 @@ SUBSYSTEM_DEF(events)
if(!holidays)
holidays = list()
holidays[holiday.name] = holiday
else
qdel(holiday)
if(holidays)
holidays = shuffle(holidays)
// regenerate station name because holiday prefixes.
set_station_name(new_station_name())
world.update_status()
/datum/controller/subsystem/events/proc/toggleWizardmode()

View File

@@ -1,6 +1,6 @@
SUBSYSTEM_DEF(icon_smooth)
name = "Icon Smoothing"
init_order = -5
init_order = INIT_ORDER_ICON_SMOOTHING
wait = 1
priority = 35
flags = SS_TICKER

View File

@@ -1,6 +1,6 @@
SUBSYSTEM_DEF(ipintel)
name = "XKeyScore"
init_order = -10
init_order = INIT_ORDER_XKEYSCORE
flags = SS_NO_FIRE
var/enabled = 0 //disable at round start to avoid checking reconnects
var/throttle = 0

View File

@@ -1,6 +1,6 @@
SUBSYSTEM_DEF(job)
name = "Jobs"
init_order = 14
init_order = INIT_ORDER_JOBS
flags = SS_NO_FIRE
var/list/occupations = list() //List of all jobs

View File

@@ -5,7 +5,7 @@ GLOBAL_LIST_EMPTY(lighting_update_objects) // List of lighting objects queued fo
SUBSYSTEM_DEF(lighting)
name = "Lighting"
wait = 2
init_order = -20
init_order = INIT_ORDER_LIGHTING
flags = SS_TICKER
var/initialized = FALSE

View File

@@ -1,6 +1,6 @@
SUBSYSTEM_DEF(machines)
name = "Machines"
init_order = 9
init_order = INIT_ORDER_MACHINES
flags = SS_KEEP_TIMING
var/list/processing = list()
var/list/currentrun = list()

View File

@@ -1,6 +1,6 @@
SUBSYSTEM_DEF(mapping)
name = "Mapping"
init_order = 12
init_order = INIT_ORDER_MAPPING
flags = SS_NO_FIRE
var/list/nuke_tiles = list()

View File

@@ -1,6 +1,6 @@
SUBSYSTEM_DEF(minimap)
name = "Minimap"
init_order = -2
init_order = INIT_ORDER_MINIMAP
flags = SS_NO_FIRE
var/const/MINIMAP_SIZE = 2048
var/const/TILE_SIZE = 8

View File

@@ -1,6 +1,5 @@
SUBSYSTEM_DEF(mobs)
name = "Mobs"
init_order = 4
priority = 100
flags = SS_KEEP_TIMING|SS_NO_INIT

View File

@@ -1,6 +1,6 @@
SUBSYSTEM_DEF(persistence)
name = "Persistence"
init_order = -100
init_order = INIT_ORDER_PERSISTENCE
flags = SS_NO_FIRE
var/savefile/secret_satchels
var/list/satchel_blacklist = list() //this is a typecache

View File

@@ -3,7 +3,7 @@ PROCESSING_SUBSYSTEM_DEF(overlays)
flags = SS_TICKER|SS_FIRE_IN_LOBBY
wait = 1
priority = 500
init_order = -6
init_order = INIT_ORDER_OVERLAY
stat_tag = "Ov"
currentrun = null

View File

@@ -1,6 +1,5 @@
SUBSYSTEM_DEF(radio)
name = "Radio"
init_order = 18
flags = SS_NO_FIRE|SS_NO_INIT
var/list/datum/radio_frequency/frequencies = list()

View File

@@ -1,6 +1,5 @@
SUBSYSTEM_DEF(religion)
name = "Religion"
init_order = 19
flags = SS_NO_FIRE|SS_NO_INIT
var/religion

View File

@@ -3,7 +3,7 @@
SUBSYSTEM_DEF(shuttle)
name = "Shuttle"
wait = 10
init_order = 3
init_order = INIT_ORDER_SHUTTLE
flags = SS_KEEP_TIMING|SS_NO_TICK_CHECK
var/list/mobile = list()

View File

@@ -4,7 +4,7 @@
SUBSYSTEM_DEF(squeak)
name = "Squeak"
priority = 40
init_order = INIT_ORDER_SQUEAK
flags = SS_NO_FIRE
var/list/exposed_wires = list()

View File

@@ -1,6 +1,6 @@
SUBSYSTEM_DEF(stickyban)
name = "Sticky Ban"
init_order = -10
init_order = INIT_ORDER_STICKY_BAN
flags = SS_NO_FIRE
var/list/cache = list()

View File

@@ -1,7 +1,6 @@
SUBSYSTEM_DEF(sun)
name = "Sun"
wait = 600
init_order = 2
flags = SS_NO_TICK_CHECK|SS_NO_INIT
var/angle
var/dx

View File

@@ -1,7 +1,6 @@
SUBSYSTEM_DEF(tgui)
name = "tgui"
wait = 9
init_order = 16
flags = SS_NO_INIT|SS_FIRE_IN_LOBBY
priority = 110

View File

@@ -2,7 +2,7 @@
SUBSYSTEM_DEF(ticker)
name = "Ticker"
init_order = 13
init_order = INIT_ORDER_TICKER
priority = 200
flags = SS_FIRE_IN_LOBBY|SS_KEEP_TIMING

View File

@@ -4,7 +4,7 @@
SUBSYSTEM_DEF(timer)
name = "Timer"
wait = 1 //SS_TICKER subsystem, so wait is in ticks
init_order = 1
init_order = INIT_ORDER_TIMER
flags = SS_FIRE_IN_LOBBY|SS_TICKER|SS_NO_INIT

View File

@@ -125,6 +125,7 @@
var/datum/proximity_monitor/proximity_monitor = src.proximity_monitor
if(proximity_monitor)
proximity_monitor.HandleMove()
return 1
/atom/movable/proc/clean_on_move()

View File

@@ -8,7 +8,6 @@
/obj/effect/spawner/lootdrop/Initialize(mapload)
..()
if(loot && loot.len)
var/turf/T = get_turf(src)
while(lootcount && loot.len)
@@ -57,114 +56,11 @@
/obj/effect/spawner/lootdrop/maintenance
name = "maintenance loot spawner"
// see code/_globalvars/lists/maintenance_loot.dm for loot table
//How to balance this table
//-------------------------
//The total added weight of all the entries should be (roughly) equal to the total number of lootdrops
//(take in account those that spawn more than one object!)
//
//While this is random, probabilities tells us that item distribution will have a tendency to look like
//the content of the weighted table that created them.
//The less lootdrops, the less even the distribution.
//
//If you want to give items a weight <1 you can multiply all the weights by 10
//
//the "" entry will spawn nothing, if you increase this value,
//ensure that you balance it with more spawn points
//table data:
//-----------
//aft maintenance: 24 items, 18 spots 2 extra (28/08/2014)
//asmaint: 16 items, 11 spots 0 extra (08/08/2014)
//asmaint2: 36 items, 26 spots 2 extra (28/08/2014)
//fpmaint: 5 items, 4 spots 0 extra (08/08/2014)
//fpmaint2: 12 items, 11 spots 2 extra (28/08/2014)
//fsmaint: 0 items, 0 spots 0 extra (08/08/2014)
//fsmaint2: 40 items, 27 spots 5 extra (28/08/2014)
//maintcentral: 2 items, 2 spots 0 extra (08/08/2014)
//port: 5 items, 5 spots 0 extra (08/08/2014)
loot = list(
/obj/item/bodybag = 1,
/obj/item/clothing/glasses/meson = 2,
/obj/item/clothing/glasses/sunglasses = 1,
/obj/item/clothing/gloves/color/fyellow = 1,
/obj/item/clothing/head/hardhat = 1,
/obj/item/clothing/head/hardhat/red = 1,
/obj/item/clothing/head/that = 1,
/obj/item/clothing/head/ushanka = 1,
/obj/item/clothing/head/welding = 1,
/obj/item/clothing/mask/gas = 15,
/obj/item/clothing/suit/hazardvest = 1,
/obj/item/clothing/under/rank/vice = 1,
/obj/item/device/assembly/prox_sensor = 4,
/obj/item/device/assembly/timer = 3,
/obj/item/device/flashlight = 4,
/obj/item/device/flashlight/pen = 1,
/obj/item/device/flashlight/glowstick/random = 4,
/obj/item/device/multitool = 2,
/obj/item/device/radio/off = 2,
/obj/item/device/t_scanner = 5,
/obj/item/weapon/airlock_painter = 1,
/obj/item/stack/cable_coil/random = 4,
/obj/item/stack/cable_coil/random{amount = 5} = 6,
/obj/item/stack/medical/bruise_pack = 1,
/obj/item/stack/rods{amount = 10} = 9,
/obj/item/stack/rods{amount = 23} = 1,
/obj/item/stack/rods{amount = 50} = 1,
/obj/item/stack/sheet/cardboard = 2,
/obj/item/stack/sheet/metal{amount = 20} = 1,
/obj/item/stack/sheet/mineral/plasma = 1,
/obj/item/stack/sheet/rglass = 1,
/obj/item/weapon/book/manual/wiki/engineering_construction = 1,
/obj/item/weapon/book/manual/wiki/engineering_hacking = 1,
/obj/item/clothing/head/cone = 1,
/obj/item/weapon/coin/silver = 1,
/obj/item/weapon/coin/twoheaded = 1,
/obj/item/weapon/poster/random_contraband = 1,
/obj/item/weapon/poster/random_official = 1,
/obj/item/weapon/crowbar = 1,
/obj/item/weapon/crowbar/red = 1,
/obj/item/weapon/extinguisher = 11,
//obj/item/weapon/gun/ballistic/revolver/russian = 1, //disabled until lootdrop is a proper world proc.
/obj/item/weapon/hand_labeler = 1,
/obj/item/weapon/paper/crumpled = 1,
/obj/item/weapon/pen = 1,
/obj/item/weapon/reagent_containers/spray/pestspray = 1,
/obj/item/weapon/reagent_containers/glass/rag = 3,
/obj/item/weapon/stock_parts/cell = 3,
/obj/item/weapon/storage/belt/utility = 2,
/obj/item/weapon/storage/box = 2,
/obj/item/weapon/storage/box/cups = 1,
/obj/item/weapon/storage/box/donkpockets = 1,
/obj/item/weapon/storage/box/lights/mixed = 3,
/obj/item/weapon/storage/box/hug/medical = 1,
/obj/item/weapon/storage/fancy/cigarettes/dromedaryco = 1,
/obj/item/weapon/storage/toolbox/mechanical = 1,
/obj/item/weapon/screwdriver = 3,
/obj/item/weapon/tank/internals/emergency_oxygen = 2,
/obj/item/weapon/vending_refill/cola = 1,
/obj/item/weapon/weldingtool = 3,
/obj/item/weapon/wirecutters = 1,
/obj/item/weapon/wrench = 4,
/obj/item/weapon/relic = 3,
/obj/item/weaponcrafting/receiver = 2,
/obj/item/clothing/head/cone = 2,
/obj/item/weapon/grenade/smokebomb = 2,
/obj/item/device/geiger_counter = 3,
/obj/item/weapon/reagent_containers/food/snacks/grown/citrus/orange = 1,
/obj/item/device/radio/headset = 1,
/obj/item/device/assembly/infra = 1,
/obj/item/device/assembly/igniter = 2,
/obj/item/device/assembly/signaler = 2,
/obj/item/device/assembly/mousetrap = 2,
/obj/item/weapon/reagent_containers/syringe = 2,
/obj/item/clothing/gloves/color/random = 8,
/obj/item/clothing/shoes/laceup = 1,
/obj/item/weapon/storage/secure/briefcase = 3,
/obj/item/weapon/storage/toolbox/artistic = 2,
/obj/item/toy/eightball = 1,
"" = 3
)
/obj/effect/spawner/lootdrop/maintenance/Initialize(mapload)
loot = GLOB.maintenance_loot
..()
/obj/effect/spawner/lootdrop/crate_spawner
name = "lootcrate spawner" //USE PROMO CODE "SELLOUT" FOR 20% OFF!

View File

@@ -54,7 +54,7 @@
if(standard_station_regex.Find(new_name))
to_chat(user, "Your name has been automatically approved.")
rename_station(new_name, user)
rename_station(new_name, user.name, user.real_name, key_name(user))
return
to_chat(user, "Your name has been sent to your employers for approval.")
@@ -79,7 +79,7 @@
response_timer_id = null
/obj/item/station_charter/proc/rename_station(designation, uname, ureal_name, ukey)
change_station_name(designation)
set_station_name(designation)
minor_announce("[ureal_name] has designated your station as [station_name()]", "Captain's Charter", 0)
log_game("[ukey] has renamed the station as [station_name()].")

View File

@@ -73,3 +73,12 @@ GLOBAL_LIST_INIT(rod_recipes, list ( \
/obj/item/stack/rods/cyborg/update_icon()
return
/obj/item/stack/rods/ten
amount = 10
/obj/item/stack/rods/twentyfive
amount = 25
/obj/item/stack/rods/fifty
amount = 50

View File

@@ -78,6 +78,9 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \
/obj/item/stack/sheet/metal/fifty
amount = 50
/obj/item/stack/sheet/metal/twenty
amount = 20
/obj/item/stack/sheet/metal/five
amount = 5

View File

@@ -157,7 +157,7 @@
var/new_name = input(usr, "Please input a new name for the station.", "What?", "") as text|null
if(!new_name)
return
change_station_name(new_name)
set_station_name(new_name)
log_admin("[key_name(usr)] renamed the station to \"[new_name]\".")
message_admins("<span class='adminnotice'>[key_name_admin(usr)] renamed the station to: [new_name].</span>")
priority_announce("[command_name()] has renamed the station to \"[new_name]\".")
@@ -166,7 +166,7 @@
if(!check_rights(R_ADMIN))
return
var/new_name = new_station_name()
change_station_name(new_name)
set_station_name(new_name)
log_admin("[key_name(usr)] reset the station name.")
message_admins("<span class='adminnotice'>[key_name_admin(usr)] reset the station name.</span>")
priority_announce("[command_name()] has renamed the station to \"[new_name]\".")

View File

@@ -84,6 +84,12 @@
name = "christmas tree spawner"
var/tree = /obj/structure/flora/tree/pine/xmas
/obj/effect/landmark/xmastree/Initialize(mapload)
..()
if(FESTIVE_SEASON in SSevents.holidays)
new tree(get_turf(src))
qdel(src)
/obj/effect/landmark/xmastree/rdrod
name = "festivus pole spawner"
tree = /obj/structure/festivus

View File

@@ -140,10 +140,6 @@
containsPrize = FALSE
qdel(src)
/obj/effect/spawner/lootdrop/maintenance/New()
..()
loot += list(/obj/item/weapon/reagent_containers/food/snacks/egg/loaded = 15, /obj/item/weapon/storage/bag/easterbasket = 15)
//Easter Recipes + food
/obj/item/weapon/reagent_containers/food/snacks/hotcrossbun
bitesize = 2

View File

@@ -7,6 +7,8 @@
var/end_day = 0 // Default of 0 means the holiday lasts a single day
var/end_month = 0
var/always_celebrate = FALSE // for christmas neverending, or testing.
// This proc gets run before the game starts when the holiday is activated. Do festive shit here.
/datum/holiday/proc/celebrate()
@@ -22,6 +24,9 @@
// Return 1 if this holidy should be celebrated today
/datum/holiday/proc/shouldCelebrate(dd, mm, yy)
if(always_celebrate)
return TRUE
if(!end_day)
end_day = begin_day
if(!end_month)
@@ -30,26 +35,26 @@
if(end_month > begin_month) //holiday spans multiple months in one year
if(mm == end_month) //in final month
if(dd <= end_day)
return 1
return TRUE
else if(mm == begin_month)//in first month
if(dd >= begin_day)
return 1
return TRUE
else if(mm in begin_month to end_month) //holiday spans 3+ months and we're in the middle, day doesn't matter at all
return 1
return TRUE
else if(end_month == begin_month) // starts and stops in same month, simplest case
if(mm == begin_month && (dd in begin_day to end_day))
return 1
return TRUE
else // starts in one year, ends in the next
if(mm >= begin_month && dd >= begin_day) // Holiday ends next year
return 1
return TRUE
if(mm <= end_month && dd <= end_day) // Holiday started last year
return 1
return TRUE
return 0
return FALSE
// The actual holidays
@@ -329,11 +334,6 @@
begin_month = DECEMBER
end_day = 31
/datum/holiday/festive_season/celebrate()
for(var/obj/effect/landmark/xmastree/XT in GLOB.landmarks_list)
new XT.tree(get_turf(XT))
qdel(XT)
/datum/holiday/festive_season/greet()
return "Have a nice festive season!"
@@ -348,8 +348,8 @@
/datum/holiday/friday_thirteenth/shouldCelebrate(dd, mm, yy)
if(dd == 13)
if(time2text(world.timeofday, "DDD") == "Fri")
return 1
return 0
return TRUE
return FALSE
/datum/holiday/friday_thirteenth/getStationPrefix()
return pick("Mike","Friday","Evil","Myers","Murder","Deathly","Stabby")
@@ -422,3 +422,9 @@
// to_chat(world, "Easter calculates to be on [begin_day] of [begin_month] ([days_early] early) to [end_day] of [end_month] ([days_extra] extra) for 20[yy]")
return ..()
/datum/holiday/easter/celebrate()
..()
GLOB.maintenance_loot += list(
/obj/item/weapon/reagent_containers/food/snacks/egg/loaded = 15,
/obj/item/weapon/storage/bag/easterbasket = 15)

View File

@@ -826,3 +826,6 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe("cable restrai
item_color = pick("red","orange","yellow","green","cyan","blue","pink","white")
icon_state = "coil_[item_color]"
..()
/obj/item/stack/cable_coil/random/five
amount = 5

View File

@@ -102,6 +102,7 @@
#include "code\_globalvars\misc.dm"
#include "code\_globalvars\sensitive.dm"
#include "code\_globalvars\lists\flavor_misc.dm"
#include "code\_globalvars\lists\maintenance_loot.dm"
#include "code\_globalvars\lists\mapping.dm"
#include "code\_globalvars\lists\mobs.dm"
#include "code\_globalvars\lists\names.dm"