diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index 91dafd3cf4..b166eb28b6 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -19,13 +19,6 @@ #define COMSIG_COMPONENT_REMOVING "component_removing" //before a component is removed from a datum because of RemoveComponent: (/datum/component) #define COMSIG_PARENT_QDELETED "parent_qdeleted" //before a datum's Destroy() is called: () -// /Component signals -#define COMSIG_ADD_MOOD_EVENT "add_mood" //Called when you send a mood event from anywhere in the code. -#define COMSIG_CLEAR_MOOD_EVENT "clear_mood" //Called when you clear a mood event from anywhere in the code. - -#define COMSIG_COMPONENT_CLEAN_ACT "clean_act" //called on an object to clean it of cleanables. Usualy with soap: (num/strength) -#define COMSIG_COMPONENT_NTNET_RECIEVE "ntnet_recieve" //called on an object by its NTNET connection component on recieve. (sending_id(number), sending_netname(text), data(datum/netdata)) - // /atom signals #define COMSIG_PARENT_ATTACKBY "atom_attackby" //from base of atom/attackby(): (/obj/item, /mob/living, params) #define COMPONENT_NO_AFTERATTACK 1 //Return this in response if you don't want afterattack to be called @@ -97,13 +90,29 @@ #define COMSIG_HUMAN_MELEE_UNARMED_ATTACKBY "human_melee_unarmed_attackby" //from mob/living/carbon/human/UnarmedAttack(): (mob/living/carbon/human/attacker) #define COMSIG_HUMAN_DISARM_HIT "human_disarm_hit" //Hit by successful disarm attack (mob/living/carbon/human/attacker,zone_targeted) -#define CALTROP_BYPASS_SHOES 1 -#define CALTROP_IGNORE_WALKERS 2 - -//Component Specific Signals -//Wet floors +/*******Component Specific Signals*******/ +//Janitor #define COMSIG_TURF_IS_WET "check_turf_wet" //(): Returns bitflags of wet values. #define COMSIG_TURF_MAKE_DRY "make_turf_try" //(max_strength, immediate, duration_decrease = INFINITY): Returns bool. +#define COMSIG_COMPONENT_CLEAN_ACT "clean_act" //called on an object to clean it of cleanables. Usualy with soap: (num/strength) //Food -#define COMSIG_FOOD_EATEN "food_eaten" //from base of obj/item/reagent_containers/food/snacks/attack(): (mob/living/eater, mob/feeder) +#define COMSIG_FOOD_EATEN "food_eaten" //from base of obj/item/reagent_containers/food/snacks/attack(): (mob/living/eater, mob/feeder) + +//Mood +#define COMSIG_ADD_MOOD_EVENT "add_mood" //Called when you send a mood event from anywhere in the code. +#define COMSIG_CLEAR_MOOD_EVENT "clear_mood" //Called when you clear a mood event from anywhere in the code. + +//NTnet +#define COMSIG_COMPONENT_NTNET_RECIEVE "ntnet_recieve" //called on an object by its NTNET connection component on recieve. (sending_id(number), sending_netname(text), data(datum/netdata)) + + +/*******Non-Signal Component Related Defines*******/ + +//Arch +#define ARCH_PROB "probability" //Probability for each item +#define ARCH_MAXDROP "max_drop_amount" //each item's max drop amount + +//Ouch my toes! +#define CALTROP_BYPASS_SHOES 1 +#define CALTROP_IGNORE_WALKERS 2 diff --git a/code/datums/components/archaeology.dm b/code/datums/components/archaeology.dm index 5b5d52b0b4..e51cba1ca3 100644 --- a/code/datums/components/archaeology.dm +++ b/code/datums/components/archaeology.dm @@ -1,13 +1,19 @@ /datum/component/archaeology dupe_mode = COMPONENT_DUPE_UNIQUE - var/list/archdrops + var/list/archdrops = list(/obj/item/bikehorn = list(ARCH_PROB = 100, ARCH_MAXDROP = 1)) // honk~ var/prob2drop var/dug var/datum/callback/callback -/datum/component/archaeology/Initialize(_prob2drop, list/_archdrops = list(), datum/callback/_callback) - prob2drop = CLAMP(_prob2drop, 0, 100) +/datum/component/archaeology/Initialize(list/_archdrops = list(), datum/callback/_callback) archdrops = _archdrops + for(var/i in archdrops) + if(isnull(archdrops[i][ARCH_MAXDROP])) + archdrops[i][ARCH_MAXDROP] = 1 + stack_trace("ARCHAEOLOGY WARNING: [parent] contained a null max_drop value in [i].") + if(isnull(archdrops[i][ARCH_PROB])) + archdrops[i][ARCH_PROB] = 100 + stack_trace("ARCHAEOLOGY WARNING: [parent] contained a null probability value in [i].") callback = _callback RegisterSignal(COMSIG_PARENT_ATTACKBY,.proc/Dig) RegisterSignal(COMSIG_ATOM_EX_ACT, .proc/BombDig) @@ -43,9 +49,9 @@ else var/turf/open/OT = get_turf(parent) for(var/thing in archdrops) - var/maxtodrop = archdrops[thing] + var/maxtodrop = archdrops[thing][ARCH_MAXDROP] for(var/i in 1 to maxtodrop) - if(prob(prob2drop)) // can't win them all! + if(prob(archdrops[thing][ARCH_PROB])) // can't win them all! new thing(OT) if(isopenturf(OT)) diff --git a/code/game/turfs/simulated/floor/plating/asteroid.dm b/code/game/turfs/simulated/floor/plating/asteroid.dm index 44fc9dc643..594fdabd70 100644 --- a/code/game/turfs/simulated/floor/plating/asteroid.dm +++ b/code/game/turfs/simulated/floor/plating/asteroid.dm @@ -13,7 +13,7 @@ var/environment_type = "asteroid" var/turf_type = /turf/open/floor/plating/asteroid //Because caves do whacky shit to revert to normal var/floor_variance = 20 //probability floor has a different icon state - archdrops = list(/obj/item/stack/ore/glass = 5) + archdrops = list(/obj/item/stack/ore/glass = list(ARCH_PROB = 100,ARCH_MAXDROP = 5)) attachment_holes = FALSE /turf/open/floor/plating/asteroid/Initialize() @@ -24,7 +24,7 @@ icon_state = "[environment_type][rand(0,12)]" if(LAZYLEN(archdrops)) - AddComponent(/datum/component/archaeology, 100, archdrops) + AddComponent(/datum/component/archaeology, archdrops) /turf/open/floor/plating/asteroid/try_replace_tile(obj/item/stack/tile/T, mob/user, params) @@ -81,7 +81,7 @@ icon_state = "basalt" icon_plating = "basalt" environment_type = "basalt" - archdrops = list(/obj/item/stack/ore/glass/basalt = 5) + archdrops = list(/obj/item/stack/ore/glass/basalt = list(ARCH_PROB = 100,ARCH_MAXDROP = 5)) floor_variance = 15 /turf/open/floor/plating/asteroid/basalt/lava //lava underneath @@ -293,7 +293,7 @@ environment_type = "snow" flags_1 = NONE planetary_atmos = TRUE - archdrops = list(/obj/item/stack/sheet/mineral/snow = 5) + archdrops = list(/obj/item/stack/sheet/mineral/snow = list(ARCH_PROB = 100, ARCH_MAXDROP = 5)) burnt_states = list("snow_dug") /turf/open/floor/plating/asteroid/snow/burn_tile()