From aae02aa4f34d7dc8cb2d51eca427d02c1bb6a06d Mon Sep 17 00:00:00 2001 From: Standing-Storm <120433252+Standing-Storm@users.noreply.github.com> Date: Tue, 17 Sep 2024 10:52:09 -0500 Subject: [PATCH] [Xedra Evolved] Add more Brownie changeling traits +bugfixes (#76484) * Initial commit * Fix bugs, add Hurry Home * Sense Intruders adds Homebody bonus to range * Require being unobserved for hurry home --- .../Xedra_Evolved/items/armor/integrated.json | 25 ++ .../mutations/playable_changeling.json | 120 ++++++++- .../mutations/playable_changeling_eocs.json | 230 ++++++++++++++++++ .../recipes/changeling/brownie.json | 42 ++++ .../spells/changeling_spells.json | 65 ++++- 5 files changed, 474 insertions(+), 8 deletions(-) create mode 100644 data/mods/Xedra_Evolved/recipes/changeling/brownie.json diff --git a/data/mods/Xedra_Evolved/items/armor/integrated.json b/data/mods/Xedra_Evolved/items/armor/integrated.json index 0f81dd66fb680..4d80f1b49f715 100644 --- a/data/mods/Xedra_Evolved/items/armor/integrated.json +++ b/data/mods/Xedra_Evolved/items/armor/integrated.json @@ -882,5 +882,30 @@ } ], "melee_damage": { "stab": 13 } + }, + { + "id": "integrated_brownie_fur", + "type": "ARMOR", + "category": "armor", + "name": { "str_sp": "brownie fur" }, + "description": "Thick fur-like hair covering your entire body.", + "weight": "300 g", + "volume": "300 ml", + "price": "0 cent", + "price_postapoc": "0 cent", + "material": [ "mut_fur" ], + "symbol": "x", + "color": "brown", + "warmth": 15, + "environmental_protection": 1, + "flags": [ "INTEGRATED", "ALLOWS_NATURAL_ATTACKS", "UNBREAKABLE", "PERSONAL", "WATER_FRIENDLY" ], + "armor": [ + { + "material": [ { "type": "mut_fur", "covered_by_mat": 100, "thickness": 2 } ], + "covers": [ "hand_l", "hand_r", "foot_l", "foot_r", "leg_l", "leg_r", "arm_l", "arm_r", "torso" ], + "coverage": 100, + "encumbrance": 0 + } + ] } ] diff --git a/data/mods/Xedra_Evolved/mutations/playable_changeling.json b/data/mods/Xedra_Evolved/mutations/playable_changeling.json index a161797d8a895..b628006f79c73 100644 --- a/data/mods/Xedra_Evolved/mutations/playable_changeling.json +++ b/data/mods/Xedra_Evolved/mutations/playable_changeling.json @@ -291,7 +291,7 @@ "name": { "str": "Right of Passage" }, "points": 8, "description": "The Fair Folk have dealt with many mortal civilizations over the aeons, and have come to mutually beneficial arrangements with some of them. Activate this trait to make your fae nature obvious, invoking those ancient agreements. This may anger some who have especially bad relationships with the fae.", - "prereqs": [ "PRETTY" ], + "prereqs": [ "PRETTY", "BEAUTIFUL", "BEAUTIFUL2", "BEAUTIFUL3" ], "category": [ "FAIR_FOLK_NOBLE" ], "active": true, "activated_is_setup": true, @@ -407,6 +407,115 @@ } ] }, + { + "type": "mutation", + "id": "BROWNIE_COLD_TOLERANCE", + "name": { "str": "Cold Tolerance" }, + "description": "The cold doesn't seem to bother you quite as much anymore.", + "points": 2, + "changes_to": [ "BROWNIE_COLD_TOLERANCE2" ], + "category": [ "FAIR_FOLK_COMMONER_BROWNIE" ], + "enchantments": [ { "values": [ { "value": "CLIMATE_CONTROL_HEAT", "add": 25 } ] } ] + }, + { + "type": "mutation", + "id": "BROWNIE_COLD_TOLERANCE2", + "name": { "str": "Cold Endurance" }, + "description": "Even on a winter day, you need only a light jacket now.", + "points": 4, + "prereqs": [ "PARACLESIAN_STR_DEX_1" ], + "prereqs2": [ "HIRSUTE_BROWNIE", "BROWNIE_FUR" ], + "changes_to": [ "BROWNIE_COLD_TOLERANCE3" ], + "category": [ "FAIR_FOLK_COMMONER_BROWNIE" ], + "enchantments": [ { "values": [ { "value": "CLIMATE_CONTROL_HEAT", "add": 50 } ] } ] + }, + { + "type": "mutation", + "id": "BROWNIE_COLD_TOLERANCE3", + "name": { "str": "Inured to Cold" }, + "description": "Legends say that brownies went about naked clad only in their almost-furry coat, and while you wouldn't go that far, you could wear a swimsuit in a blizzard without much trouble.", + "points": 8, + "prereqs": [ "PARACLESIAN_STR_DEX_2" ], + "prereqs2": [ "BROWNIE_FUR" ], + "category": [ "FAIR_FOLK_COMMONER_BROWNIE" ], + "threshreq": [ "THRESH_FAIR_FOLK_COMMONER_BROWNIE" ], + "enchantments": [ { "values": [ { "value": "CLIMATE_CONTROL_HEAT", "add": 120 } ] } ] + }, + { + "type": "mutation", + "id": "BROWNIE_MAKE_CHEESE_AND_BUTTER", + "name": { "str": "Churning As Quick as a Wink" }, + "points": 1, + "description": "Brownies are famous for their ability to do household chores, and you now have an instinctive understanding of making milk and cheese.", + "category": [ "FAIR_FOLK_COMMONER_BROWNIE" ] + }, + { + "type": "mutation", + "id": "HIRSUTE_BROWNIE", + "copy-from": "HIRSUTE", + "changes_to": [ "BROWNIE_FUR" ], + "category": [ "FAIR_FOLK_COMMONER_BROWNIE" ] + }, + { + "type": "mutation", + "id": "BROWNIE_FUR", + "name": { "str": "Coat of Fur" }, + "description": "Your hair has thickened to almost the level of fur covering your entire body. It's very warm and provides some level of protection against attacks.", + "points": 2, + "visibility": 6, + "ugliness": 2, + "prereqs": [ "HIRSUTE_BROWNIE" ], + "category": [ "FAIR_FOLK_COMMONER_BROWNIE" ], + "integrated_armor": [ "integrated_brownie_fur" ] + }, + { + "type": "mutation", + "id": "BROWNIE_HOMEBODY", + "name": { "str": "Homebody" }, + "description": "Brownies know every corner of their homes, all the well-worn grooves in the floor and the quick paths from place to place. Your speed is increased the longer you spend in the same area.", + "points": 6, + "prereqs": [ "BROWNIE_EASY_OVERLOOK" ], + "prereqs2": [ "BROWNIE_CRAFTING_BONUS2", "BROWNIE_CRAFTING_BONUS3" ], + "category": [ "FAIR_FOLK_COMMONER_BROWNIE" ], + "enchantments": [ { "values": [ { "value": "SPEED", "add": { "math": [ "u_brownie_homebody_speed_bonus" ] } } ] } ] + }, + { + "type": "mutation", + "id": "BROWNIE_SENSE_INTRUDERS", + "name": { "str": "Sense Intruders" }, + "description": "With the knowledge of one's home comes the knowledge that something is off about it. You can sense any intruders nearby, as long as you are indoors and have been in the same location for some time.", + "points": 8, + "prereqs": [ "BROWNIE_HOMEBODY" ], + "category": [ "FAIR_FOLK_COMMONER_BROWNIE" ], + "threshreq": [ "THRESH_FAIR_FOLK_COMMONER_BROWNIE" ], + "enchantments": [ + { + "condition": { "and": [ { "not": "u_is_outside" }, { "math": [ "u_brownie_sense_intruders", "!=", "0" ] } ] }, + "values": [ { "value": "MOTION_VISION_RANGE", "add": { "math": [ "u_val('perception') + u_brownie_homebody_speed_bonus" ] } } ] + } + ] + }, + { + "type": "mutation", + "id": "BROWNIE_BLINK_INDOORS", + "name": { "str": "Slip Through the Cracks" }, + "points": 4, + "description": "You can tell every nook and cranny of indoor spaces, and know how to quickly get from one place to another.", + "prereqs": [ "BROWNIE_HOMEBODY" ], + "category": [ "FAIR_FOLK_COMMONER_BROWNIE" ], + "spells_learned": [ [ "changeling_brownie_blink_indoors_spell", 1 ] ] + }, + { + "type": "mutation", + "id": "BROWNIE_TELEPORT_HOME", + "name": { "str": "Hurry Home" }, + "points": 8, + "description": "You can return home from anywhere, as quick as a wink.", + "prereqs": [ "BROWNIE_BLINK_INDOORS" ], + "category": [ "FAIR_FOLK_COMMONER_BROWNIE" ], + "threshreq": [ "THRESH_FAIR_FOLK_COMMONER_BROWNIE" ], + "spells_learned": [ [ "changeling_teleport_home_spell", 1 ] ] + }, { "type": "mutation", "id": "POOKA_ANTLERS", @@ -645,7 +754,7 @@ "type": "mutation", "id": "CHANGELING_INVISIBILITY", "name": { "str": "Hidden from Mortal Eyes" }, - "points": 2, + "points": 6, "description": "Like the Fair Folk of legend, you can remain unseen when you wish.", "prereqs": [ "CHANGELING_DISGUISE_AS_NATURE" ], "category": [ @@ -655,6 +764,13 @@ "FAIR_FOLK_COMMONER_SELKIE", "FAIR_FOLK_COMMONER_TROW" ], + "threshreq": [ + "THRESH_FAIR_FOLK_NOBLE", + "THRESH_FAIR_FOLK_COMMONER_BROWNIE", + "THRESH_FAIR_FOLK_COMMONER_POOKA", + "THRESH_FAIR_FOLK_COMMONER_SELKIE", + "THRESH_FAIR_FOLK_COMMONER_TROW" + ], "spells_learned": [ [ "changeling_invisibility_spell", 1 ] ] }, { diff --git a/data/mods/Xedra_Evolved/mutations/playable_changeling_eocs.json b/data/mods/Xedra_Evolved/mutations/playable_changeling_eocs.json index a109a4841e736..dd5d8abb8c042 100644 --- a/data/mods/Xedra_Evolved/mutations/playable_changeling_eocs.json +++ b/data/mods/Xedra_Evolved/mutations/playable_changeling_eocs.json @@ -547,6 +547,236 @@ "//": "This is necessary because calling u_deactivate_trait from within the trait EoC does not work", "effect": { "u_deactivate_trait": "CHANGELING_NOBLE_RIGHT_OF_PASSAGE" } }, + { + "type": "effect_on_condition", + "id": "EOC_BROWNIE_HOMEBODY_RAISING_EOC", + "recurrence": [ "1 hours", "1 hours" ], + "condition": { + "and": [ + { "u_has_trait": "BROWNIE_HOMEBODY" }, + { "math": [ "u_brownie_homebody_speed_bonus", "<=", "19" ] }, + { "not": { "u_has_effect": "sleep" } } + ] + }, + "effect": [ { "math": [ "u_brownie_homebody_speed_bonus", "++" ] }, { "math": [ "u_brownie_sense_intruders", "++" ] } ] + }, + { + "type": "effect_on_condition", + "id": "EOC_BROWNIE_HOMEBODY_LOWERING_EOC", + "required_event": "avatar_enters_omt", + "eoc_type": "EVENT", + "condition": { + "and": [ + "u_is_outside", + { "math": [ "u_brownie_homebody_speed_bonus", ">", "0" ] }, + { + "not": { + "or": [ + { "u_at_om_location": "FACTION_CAMP_ANY" }, + { "u_at_om_location": "mansion_e1" }, + { "u_at_om_location": "mansion_boarded_e1" }, + { "u_at_om_location": "mansion_e2" }, + { "u_at_om_location": "mansion_+1" }, + { "u_at_om_location": "mansion_+1d" }, + { "u_at_om_location": "mansion_+1u" }, + { "u_at_om_location": "mansion_+1_roof" }, + { "u_at_om_location": "mansion_+2" }, + { "u_at_om_location": "mansion_+2d" }, + { "u_at_om_location": "mansion_+2u" }, + { "u_at_om_location": "mansion_+2_roof" }, + { "u_at_om_location": "mansion_+3" }, + { "u_at_om_location": "mansion_+3u" }, + { "u_at_om_location": "mansion_+3_roof" }, + { "u_at_om_location": "mansion_+4" }, + { "u_at_om_location": "mansion_+4d" }, + { "u_at_om_location": "mansion_+4u" }, + { "u_at_om_location": "mansion_+4_roof" }, + { "u_at_om_location": "mansion_boarded_c1" }, + { "u_at_om_location": "mansion_c1" }, + { "u_at_om_location": "mansion_c1d" }, + { "u_at_om_location": "mansion_boarded_c1u" }, + { "u_at_om_location": "mansion_c1u" }, + { "u_at_om_location": "mansion_c1_roof" }, + { "u_at_om_location": "mansion_boarded_c2" }, + { "u_at_om_location": "mansion_c2" }, + { "u_at_om_location": "mansion_c2d" }, + { "u_at_om_location": "mansion_boarded_c2u" }, + { "u_at_om_location": "mansion_c2u" }, + { "u_at_om_location": "mansion_c2_roof" }, + { "u_at_om_location": "mansion_boarded_c3" }, + { "u_at_om_location": "mansion_c3" }, + { "u_at_om_location": "mansion_c3d" }, + { "u_at_om_location": "mansion_boarded_c3u" }, + { "u_at_om_location": "mansion_c3u" }, + { "u_at_om_location": "mansion_c3_roof" }, + { "u_at_om_location": "mansion_boarded_c4" }, + { "u_at_om_location": "mansion_c4" }, + { "u_at_om_location": "mansion_c4d" }, + { "u_at_om_location": "mansion_boarded_c4u" }, + { "u_at_om_location": "mansion_c4u" }, + { "u_at_om_location": "mansion_c4_roof" }, + { "u_at_om_location": "mansion_c5" }, + { "u_at_om_location": "mansion_c5d" }, + { "u_at_om_location": "mansion_c5u" }, + { "u_at_om_location": "mansion_c5_roof" }, + { "u_at_om_location": "mansion_e1d" }, + { "u_at_om_location": "mansion_boarded_e1u" }, + { "u_at_om_location": "mansion_e1u" }, + { "u_at_om_location": "mansion_e1_roof" }, + { "u_at_om_location": "mansion_e2d" }, + { "u_at_om_location": "mansion_e2u" }, + { "u_at_om_location": "mansion_e2_roof" }, + { "u_at_om_location": "mansion_t1" }, + { "u_at_om_location": "mansion_t1d" }, + { "u_at_om_location": "mansion_t1u" }, + { "u_at_om_location": "mansion_t1_roof" }, + { "u_at_om_location": "mansion_boarded_t2" }, + { "u_at_om_location": "mansion_boarded_t2_start" }, + { "u_at_om_location": "mansion_t2" }, + { "u_at_om_location": "mansion_boarded_t2d" }, + { "u_at_om_location": "mansion_boarded_t2d_start" }, + { "u_at_om_location": "mansion_t2d" }, + { "u_at_om_location": "mansion_boarded_t2u" }, + { "u_at_om_location": "mansion_t2u" }, + { "u_at_om_location": "mansion_t2_roof" }, + { "u_at_om_location": "mansion_boarded_t4" }, + { "u_at_om_location": "mansion_t4" }, + { "u_at_om_location": "mansion_t4d" }, + { "u_at_om_location": "mansion_boarded_t4u" }, + { "u_at_om_location": "mansion_t4u" }, + { "u_at_om_location": "mansion_t4_roof" }, + { "u_at_om_location": "mansion_t5" }, + { "u_at_om_location": "mansion_t5d" }, + { "u_at_om_location": "mansion_t5u" }, + { "u_at_om_location": "mansion_t5_roof" }, + { "u_at_om_location": "mansion_t6" }, + { "u_at_om_location": "mansion_t6d" }, + { "u_at_om_location": "mansion_t6u" }, + { "u_at_om_location": "mansion_t6_roof" }, + { "u_at_om_location": "mansion_t7" }, + { "u_at_om_location": "mansion_t7d" }, + { "u_at_om_location": "mansion_t7u" }, + { "u_at_om_location": "mansion_t7_roof" } + ] + } + } + ] + }, + "effect": [ { "math": [ "u_brownie_homebody_speed_bonus", "--" ] }, { "math": [ "u_brownie_sense_intruders", "=", "0" ] } ] + }, + { + "type": "effect_on_condition", + "id": "EOC_BROWNIE_LEARN_CHEESE_AND_BUTTER", + "required_event": "gains_mutation", + "eoc_type": "EVENT", + "condition": { "compare_string": [ "BROWNIE_MAKE_CHEESE_AND_BUTTER", { "context_val": "trait" } ] }, + "effect": [ { "u_learn_recipe": "cheese_hard_brownie" }, { "u_learn_recipe": "butter_brownie" } ] + }, + { + "type": "effect_on_condition", + "id": "EOC_BROWNIE_INDOOR_BLINK", + "condition": { "not": "u_is_outside" }, + "effect": [ + { + "u_location_variable": { "context_val": "brownie_teleport" }, + "passable_only": true, + "min_radius": 5, + "max_radius": 10, + "true_eocs": [ + { + "id": "EOC_BROWNIE_INDOOR_BLINK_SUCCESS", + "condition": { "map_terrain_with_flag": "INDOORS", "loc": { "context_val": "brownie_teleport" } }, + "effect": [ + { "u_teleport": { "context_val": "brownie_teleport" } }, + { "u_message": "You carefully slip through the cracks.", "type": "good" } + ], + "false_effect": [ { "run_eocs": "EOC_BROWNIE_INDOOR_BLINK" } ] + } + ] + } + ], + "false_effect": { "u_message": "You must be indoors to slip through the cracks.", "type": "bad" } + }, + { + "type": "effect_on_condition", + "id": "EOC_BROWNIE_HOME_TELEPORT_SET_DESTINATION", + "eoc_type": "EVENT", + "required_event": "character_wakes_up", + "condition": { "and": [ { "u_has_trait": "BROWNIE_TELEPORT_HOME" }, { "math": [ "u_brownie_homebody_speed_bonus", ">=", "12" ] } ] }, + "effect": [ { "u_location_variable": { "u_val": "brownie_home_teleport_loc" } } ] + }, + { + "type": "effect_on_condition", + "id": "EOC_BROWNIE_HOME_TELEPORT_ACTUAL_TELEPORT", + "condition": { + "and": [ + { "not": "u_is_outside" }, + { + "or": [ + { "u_is_on_terrain": "t_door_white_frame" }, + { "u_is_on_terrain": "t_door_frame" }, + { "u_is_on_terrain": "t_door_lab_frame" }, + { "u_is_on_terrain": "t_door_red_frame" }, + { "u_is_on_terrain": "t_door_green_frame" }, + { "u_is_on_terrain": "t_door_gray_frame" }, + { "u_is_on_terrain": "t_mdoor_lab_frame" }, + { "u_is_on_terrain": "t_mdoor_frame" }, + { "u_is_on_terrain": "t_door_bar_o" }, + { "u_is_on_terrain": "t_door_o" }, + { "u_is_on_terrain": "t_door_lab_o" }, + { "u_is_on_terrain": "t_door_green_o" }, + { "u_is_on_terrain": "t_door_gray_o" }, + { "u_is_on_terrain": "t_door_red_o" }, + { "u_is_on_terrain": "t_door_white_o" }, + { "u_is_on_terrain": "t_door_glass_gray_o" }, + { "u_is_on_terrain": "t_door_glass_green_o" }, + { "u_is_on_terrain": "t_door_glass_red_o" }, + { "u_is_on_terrain": "t_door_glass_lab_o" }, + { "u_is_on_terrain": "t_door_glass_o" }, + { "u_is_on_terrain": "t_door_metal_lab_o" }, + { "u_is_on_terrain": "t_door_metal_o" }, + { "u_is_on_terrain": "t_door_glass_white_o" }, + { "u_is_on_terrain": "t_secretdoor_concrete_o" }, + { "u_is_on_terrain": "t_secretdoor_metal_o" }, + { "u_is_on_terrain": "t_screen_door_o" }, + { "u_is_on_terrain": "t_door_metal_bulkhead_o" }, + { "u_is_on_terrain": "t_door_glass_frosted_lab_o" }, + { "u_is_on_terrain": "t_door_glass_frosted_o" }, + { "u_is_on_terrain": "t_laminated_door_glass_o" }, + { "u_is_on_terrain": "t_rdoor_o" }, + { "u_is_on_terrain": "t_ballistic_door_glass_o" }, + { "u_is_on_terrain": "t_door_metal_corrugated_o" }, + { "u_is_on_terrain": "t_reinforced_door_glass_o" }, + { "u_is_on_terrain": "t_reinforced_door_glass_lab_o" } + ] + } + ] + }, + "effect": [ + { "math": [ "brownie_home_teleport", "=", "0" ] }, + { + "u_run_monster_eocs": [ + { "id": "EOC_BROWNIE_HOME_TELEPORT_SIGHT_CHECK_MONSTER", "effect": { "math": [ "brownie_home_teleport", "=", "1" ] } } + ], + "monster_range": 45, + "monster_must_see": true + }, + { + "u_run_npc_eocs": [ { "id": "EOC_BROWNIE_HOME_TELEPORT_SIGHT_CHECK_NPC", "effect": { "math": [ "brownie_home_teleport", "=", "1" ] } } ], + "npc_range": 45, + "npc_must_see": true + }, + { + "if": { "math": [ "brownie_home_teleport", "==", "0" ] }, + "then": [ + { "u_teleport": { "u_val": "brownie_home_teleport_loc" } }, + { "u_message": "You slip through the door and head straight home.", "type": "good" } + ], + "else": { "u_message": "You must be unobserved to hurry home!", "type": "bad" } + } + ], + "false_effect": { "u_message": "You must be in a doorway to hurry home.", "type": "bad" } + }, { "type": "effect_on_condition", "id": "EOC_POOKA_SHAPESHIFTING_MANA_CHECK", diff --git a/data/mods/Xedra_Evolved/recipes/changeling/brownie.json b/data/mods/Xedra_Evolved/recipes/changeling/brownie.json new file mode 100644 index 0000000000000..40f436cf2d8c6 --- /dev/null +++ b/data/mods/Xedra_Evolved/recipes/changeling/brownie.json @@ -0,0 +1,42 @@ +[ + { + "type": "recipe", + "activity_level": "LIGHT_EXERCISE", + "result": "butter", + "id_suffix": "brownie", + "category": "CC_FOOD", + "subcategory": "CSC_FOOD_OTHER", + "skill_used": "cooking", + "difficulty": 5, + "batch_time_factors": [ 95, 2 ], + "time": "15 m", + "qualities": [ { "id": "CHURN", "level": 1 } ], + "components": [ [ [ "milk", 5 ] ] ], + "charges": 99 + }, + { + "type": "recipe", + "activity_level": "LIGHT_EXERCISE", + "result": "cheese_hard", + "id_suffix": "brownie", + "category": "CC_FOOD", + "subcategory": "CSC_FOOD_OTHER", + "skill_used": "cooking", + "difficulty": 5, + "time": "30 m", + "batch_time_factors": [ 50, 5 ], + "charges": 1, + "qualities": [ + { "id": "CUT", "level": 2 }, + { "id": "COOK", "level": 3 }, + { "id": "CONTAIN", "level": 1 }, + { "id": "STRAIN", "level": 2 } + ], + "proficiencies": [ + { "proficiency": "prof_food_prep" }, + { "proficiency": "prof_cheesemaking_1" }, + { "proficiency": "prof_cheesemaking_2" } + ], + "components": [ [ [ "milk", 2 ] ], [ [ "salt", 1 ] ] ] + } +] diff --git a/data/mods/Xedra_Evolved/spells/changeling_spells.json b/data/mods/Xedra_Evolved/spells/changeling_spells.json index 8cf0d712748c1..4df7f3ef52ec3 100644 --- a/data/mods/Xedra_Evolved/spells/changeling_spells.json +++ b/data/mods/Xedra_Evolved/spells/changeling_spells.json @@ -17,8 +17,8 @@ "min_duration": { "math": [ "(changeling_common_traits() * 2250) + (u_skill('deduction') * 23400) + 35100" ] }, "max_duration": { "math": [ "(changeling_common_traits() * 5750) + (u_skill('deduction') * 56300) + 78900" ] }, "energy_source": "MANA", - "base_energy_cost": 75, - "base_casting_time": 50 + "base_energy_cost": { "math": [ "max(( 150 - (changeling_common_traits() * 2) - (u_skill('deduction') * 3)), 50)" ] }, + "base_casting_time": { "math": [ "max(( 100 - changeling_common_traits() - (u_skill('deduction') * 3)), 30)" ] } }, { "id": "changeling_invisibility_spell", @@ -38,8 +38,8 @@ "min_duration": { "math": [ "(changeling_common_traits() * 50) + (u_skill('deduction') * 500) + 2600" ] }, "max_duration": { "math": [ "(changeling_common_traits() * 163) + (u_skill('deduction') * 1200) + 13900" ] }, "energy_source": "MANA", - "base_energy_cost": 450, - "base_casting_time": 150 + "base_energy_cost": { "math": [ "max(( 750 - (changeling_common_traits() * 5) - (u_skill('deduction') * 20)), 350)" ] }, + "base_casting_time": { "math": [ "max(( 250 - (changeling_common_traits() * 3) - (u_skill('deduction') * 8)), 50)" ] } }, { "id": "changeling_summon_will_o_the_wisps_spell", @@ -65,8 +65,8 @@ "min_aoe": 3, "max_aoe": 3, "energy_source": "MANA", - "base_energy_cost": 150, - "base_casting_time": 75 + "base_energy_cost": { "math": [ "max(( 300 - (changeling_common_traits() * 3) - (u_skill('deduction') * 10)), 100)" ] }, + "base_casting_time": { "math": [ "max(( 100 - changeling_common_traits() - (u_skill('deduction') * 3)), 50)" ] } }, { "id": "changeling_noble_cure_bad_conditions_spell", @@ -203,5 +203,58 @@ "base_casting_time": { "math": [ "max(( 400 - (u_sum_traits_of_category_char_has('FAIR_FOLK_NOBLE') * 8) - (u_skill('deduction') * 15)), 150)" ] } + }, + { + "id": "changeling_brownie_blink_indoors_spell", + "type": "SPELL", + "name": "Slip Through the Cracks", + "description": "When in danger of being discovered, brownies can slip away in moments. This glamour allows you to vanish and reappear elsewhere in the house. It cannot be used outdoors.", + "message": "", + "flags": [ "NO_FAIL", "SOMATIC" ], + "valid_targets": [ "self" ], + "spell_class": "CHANGELING_MAGIC", + "difficulty": 7, + "skill": "deduction", + "max_level": 1, + "effect": "effect_on_condition", + "effect_str": "EOC_BROWNIE_INDOOR_BLINK", + "shape": "blast", + "energy_source": "MANA", + "base_energy_cost": { + "math": [ + "max(( 500 - (u_sum_traits_of_category_char_has('FAIR_FOLK_COMMONER_BROWNIE') * 3) - (u_skill('deduction') * 15)), 250)" + ] + }, + "base_casting_time": { + "math": [ + "max(( 150 - (u_sum_traits_of_category_char_has('FAIR_FOLK_COMMONER_BROWNIE') * 1) - (u_skill('deduction') * 4)), 50)" + ] + } + }, + { + "id": "changeling_teleport_home_spell", + "type": "SPELL", + "name": "Hurry Home", + "description": "You always know your home and can return to it at need. When standing in a doorway, you can use this glamour to return to the last place you slept, as long as you spent at least a day at that place previously and as long as you are unobserved.", + "flags": [ "NO_FAIL", "SOMATIC" ], + "valid_targets": [ "self" ], + "spell_class": "CHANGELING_MAGIC", + "difficulty": 9, + "skill": "deduction", + "max_level": 1, + "effect": "effect_on_condition", + "effect_str": "EOC_BROWNIE_HOME_TELEPORT_ACTUAL_TELEPORT", + "shape": "blast", + "energy_source": "MANA", + "base_energy_cost": { + "math": [ + "max(( 800 - (u_sum_traits_of_category_char_has('FAIR_FOLK_COMMONER_BROWNIE') * 10) - (u_skill('deduction') * 25)), 400)" + ] + }, + "base_casting_time": { + "math": [ + "max(( 100 - (u_sum_traits_of_category_char_has('FAIR_FOLK_COMMONER_BROWNIE') * 3) - (u_skill('deduction') * 5)), 25)" + ] + } } ]