Merge remote-tracking branch 'citadel/master' into unarmed_parry
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
//// COOLDOWN SYSTEMS
|
||||
/*
|
||||
* We have 2 cooldown systems: timer cooldowns (divided between stoppable and regular) and world.time cooldowns.
|
||||
*
|
||||
* When to use each?
|
||||
*
|
||||
* * Adding a commonly-checked cooldown, like on a subsystem to check for processing
|
||||
* * * Use the world.time ones, as they are cheaper.
|
||||
*
|
||||
* * Adding a rarely-used one for special situations, such as giving an uncommon item a cooldown on a target.
|
||||
* * * Timer cooldown, as adding a new variable on each mob to track the cooldown of said uncommon item is going too far.
|
||||
*
|
||||
* * Triggering events at the end of a cooldown.
|
||||
* * * Timer cooldown, registering to its signal.
|
||||
*
|
||||
* * Being able to check how long left for the cooldown to end.
|
||||
* * * Either world.time or stoppable timer cooldowns, depending on the other factors. Regular timer cooldowns do not support this.
|
||||
*
|
||||
* * Being able to stop the timer before it ends.
|
||||
* * * Either world.time or stoppable timer cooldowns, depending on the other factors. Regular timer cooldowns do not support this.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* Cooldown system based on an datum-level associative lazylist using timers.
|
||||
*/
|
||||
|
||||
//INDEXES
|
||||
#define COOLDOWN_EMPLOYMENT_CABINET "employment cabinet"
|
||||
|
||||
|
||||
//TIMER COOLDOWN MACROS
|
||||
|
||||
#define COMSIG_CD_STOP(cd_index) "cooldown_[cd_index]"
|
||||
#define COMSIG_CD_RESET(cd_index) "cd_reset_[cd_index]"
|
||||
|
||||
#define TIMER_COOLDOWN_START(cd_source, cd_index, cd_time) LAZYSET(cd_source.cooldowns, cd_index, addtimer(CALLBACK(GLOBAL_PROC, /proc/end_cooldown, cd_source, cd_index), cd_time))
|
||||
|
||||
#define TIMER_COOLDOWN_CHECK(cd_source, cd_index) LAZYACCESS(cd_source.cooldowns, cd_index)
|
||||
|
||||
#define TIMER_COOLDOWN_END(cd_source, cd_index) LAZYREMOVE(cd_source.cooldowns, cd_index)
|
||||
|
||||
/*
|
||||
* Stoppable timer cooldowns.
|
||||
* Use indexes the same as the regular tiemr cooldowns.
|
||||
* They make use of the TIMER_COOLDOWN_CHECK() and TIMER_COOLDOWN_END() macros the same, just not the TIMER_COOLDOWN_START() one.
|
||||
* A bit more expensive than the regular timers, but can be reset before they end and the time left can be checked.
|
||||
*/
|
||||
|
||||
#define S_TIMER_COOLDOWN_START(cd_source, cd_index, cd_time) LAZYSET(cd_source.cooldowns, cd_index, addtimer(CALLBACK(GLOBAL_PROC, /proc/end_cooldown, cd_source, cd_index), cd_time, TIMER_STOPPABLE))
|
||||
|
||||
#define S_TIMER_COOLDOWN_RESET(cd_source, cd_index) reset_cooldown(cd_source, cd_index)
|
||||
|
||||
#define S_TIMER_COOLDOWN_TIMELEFT(cd_source, cd_index) (timeleft(TIMER_COOLDOWN_CHECK(cd_source, cd_index)))
|
||||
|
||||
|
||||
/*
|
||||
* Cooldown system based on storing world.time on a variable, plus the cooldown time.
|
||||
* Better performance over timer cooldowns, lower control. Same functionality.
|
||||
*/
|
||||
|
||||
#define COOLDOWN_DECLARE(cd_index) var/##cd_index = 0
|
||||
|
||||
#define COOLDOWN_START(cd_source, cd_index, cd_time) (cd_source.cd_index = world.time + cd_time)
|
||||
|
||||
//Returns true if the cooldown has run its course, false otherwise
|
||||
#define COOLDOWN_FINISHED(cd_source, cd_index) (cd_source.cd_index < world.time)
|
||||
|
||||
#define COOLDOWN_RESET(cd_source, cd_index) cd_source.cd_index = 0
|
||||
|
||||
#define COOLDOWN_TIMELEFT(cd_source, cd_index) (max(0, cd_source.cd_index - world.time))
|
||||
@@ -224,6 +224,11 @@
|
||||
#define COMSIG_LIVING_RUN_BLOCK "living_do_run_block" //from base of mob/living/do_run_block(): (real_attack, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone)
|
||||
#define COMSIG_LIVING_GET_BLOCKING_ITEMS "get_blocking_items" //from base of mob/living/get_blocking_items(): (list/items)
|
||||
|
||||
#define COMSIG_LIVING_ACTIVE_BLOCK_START "active_block_start" //from base of mob/living/keybind_start_active_blocking(): (obj/item/blocking_item, list/backup_items)
|
||||
#define COMPONENT_PREVENT_BLOCK_START 1
|
||||
#define COMSIG_LIVING_ACTIVE_PARRY_START "active_parry_start" //from base of mob/living/initiate_parry_sequence(): (parrying_method, datum/parrying_item_mob_or_art, list/backup_items)
|
||||
#define COMPONENT_PREVENT_PARRY_START 1
|
||||
|
||||
//ALL OF THESE DO NOT TAKE INTO ACCOUNT WHETHER AMOUNT IS 0 OR LOWER AND ARE SENT REGARDLESS!
|
||||
#define COMSIG_LIVING_STATUS_STUN "living_stun" //from base of mob/living/Stun() (amount, update, ignore)
|
||||
#define COMSIG_LIVING_STATUS_KNOCKDOWN "living_knockdown" //from base of mob/living/Knockdown() (amount, update, ignore)
|
||||
|
||||
@@ -115,3 +115,7 @@
|
||||
//these flags are used to tell the DNA modifier if a plant gene cannot be extracted or modified.
|
||||
#define PLANT_GENE_REMOVABLE (1<<0)
|
||||
#define PLANT_GENE_EXTRACTABLE (1<<1)
|
||||
|
||||
#define CLONEPOD_GET_MIND 1
|
||||
#define CLONEPOD_POLL_MIND 2
|
||||
#define CLONEPOD_NO_MIND 3
|
||||
@@ -8,12 +8,6 @@
|
||||
/// Levels
|
||||
#define SKILL_PROGRESSION_LEVEL 4
|
||||
|
||||
|
||||
/// Max value of skill for numerical skills
|
||||
#define SKILL_NUMERICAL_MAX 100
|
||||
/// Min value of skill for numerical skills
|
||||
#define SKILL_NUMERICAL_MIN 0
|
||||
|
||||
// Standard values for job starting skills
|
||||
|
||||
#define STARTING_SKILL_SURGERY_MEDICAL 35 //out of SKILL_NUMERICAL_MAX
|
||||
@@ -26,6 +20,13 @@
|
||||
|
||||
#define DEF_SKILL_GAIN 1
|
||||
#define SKILL_GAIN_SURGERY_PER_STEP 0.25
|
||||
#define STD_USE_TOOL_MULT 1
|
||||
#define EASY_USE_TOOL_MULT 0.75
|
||||
#define TRIVIAL_USE_TOOL_MULT 0.5
|
||||
#define BARE_USE_TOOL_MULT 0.25
|
||||
|
||||
//multiplier of the difference of max_value and min_value. Mostly for balance purposes between numerical and level-based skills.
|
||||
#define STD_NUM_SKILL_ITEM_GAIN_MULTI 0.002
|
||||
|
||||
//An extra point for each few seconds of delay when using a tool. Before the multiplier.
|
||||
#define SKILL_GAIN_DELAY_DIVISOR 3 SECONDS
|
||||
|
||||
Reference in New Issue
Block a user