Skip to content

Commit 231a2e5

Browse files
Sky island terraforming & security (#82891)
* Add two terraforming upgrades. * Add two spells in case hostiles and tears appear on the island. * (XE) The Anathema cannot spawn on the island. * Fix a comment * Fix the same comment. * Fix errors. * Implement a condition that checks for being on the island and make the Anathema check use it.
1 parent 3e6c3c8 commit 231a2e5

File tree

7 files changed

+279
-0
lines changed

7 files changed

+279
-0
lines changed

data/mods/Sky_Island/EOCs.json

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
"id": "EOC_initiate_randomport",
1818
"//": "The actual EOC that teleports the player and NPCs that follow to the ground. If this fails, it will be checked and corrected in the following EOC_safely_landed event, which is also where most values are initialized. A target location must already be stored when this is called. When this begins, it also memorizes the player's exact position on leaving, which is where they'll return to when the mission ends or they die. Note that this also gives a bit of warpcloak before the teleport even happens, so if the player spawns over a pit or hole they will not be injured.",
1919
"effect": [
20+
{ "math": [ "u_spell_level('island_hostile_eviction') = -1" ] },
21+
{ "math": [ "u_spell_level('island_close_tear_and_portal') = -1" ] },
2022
{ "u_location_variable": { "global_val": "OM_HQ_origin" } },
2123
{
2224
"u_location_variable": { "global_val": "OM_HQ_origin_npc" },
@@ -1006,6 +1008,65 @@
10061008
{ "u_add_effect": "effect_warped_waterwalking", "duration": 180 }
10071009
]
10081010
},
1011+
{
1012+
"id": "island_hostile_eviction",
1013+
"type": "SPELL",
1014+
"name": "Evict Hostile",
1015+
"description": "Designate a hostile for the island to banish. Only works on the island.",
1016+
"//": "Intended to banish everything without exception. When possible, add a way to make banish always work no matter the target's hp.",
1017+
"teachable": false,
1018+
"valid_targets": [ "hostile" ],
1019+
"spell_class": "NONE",
1020+
"flags": [ "NO_FAIL", "NO_LEGS", "NO_HANDS", "NON_MAGICAL", "IGNORE_WALLS", "NO_PROJECTILE" ],
1021+
"condition": { "not": { "u_has_trait": "awayfromhome" } },
1022+
"difficulty": 0,
1023+
"min_damage": 99999999,
1024+
"max_damage": 99999999,
1025+
"min_range": 100,
1026+
"max_range": 100,
1027+
"base_casting_time": 0,
1028+
"effect": "banishment",
1029+
"shape": "blast",
1030+
"damage_type": "pure"
1031+
},
1032+
{
1033+
"id": "island_close_tear_and_portal",
1034+
"type": "SPELL",
1035+
"name": "Close Breach",
1036+
"description": "Designate a tear in reality or a portal for the island to close. Only works on the island.",
1037+
"teachable": false,
1038+
"valid_targets": [ "ground" ],
1039+
"spell_class": "NONE",
1040+
"flags": [ "NO_FAIL", "NO_LEGS", "NO_HANDS", "NON_MAGICAL", "IGNORE_WALLS", "NO_PROJECTILE" ],
1041+
"condition": { "not": { "u_has_trait": "awayfromhome" } },
1042+
"difficulty": 0,
1043+
"min_damage": 1,
1044+
"max_damage": 1,
1045+
"min_range": 100,
1046+
"max_range": 100,
1047+
"base_casting_time": 0,
1048+
"effect": "ter_transform",
1049+
"effect_str": "ter_close_tears_and_portals",
1050+
"shape": "blast"
1051+
},
1052+
{
1053+
"type": "ter_furn_transform",
1054+
"id": "ter_close_tears_and_portals",
1055+
"field": [
1056+
{
1057+
"result": [ "fd_null" ],
1058+
"valid_field": [ "fd_fatigue" ],
1059+
"message": "The tear in reality vanishes in a shower of sparks!"
1060+
}
1061+
],
1062+
"trap": [
1063+
{
1064+
"result": [ "tr_glass" ],
1065+
"valid_trap": [ "tr_portal" ],
1066+
"message": "Sparks appear across the portal and it shatters into shards of glass!"
1067+
}
1068+
]
1069+
},
10091070
{
10101071
"type": "effect_on_condition",
10111072
"id": "EOC_WARPED_POND_CREATION",

data/mods/Sky_Island/dialog_statue.json

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,18 @@
107107
],
108108
"topic": "SKYISLAND_SERVICES"
109109
},
110+
{
111+
"text": "Save me from danger.",
112+
"effect": [
113+
{ "math": [ "u_spell_level('island_hostile_eviction') = 1" ] },
114+
{ "math": [ "u_spell_level('island_close_tear_and_portal') = 1" ] },
115+
{
116+
"u_message": "You now have the power to close holes in existence and banish hostiles from the island until your next expedition.",
117+
"popup": true
118+
}
119+
],
120+
"topic": "SKYISLAND_SERVICES"
121+
},
110122
{
111123
"text": "View my expedition stats.",
112124
"effect": [ { "run_eocs": [ "EOC_statcheck" ] } ],
@@ -264,6 +276,14 @@
264276
"effect": [ { "assign_mission": "SKYISLAND_UPGRADE_sunblock" } ],
265277
"topic": "SKYISLAND_UPGRADES_TERRAFORM"
266278
},
279+
{
280+
"text": "Unlock: Personal Radiation Shield",
281+
"condition": {
282+
"and": [ { "not": { "u_has_mission": "SKYISLAND_UPGRADE_radblock" } }, { "not": { "u_has_trait": "mut_skyisland_radblock" } } ]
283+
},
284+
"effect": [ { "assign_mission": "SKYISLAND_UPGRADE_radblock" } ],
285+
"topic": "SKYISLAND_UPGRADES_TERRAFORM"
286+
},
267287
{
268288
"text": "Unlock: Personal Windblocker",
269289
"condition": {
@@ -275,6 +295,17 @@
275295
"effect": [ { "assign_mission": "SKYISLAND_UPGRADE_windblock" } ],
276296
"topic": "SKYISLAND_UPGRADES_TERRAFORM"
277297
},
298+
{
299+
"text": "Unlock: Island-Side Resilience",
300+
"condition": {
301+
"and": [
302+
{ "not": { "u_has_mission": "SKYISLAND_UPGRADE_island_steady" } },
303+
{ "not": { "u_has_trait": "mut_skyisland_island_steady" } }
304+
]
305+
},
306+
"effect": [ { "assign_mission": "SKYISLAND_UPGRADE_island_steady" } ],
307+
"topic": "SKYISLAND_UPGRADES_TERRAFORM"
308+
},
278309
{
279310
"text": "Unlock: Personal Temperature Adjustement",
280311
"condition": {

data/mods/Sky_Island/effects.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,5 +129,20 @@
129129
"rating": "good",
130130
"show_intensity": false,
131131
"flags": [ "SUPER_CLAIRVOYANCE" ]
132+
},
133+
{
134+
"type": "effect_type",
135+
"id": "effect_island_radblock",
136+
"name": [ "" ],
137+
"desc": [ "" ],
138+
"rating": "good",
139+
"flags": [ "NO_RADIATION" ]
140+
},
141+
{
142+
"type": "effect_type",
143+
"id": "effect_island_steady",
144+
"name": [ "" ],
145+
"desc": [ "" ],
146+
"flags": [ "STEADY" ]
132147
}
133148
]

data/mods/Sky_Island/mod_interactions/xedra_evolved/eocs.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,5 +175,11 @@
175175
{ "u_learn_recipe": "xe_vampire_blood_weaknesses_reshuffle" },
176176
{ "u_message": "You can now reshuffle your weaknesses.", "type": "popup" }
177177
]
178+
},
179+
{
180+
"type": "effect_on_condition",
181+
"id": "EOC_CONDITION_IS_NOT_ON_SKY_ISLAND",
182+
"condition": { "u_has_trait": "awayfromhome" },
183+
"effect": [ ]
178184
}
179185
]

data/mods/Sky_Island/mutations.json

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,5 +108,37 @@
108108
"values": [ { "value": "CLIMATE_CONTROL_HEAT", "add": 999 }, { "value": "CLIMATE_CONTROL_CHILL", "add": 999 } ]
109109
}
110110
]
111+
},
112+
{
113+
"type": "mutation",
114+
"id": "mut_skyisland_radblock",
115+
"name": { "str": "Personal Radiation Shield", "//~": "NO_I18N" },
116+
"description": { "str": "As long as you are on the island, radiation cannot affect you.", "//~": "NO_I18N" },
117+
"points": 0,
118+
"valid": false,
119+
"player_display": false,
120+
"purifiable": false,
121+
"enchantments": [
122+
{
123+
"condition": { "not": { "u_has_trait": "awayfromhome" } },
124+
"ench_effects": [ { "effect": "effect_island_radblock", "intensity": 1 } ]
125+
}
126+
]
127+
},
128+
{
129+
"type": "mutation",
130+
"id": "mut_skyisland_island_steady",
131+
"name": { "str": "Island-Side Resilience", "//~": "NO_I18N" },
132+
"description": { "str": "As long as you are on the island, your speed cannot be lower than its default.", "//~": "NO_I18N" },
133+
"points": 0,
134+
"valid": false,
135+
"player_display": false,
136+
"purifiable": false,
137+
"enchantments": [
138+
{
139+
"condition": { "not": { "u_has_trait": "awayfromhome" } },
140+
"ench_effects": [ { "effect": "effect_island_steady", "intensity": 1 } ]
141+
}
142+
]
111143
}
112144
]

data/mods/Sky_Island/upgrade_missions.json

Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5095,6 +5095,70 @@
50955095
[ [ "glass_shard", 176 ] ]
50965096
]
50975097
},
5098+
{
5099+
"id": "SKYISLAND_UPGRADE_radblock",
5100+
"type": "mission_definition",
5101+
"name": "Upgrade: Personal Radiation Shield",
5102+
"description": "Completing this mission will unlock a permanent upgrade for all future expeditions.\n\nCraft a Focused Scrubber from janitor supplies. The Heart of the Island has already placed the recipe inside your mind.\n\nEFFECT: Radiation cannot affect you while on the island.",
5103+
"goal": "MGOAL_FIND_ITEM",
5104+
"item": "upgradekey_radblock",
5105+
"count": 1,
5106+
"difficulty": 0,
5107+
"value": 0,
5108+
"has_generic_rewards": false,
5109+
"start": {
5110+
"effect": [
5111+
{ "u_learn_recipe": "upgradekey_radblock" },
5112+
{
5113+
"u_message": "Somehow, you understand the statue is calling out for something that can strengthen its power.\nA new recipe has been learned. Craft this artifact to permanently upgrade the island.\n\nEFFECT: Radiation cannot affect you while on the island.",
5114+
"popup": true
5115+
}
5116+
]
5117+
},
5118+
"end": {
5119+
"effect": [
5120+
{ "u_add_trait": "mut_skyisland_radblock" },
5121+
{ "u_forget_recipe": "upgradekey_radblock" },
5122+
{
5123+
"u_message": "The light shifts a little. As long as you are on the island, radiation won't hurt you.",
5124+
"type": "mixed"
5125+
}
5126+
]
5127+
}
5128+
},
5129+
{
5130+
"id": "upgradekey_radblock",
5131+
"type": "ITEM",
5132+
"category": "spare_parts",
5133+
"name": { "str": "Focused Scrubber" },
5134+
"description": "This strange metaphysical artifact will make the island protect you from radiation while you are on it. There might never be a single source of radiation on the island, but better prepared than sorry. Will be used automatically upon crafting, and can only be used once.\n\nASSOCIATED UPGRADE: personal radiation shield.",
5135+
"volume": "25000 ml",
5136+
"weight": "15000 g",
5137+
"longest_side": "90 cm",
5138+
"material": [ "stone" ],
5139+
"symbol": "V",
5140+
"color": "white"
5141+
},
5142+
{
5143+
"result": "upgradekey_radblock",
5144+
"type": "recipe",
5145+
"activity_level": "NO_EXERCISE",
5146+
"category": "CC_WARP",
5147+
"subcategory": "CSC_WARP_UPGRADES",
5148+
"//": "Intended to be a very early-game craft, as island-side radiation immunity is a very niche effect.",
5149+
"skill_used": "survival",
5150+
"difficulty": 0,
5151+
"time": "15 m",
5152+
"flags": [ "SECRET", "BLIND_EASY" ],
5153+
"reversible": false,
5154+
"tools": [ [ [ "fakeitem_statue", -1 ] ] ],
5155+
"components": [
5156+
[ [ "bleach", 30 ], [ "ammonia_hydroxide", 30 ] ],
5157+
[ [ "broom", 1 ] ],
5158+
[ [ "mop", 1 ], [ "mop_folded", 1 ] ],
5159+
[ [ "soap", 10 ], [ "detergent", 10 ] ]
5160+
]
5161+
},
50985162
{
50995163
"id": "SKYISLAND_UPGRADE_windblock",
51005164
"type": "mission_definition",
@@ -5160,6 +5224,68 @@
51605224
[ [ "any_tallow", 24, "LIST" ] ]
51615225
]
51625226
},
5227+
{
5228+
"id": "SKYISLAND_UPGRADE_island_steady",
5229+
"type": "mission_definition",
5230+
"name": "Upgrade: Island-Side Resilience",
5231+
"description": "Completing this mission will unlock a permanent upgrade for all future expeditions.\n\nCraft an Unyielding Sinew from fibers and cables. The Heart of the Island has already placed the recipe inside your mind.\n\nEFFECT: Your speed cannot be below its default while on the island.",
5232+
"goal": "MGOAL_FIND_ITEM",
5233+
"item": "upgradekey_island_steady",
5234+
"count": 1,
5235+
"difficulty": 0,
5236+
"value": 0,
5237+
"has_generic_rewards": false,
5238+
"start": {
5239+
"effect": [
5240+
{ "u_learn_recipe": "upgradekey_island_steady" },
5241+
{
5242+
"u_message": "Somehow, you understand the statue is calling out for something that can strengthen its power.\nA new recipe has been learned. Craft this artifact to permanently upgrade the island.\n\nEFFECT: Your speed cannot be below its default while on the island.",
5243+
"popup": true
5244+
}
5245+
]
5246+
},
5247+
"end": {
5248+
"effect": [
5249+
{ "u_add_trait": "mut_skyisland_island_steady" },
5250+
{ "u_forget_recipe": "upgradekey_island_steady" },
5251+
{
5252+
"u_message": "Your sinews tingle for a second. As long as you are on the island, your speed won't be lower than its default.",
5253+
"type": "mixed"
5254+
}
5255+
]
5256+
}
5257+
},
5258+
{
5259+
"id": "upgradekey_island_steady",
5260+
"type": "ITEM",
5261+
"category": "spare_parts",
5262+
"name": { "str": "Unyielding Sinew" },
5263+
"description": "This strange metaphysical artifact will make the island maintain your speed while you are not earthside. Will be used automatically upon crafting, and can only be used once.\n\nASSOCIATED UPGRADE: island-side resilience.",
5264+
"volume": "25000 ml",
5265+
"weight": "15000 g",
5266+
"longest_side": "90 cm",
5267+
"material": [ "stone" ],
5268+
"symbol": "V",
5269+
"color": "white"
5270+
},
5271+
{
5272+
"result": "upgradekey_island_steady",
5273+
"type": "recipe",
5274+
"activity_level": "NO_EXERCISE",
5275+
"category": "CC_WARP",
5276+
"subcategory": "CSC_WARP_UPGRADES",
5277+
"skill_used": "survival",
5278+
"difficulty": 0,
5279+
"time": "15 m",
5280+
"flags": [ "SECRET", "BLIND_EASY" ],
5281+
"reversible": false,
5282+
"tools": [ [ [ "fakeitem_statue", -1 ] ] ],
5283+
"components": [
5284+
[ [ "jumper_cable", 3 ], [ "jumper_cable_heavy", 3 ], [ "hd_tow_cable", 3 ] ],
5285+
[ [ "hc_chain_link", 11 ], [ "qt_chain_link", 11 ], [ "ch_chain_link", 11 ] ],
5286+
[ [ "plant_fibre", 500 ], [ "sinew", 500 ] ]
5287+
]
5288+
},
51635289
{
51645290
"id": "SKYISLAND_UPGRADE_personal_temperature_adaptation",
51655291
"type": "mission_definition",

data/mods/Xedra_Evolved/monsters/anathema.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,7 @@
252252
"//2": "Requires at least one warning to have been given before spawning can succeed. The warnings are global, not character-unique.",
253253
"condition": {
254254
"and": [
255+
{ "test_eoc": "EOC_CONDITION_IS_NOT_ON_SKY_ISLAND" },
255256
{ "one_in_chance": 6 },
256257
{ "not": "is_day" },
257258
{ "not": { "u_has_effect": "sleep" } },
@@ -341,6 +342,7 @@
341342
"//1": "Same conditions as the above, minus the RNG check and the warnings check.",
342343
"condition": {
343344
"and": [
345+
{ "test_eoc": "EOC_CONDITION_IS_NOT_ON_SKY_ISLAND" },
344346
{ "not": "is_day" },
345347
{ "not": { "u_has_effect": "sleep" } },
346348
{ "not": { "u_has_effect": "effect_vampire_torpor" } },
@@ -530,6 +532,12 @@
530532
{ "u_message": "…but they will come back.", "type": "bad" }
531533
]
532534
},
535+
{
536+
"type": "effect_on_condition",
537+
"id": "EOC_CONDITION_IS_NOT_ON_SKY_ISLAND",
538+
"condition": { "math": [ "0 == 0" ] },
539+
"effect": [ ]
540+
},
533541
{
534542
"type": "snippet",
535543
"category": "Anathema_Warnings_Snippets",

0 commit comments

Comments
 (0)