Code Monkey home page Code Monkey logo

cdda-sky-islands's Introduction

Sky Islands

A raid-based gameplay overhaul mod for CDDA, inspired by games like Escape from Tarkov and Dark & Darker.

Warning:

  • THIS REPOSITORY IS CURRENTLY FOR TESTING PURPOSES! Expect possible bugs and balance issues, even more than usual. When in a more polished state, efforts will be made to bring this new codebase to the mainline repo. You MUST be playing an up to date (Experimental) version of C:DDA for this to work!
  • You MUST make a custom character for this. "Play Now!" will not work.
  • The game uses code to search large areas of the map. That means you may run into load times of up to a couple minutes at times. You will generally be warned of these in-game, so please be patient.
  • Save often because there WILL be bugs and even occasionally crashes at this stage.
  • There is yet no way to clear the map. This means despite a large search radius you will sometimes teleport near areas you've been before, and your save file will get very large very fast. Unfortunately these are known issues and cannot be solved by mod-accessible code at this time.

Changelog has been moved to the bottom! Scroll down!

Overview

This mod attempts to completely change how you play CDDA.

You start off high in the sky on a floating island, and using a warp statue located there, will be teleported to a random location on the earth below to commence an "expedition". There, you are on a limited timer of only 2 hours and must fight, loot, and journey your way to the nearby exit portal. Use it, and you will bring all the items you were carrying back to the safety of your floating sanctuary, but you will not be able to return to the place you left behind. The better equipped you are, the more likely you will survive, but remember that bringing out too much gear will make it hard to carry much new loot home -- and dying with all that high quality gear means it's gone forever. Balancing what gear you are willing to risk on any expedition is an important consideration.

You Can't Go Back

Once you warp home, there will be no way to warp back to the area on the ground you just left. Every trip to the surface is fleeting. As a result you will have no way to keep most vehicles, no need to thoroughly clear most areas, and no reason to preserve anything. This will drastically change how most players approach normally routine scenarios. Remember that only carried items can be brought home -- if something cannot be taken with you or used during the expedition, it's junk!

Death is not the end.

Should you die, your character's story is not over! You will simply return to the island at low health, but everything you had on you will be lost. Recover your strength, gear up from your stash, and head back out.

Warpcloak

For the first 60 seconds of every expedition, you will be under the effect of "warpcloak". This leaves you invisible and immune to fall damage, which should give you just enough time to run for cover in case you were dropped into extreme danger. Don't waste it - act fast!

Warp Sickness

Difficulty is selected in-game when a new game starts and affects ONLY how long you can stay out on each expedition. Every setting has a soft limit and a hard limit. When you hit the soft limit, you suffer Warp Sickness: your stats begin to slowly drain until you leave. When you hit the hard limit, you contract Warp Disintegration: you begin rapidly taking damage until you leave or die!

The Island

The eponymous sky island is your sanctuary and home base. You're given a large, magically isolated area you can customize however you want. Stash your items, grow crops, set up production, build a base. Anything you like. While here no threats should be able to reach you. As it is exposed to the sky, solar power works here. As it is very high up, expect cold, windy days.

The "Expeditions"

When you're ready to set out, gear up and examine the warp statue. This will send you to a random unexplored area of the map. Nearby, at random, you will also find a location marked in your mission journal: a return portal, your only exit. You must fight your way to the return portal before warp sickness overtakes you, and examine the statue in the mysterious Red Room you find marked on your map (it always spawns in a field). Do this and you complete that excursion -- you will be returned home safely with everything you were carrying. Take this time to organize, rest, and recover, before planning your next mission.

Missions

You will be given four marked missions in your log every time you begin an expedition. One will guide you to the exit portal. One will require you to kill a certain total amount of enemies before returning home. And finally you will get two randomly generated missions to visit a location, usually to clear a specific threat. Rewards, in the form of warp shards, are issued on completion of these missions. Harder missions yield more warp shards.

Warp Shards and Warped Items

These special resources can only be acquired by completing missions. Bring them safely home where they can be crafted into special items. These items provide unique powers and opportunities. Warp shards can't buy you weapons, armor, food, or most useful supplies.

To find these recipes just look under the "Warp" tab in your crafting menu.

Tips

  • Never forget your time limit! A watch or clock can save your life, but if you have nothing else, keep an eye on your warp pulses!
  • Remember that anything carried or worn is brought home. Since you can wield very bulky items, it might be worth grabbing the biggest thing you can find before coming home. A corpse to butcher, a heavy piece of furniture to build with, an entire engine block. You may not be able to stand up, but if you can hold it, it's coming with you!
  • You're expected to die. More than usual. Each expedition will see you dropped into potential danger, racing the clock to push through hostile and unfamiliar terrain, cut off from home base, impeded by unseen obstacles, and with only the gear on your back. Many factors combine to make this experience harder than normal CDDA, so you will probably die more often. Don't feel bad, just pick yourself up and try again!
  • Stockpile multiples! Many things you only needed one of before will need to be replaced if an expedition is lost. Stash extra guns, backpacks, shoes, clothes, watches, pocket knives, lighters, and anything else you may risk losing! Many tools and utensils can be kept safely at home, but for everything else, be mindful!
  • You can spend as long as you want in the safety of your home. Sooner or later you'll need to restock on something, but if you need to take a few days off, no one will bother you.
  • The Heart of the Island can heal you to full for free, but will only until you have completed 10 successful expeditions. After that, it costs warp shards to use. Use this grace period to get a decent stockpile of basic supplies going. Once you must way, heal yourself from small injuries while recuperating at base, and save the full heals for when you're really injured!
  • Life insurance! For a very high price, you can craft a Homeward Mote. Bring this on an expedition and if you die, you will instead be healed to full and warped home with all your items. However, this mote is only good for a single expedition. Even if you survive and extract successfully, the mote will be gone. It'll be used up either way, so there's no reason not to press your luck!
  • Leave in a hurry! Even if a horde is bearing down on you, or you're literally being eaten alive by dogs, touching the return portal will instantly bring you home. No need to make a last stand, sometimes even with hell on your heels it's best to just run for the exit!
  • Have fun! Please report any bugs or leave suggestions for balance changes.

A mod I wanted to play so bad I just made it myself -TGWeaver

Changelog

v0.3.0 MILESTONE 1 UPDATE! Almost too many changes to count. Massive overhaul to progression and balance. Tested on CDDA Experimental 60499ad .

  • Rebalanced expeditions! This is a huge one. Raids are now 3x shorter, so a normal raid has warp pulses every 15 minutes and a time limit of only 2 hours before warpsickness sets in. The upside is that exits and missions now spawn much, much closer to the start. This means it's now feasible to make quick, simple raids where you simply pop down, grab a few things, and pop back out. Surviving raids is much easier as a result, so the player should hopefully no longer feel pressured to cram every single pocket full to overflowing (though you're still welcome to do that!) lest they feel the expedition was a waste. Very reasonable now to have a successive series of short raids for specific goals, to pick missions based on difficulty rather than proximity, and most importantly, to spend most of your time fighting, looting, and exploring, NOT just traveling for miles!
  • Longer raids can be unlocked, however, up to and including the old version's normal raid length. So if you preferred those, they'll still be available too!
  • Secure Container Alpha! Unlock this and craft it and it will forever be a part of you. It's very small, but anything inside will not be left behind when you die! More containers are in the game but there are intentionally no recipes for it yet, pending broader testing and balancing.
  • Added Heart of the Island (HoI). Find this statue on your island and examine it for all kinds of new features, including:
  • Upgrades! The HoI can give you missions to retrieve various mundane items. Complete these and you can unlock all kinds of permanent upgrades for yourself and for the island. More missions and exits per expedition! A larger map reveal radius! Permanently increase the amount of warp pulses you can withstand! Unlock new places to begin your expedition! And more! Currently there are 34 different upgrades you can buy! Golly!
  • Upgrade balance: Please note this is the part of the mod that, by its nature, needs the most testing. Some upgrades will be way too expensive, others will be too cheap. Some very early upgrades (Landing 1, Scouting 1, Unlock Expedition Missions, Construct Bunker Entrance, to name a few) are supposede to be achievable within the first 1-3 raids. Others will take much longer, acting as long-term goals.
  • Constructions! Completing some of the HoI's missions will now instantly build on the island. These take the form of an underground bunker, which means the player is still free to build and decorate and farm the surface however they wish. Right now only the entrance and one room (in 4 successive sizes) are available to build.
  • Material tokens! A new currency, these are awarded every time you survive an expedition, even if you did no missions. Longer expeditions yield more tokens. They're spent on...
  • Infinity sources! This new system will let you get tons of raw resources right at home -- the same resources you previously had to use warp bags for. Simply craft the Infinity Tree, Infinity Stone, or Infinity Ore, deploy it, and you will be able to spend your material tokens here for resources! A much more direct and less tedious way of getting all the planks and nails you'll need to build a house, for instance. And because they use a new currency they don't compete with warp shards which you'll need to spend in many other places.
  • Most warp bags have been removed as a result of the balance change above.
  • The hauler's harness still exists, but its weight reduction is no longer 100%. Still great for bringing huge items with you through the portal, but no longer able to work as a fridge mega-backpack you carry for the entire raid.
  • Menu-driven options! Many neat features previously available through scattered items (salve of forgiveness, stat stone, portal warding stone, etc) are now integrated into the HoI's dialog menus. You can also use these to change your difficulty settings at any time.
  • Healing rebalance! You can now instantly heal at the HoI for free until you have survived 10 expeditions. After this, it will heal you to full for a price in warp shards. Also, surviving an expedition now heals you as much as dying would have (broken limbs are mended, for example) so you will never again wind up in a scenario where it's better to die to increase your health.
  • Expeditions are now targeted. By default you always start in a field, but you can unlock basements, rooftops, and even science labs.
  • Backwards compatibility! Saves made with version 0.2.2 SHOULD work, but this has not been extensively tested. Your save should automatically initialize the new values, and the map should even generate the newly required terrain.
  • A bunch more stuff I probably forgot!

v0.2.2 This version may not be compatible with old saves! But old saves don't work on the new versions anyway, so use your own judgement.

  • Updated mod to be compatible with newer CDDA versions (as of 2023-06-01-1256).
  • Missions to kill groups of enemies now require you to actually kill ALL the enemies. Previously they would complete after killing ANY of the enemies.
  • Random Artifacts are now crafted directly, instead of crafting an "artifact box" and then unpacking it.
  • You should now properly lose your radiation sickness when dying or using the Salve of Forgiveness.
  • Infinitrees are now considered furniture, not terrain, and can be dragged around your island.

v0.2.1 This version should be compatible with old saves.

  • Being hit by a warp pulse now tells you exactly how many more pulses you have left until negative effects begin.
  • Two extracts spawn per mission instead of one.
  • Added Portal Storm Warding Stone that will dispel portal storms, but only when used on your island.
  • In-game difficulty selection now offers Normal as first option. Saying no to every option loops the menu over again; you have to say yes to something to proceed.
    • Two extracts spawn per mission instead of one.
    • Normal difficulty is now 6 hours soft cap, 9 hours hard cap.
    • Added new hard difficulty with 4 hour soft cap, 6 hour hard cap (same as old Normal).
  • Stat Stone now tells you your difficulty settings.
  • Rewrote a lot of in-game text to be more consistent and less wordy.
  • Fixed warp disintegration hitting one pulse too early.
  • Fixed missions not cleaning up properly.

v0.2 This version should be compatible with old saves, but may require you to update C:DDA.

  • Added multiple difficulties, changed default timer from 24 hours to 4 hours.
  • Extracts can now spawn much further away.
  • Added many more mission types, monstergroups to fill them with, and more.
  • You now receive multiple missions per expedition.
  • Added warp shards as mission rewards, and items to craft them into
    • Added warped bags to bring bulk materials home.
    • Added warped carrier to bring animals home.
    • Added warped hauler to strap a single item into for bonus hauling.
    • Added "Infinitree" to harvest logs and sticks at home.
    • Made Quickheal pills craftable.
    • Added Homeward Mote for "life insurance" on specific expeditions.
    • Added Earthbound pill to extend your current raid's timer.
    • Added a way to get an Autodoc on your island.
    • Added a way to cash in warp shards in exchange for random artifacts.
  • Replaced starting Quickheal stockpile with Salve of Forgiveness, which heals you for free until you win 5 expeditions.
  • Added unlockable progress. Initially, only some mission types are available, and you will only deploy to fields. After 5 wins, more mission types will unlock, and you may start deploying to forests. After 10 wins, all mission types are unlocked and you may start deploying to houses.
  • Added a Stat Stone that can tell you how many expeditions you've gone on, as well as total wins and losses.
  • Cleaned up your island! All the misc. trash will now spawn pre-gathered on a single tile so you don't have to go sweeping every time you start a new game.
  • Warp disintegration is more lethal.
  • Many text prompts are more clear.
  • Added a way to regrow grass at your home island, just for looks.
  • Numerous bug and balance fixes.

cdda-sky-islands's People

Contributors

adamkad1 avatar lettucegoblin avatar standing-storm avatar tgweaver avatar waveyl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cdda-sky-islands's Issues

Suggestion: Warped Battery Pack / Warped Electrician's Pack

A semi-persistent issue I have encountered in the new version is the fact that I have trouble getting storage batteries (of any size) to my island. Since we already have the lumberjack/scrapper/excavator bags, I propose something along the same lines for batteries and/or electronics, to make using the appliance systems a bit mlre viable by allowing easier transport of batteries and possibly power generation such as solar panels.

Warped bag issue

one_per_layer seems like a decent balancing factor, because wearing all the bags at once is kinda unbalanced, but it causes an issue with other auras, which sucks. Maybe theres a different balancing possibility? (ill post it here if I find something)

Crash during the first teleport

The game crashes during the first teleport (world-scanning process) for seemingly no reason,not even an error window appears or something

https://github.com/CleverRaven/Cataclysm-DDA/files/12130527/Cedar.Hill.Lakes-trimmed.tar.gz

^ Thats the save file

  • OS: Android
    • OS Version: Manufacturer: ZTE; Model: ZTE Blade A5 2019; Release: 9; Incremental: 20191012.104430;
  • Game Version: 6dc51c7 [32-bit]
  • Graphics Version: Tiles
  • Game Language: English [en]
  • Mods loaded: [
    Dark Days Ahead [dda],
    Disable NPC Needs [no_npc_food],
    Portal Storms Ignore NPCs [personal_portal_storms],
    Slowdown Fungal Growth [no_fungal_growth],
    No Rail Stations [No_Rail_Stations],
    Sky Island [skyisland]

^ Thats my settings and mods

https://github.com/CleverRaven/Cataclysm-DDA/files/12130545/debug.log

^ Thats the debug log (im not sure if there's anything useful in there,but oh well)

And finally,steps to reproduce the crash:

  1. Load the save file above
  2. activate the teleportation obelisk
  3. wait for the game to scan the world
  4. the game crashes for no reason during the scanning process

Edit: I've got the answer from the cdda community, apparently the error cannot resolved (for now) AND i have not enough RAM to successfully finish the first scanning process.

Can't set difficulty to "Normal" using the Difficulty Adjuster on my island, only "Casual", "Hard", and "Impossible"

The issue is exactly what it sounds like. Whenever I try to select "Normal" (or press 2) when using the difficulty adjuster, I get the message saying my difficulty has been set to "casual". Setting the difficulty to "Hard" and "Impossible" seem to both work fine, though (at least, I get the messages saying I've set my difficulty to those settings).

EDIT: I'm currently playing on 2023-08-04-0047

No longer working as of experimental build 2024-01-14-0524

Using the latest 0.3.0 version of this, works fine up until I updated to an experimental version after the 2024-01-14-0524 build. No issues on the prior 0414 build. Unable to load world anymore. The error below:

DEBUG    : Error: Json error: data/mods/CDDA-Sky-Islands-main/EOCs.json:286:9: <color_white><color_cyan>invalid sub effect syntax: { "only_increase": true, "u_set_hp": 999 }</color>

      {
        "u_message": "Your body mends itself in the blink of an eye.  Underlying health issues may persist, but your structural integrity is restored."
<color_light_red>      },
</color>
       <color_cyan>▲▲▲</color>
      { "u_set_hp": 999, "only_increase": true },
      { "run_eocs": [ "EOC_healextras" ] }
</color>


 FUNCTION : load_game
 FILE     : D:\a\Cataclysm-DDA\Cataclysm-DDA\src\main_menu.cpp
 LINE     : 1038
 VERSION  : b89e0cd

The version/update in question:
https://github.com/CleverRaven/Cataclysm-DDA/releases/tag/cdda-experimental-2024-01-14-0524

Chance to spawn in "paintball field"

Since "field" is a part of "paintball field", any json with

"om_terrain": "field",
"om_terrain_match_type": "CONTAINS",

offers a very slight chance to spawn in a paintball field. It was funny and didn't cripple my run when it happened, but I assume the intention is to spawn in field "fields".

My knowledge of this part of the json is a bit weak so I'm not sure how to fix it. The chance seems very low, anyway.

I died and was not resurrected

I'm sorry I can't add more details, i hadnt died in the mod yet, but when i was killed by zombie cows, I lost everything. my character didnt respawn on the island, it went straight to permadeath. I cant recover my save because the game deleted it. I'm using experimental build 12-06-1516.

Stuck in a death loop due to being unable to pick up the Salve of Forgiveness.

I got mauled by spiders, respawned on the island with all my limbs broken but I couldn't use the healing item because both of my arms were too damaged. I debug healed my arms and then I could pick it up to heal.

Though after using it I remained blind.

Using :

  • cdda-windows-tiles-sounds-x64-2023-01-27-0622
  • This mod version as of Jan 25.

Death does not remove radiation

Dying doesn't reset radiation, which risks a death loop if you die of radiation poisoning.

image
Shortly after dying (to a turret) in a missile silo, still have 173mSv of radiation

Json Error on starting a new custom character

DEBUG : Error: Json error: data/mods/CDDA-Sky-Islands-main/EOCs.json:6:17: unrecognized condition in { "math": [ "has_set_difficulty", "==", "0" ] }

": "EOC_difficultysafeguard",
"//": "This EOC gets called after a teleport is initialized but before it is finished. It basically just checks if you're running an older save or somehow missed the difficulty assignment.",
"condition":
^
{ "math": [ "has_set_difficulty", "==", "0" ] },
"effect": [
{

FUNCTION : bool main_menu::new_character_tab()
FILE : src/main_menu.cpp
LINE : 986
VERSION : d6ec466

Playing on cdda-windows-tiles-sounds-x64-2023-03-01-0054 stable

Rivers get in the way

Pretty simple issue, probably not so simple solution:

On my last character's first expedition there was a river between myself and the extraction point. There was no way for me to know where the nearest bridge was. I gave up on that character right then and there.

If it is at all possible to ensure that a walkable path exists that won't take longer than the time limit to walk on between myself and the extraction point, that would be great. This is probably not possible, or if it is, not feasible.

A band aid solution might be to lower the occurrence of rivers in the overworld.

Used exit statues remain usable

Hello, me again :)

Basically what it says on the title. When an Exit statue is used, it may still be used later on a different raid. I don't think this is intentional behavior?

Perhaps the reaction should then deactivate/destroy the statue so it can't be abused.

Extract obelisk not spawning

I started a raid yesterday.
This morning I updated to the most recent experimental (my installed version was about a week old).
Then I loaded up the game, reached the extraction point, and there is no building and no obelisk.

Is there a way to manually trigger the teleportation home? Or to manually spawn the obelisk?

Suggestion: Make Mission Markers stay

Is there any way at all to make the mission markers stay, once you're close enough to fulfill the mission? Because especially during night time it happened to me that I "found" the exit point or warpshards, but I didn't put a note there to remember where it was, which came back to bite me later. I know I can check successful missions but is there something more elegant available?

If this is not a reasonable request feel free to remove this issue.

Latest experimental doesn't work

It seems that the latest experimental version "cdda-windows-tiles-sounds-x64-2024-01-31-2134" and a few builds before this one doesn't work with this build of Sky Island. Save or the New Game doesn't load. Please take a look at the error description below. Does anyone have the same problem? Thanks!

DEBUG : Error: Json error: data/mods/Sky_Island/missions_and_mapgen.json:457:36: <color_white><color_cyan>invalid sub effect syntax: { "adjustment": 1, "u_adjust_var": "missionswon" }

},
"end": { "effect": [ 

<color_light_red> { "run_eocs": "EOC_bonuspulse" }, { "u_adjust_var": "missionswon", "adjustment": 1 }

<color_cyan>▲▲▲
] }
},

FUNCTION : bool main_menu::load_game(const std::string&, const save_t&)
FILE : src/main_menu.cpp
LINE : 1038
VERSION : 283dd2a

Kill Missions finish prematurely

Just writing this here for awareness:
Missions are supposed to complete once you kill all targeted enemies. Currently, however, they may complete early as the game's internal logic uses "any" instead of "all".

Currently a known bug with no way to fix inside the mod, however there is already a PR on C:DDA itself to fix. Once C:DDA updates this issue will be resolved. Until then... you're on the honor system I guess!

[Bug] Quickheal doesn't work, activates raid prompt

Using Quickheal doesn't heal me. Instead, it triggers the "Are you REALLY sure?" prompt you get when setting out on a raid, twice in a row. If I select "Yes", I'm warped to the last place I got warped to by the statue.

Quickheal also can't be (a)ctivated like mot drugs, dunno if that's relevant to this problem.

e: may be relevant that I took it for the first time following my first death

CTD on Death

Had a couple of CTD when the character dies. Here's the crash log of the latest.

CRASH LOG FILE: /home/j/.cataclysm-dda/config/crash.log
VERSION: 0.F-12930-g9530b874514-dirty
TYPE: Signal
MESSAGE: SIGSEGV: Segmentation fault
STACK TRACE:

    ./cataclysm-tiles(debug_write_backtrace(std::ostream&)+0x23) [0x31fb073]
    ./cataclysm-tiles() [0x31c9ea1]
    ./cataclysm-tiles() [0x31c9c73]
    /lib/x86_64-linux-gnu/libc.so.6(+0x38d60) [0x7f1cc2d23d60]
    /lib/x86_64-linux-gnu/libc.so.6(+0x95177) [0x7f1cc2d80177]
    /lib/x86_64-linux-gnu/libstdc++.so.6(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::find(char const*, unsigned long, unsi
gned long) const+0x61) [0x7f1cc3155241]
    ./cataclysm-tiles(get_tag_positions(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0x28) [0x3dd2bf8]
    ./cataclysm-tiles(split_by_color(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0x2b) [0x3dd2d1b]
    ./cataclysm-tiles(print_colored_text(catacurses::window const&, point const&, nc_color&, nc_color const&, std::__cxx11::basic_string<char, std::char_traits
<char>, std::allocator<char> > const&, report_color_error)+0x48) [0x3dd3088]
    ./cataclysm-tiles() [0x31b1cc2]
    ./cataclysm-tiles() [0x31b0ce7]
    ./cataclysm-tiles() [0x31b0cb7]
    ./cataclysm-tiles() [0x31b0bf2]
    ./cataclysm-tiles(std::function<void (ui_adaptor&)>::operator()(ui_adaptor&) const+0x29) [0x421b119]
    ./cataclysm-tiles(ui_adaptor::redraw_invalidated()+0x493) [0x421a2c3]
    ./cataclysm-tiles(ui_adaptor::redraw()+0x2a) [0x4219e2a]
    ./cataclysm-tiles(ui_manager::redraw()+0x6) [0x421a596]
    ./cataclysm-tiles(select_crafting_recipe(int&, string_id<recipe>)+0x12ac) [0x31a59ec]
    ./cataclysm-tiles(Character::craft(cata::optional<tripoint> const&, string_id<recipe> const&)+0x31) [0x3187c91]
    ./cataclysm-tiles(game::do_regular_action(action_id&, avatar&, cata::optional<tripoint> const&)+0x32a0) [0x34d8990]

    Attempting to repeat stack trace using debug symbols…
    debug_write_backtrace(std::ostream&)
    …/src/debug.cpp:1220
    log_crash(char const*, char const*)
    crash.cpp:?
    signal_handler(int)
    …/src/crash.cpp:137
    ??
    ??:0
    ??
    ??:0
    ??
    ??:0
    get_tag_positions(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
    …/src/output.cpp:?
    split_by_color(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
    ??:?
    print_colored_text(catacurses::window const&, point const&, nc_color&, nc_color const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, report_color_error)
    ??:?
    operator()
    …/src/crafting_gui.cpp:1351
    void std::__invoke_impl<void, select_crafting_recipe(int&, string_id<recipe>)::$_41&, ui_adaptor&>(std::__invoke_other, select_crafting_recipe(int&, string_id<recipe>)::$_41&, ui_adaptor&)
    /usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/invoke.h:60
    _ZSt10__invoke_rIvRZ22select_crafting_recipeRi9string_idI6recipeEE4$_41JR10ui_adaptorEENSt9enable_ifIXsr6__and_ISt7is_voidIT_ESt14__is_invocableIT0_JDpT1_EEEE5valueESA_E4typeEOSD_DpOSE_
    /usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/invoke.h:155
    std::_Function_handler<void (ui_adaptor&), select_crafting_recipe(int&, string_id<recipe>)::$_41>::_M_invoke(std::_Any_data const&, ui_adaptor&)
    /usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/std_function.h:291
    std::function<void (ui_adaptor&)>::operator()(ui_adaptor&) const
    /usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/std_function.h:622
    ui_adaptor::redraw_invalidated()
    …/src/ui_manager.cpp:412
    ui_adaptor::redraw()
    …/src/ui_manager.cpp:322
    ui_manager::redraw()
    …/src/ui_manager.cpp:466
    select_crafting_recipe(int&, string_id<recipe>)
    …/src/crafting_gui.cpp:1552
    Character::craft(cata::optional<tripoint> const&, string_id<recipe> const&)
    …/src/crafting.cpp:342
    game::do_regular_action(action_id&, avatar&, cata::optional<tripoint> const&)
    ??:?

Police bot spawning on the Sky Island

No clue what caused it.
Stunlocked me inside the tent (I was sleeping) with the tranquil gas. Could not walk out as it was physically blocking the entrance, and I kept dying from asphyxiation. Had to debug-delete the bot.

What are the prerequisites for a police bot to spawn?

Feedback on the Milestone 1 update

I've been playing the new update on a new save and loving it so far! I must say, shorter missions are a welcome change of pace and I really enjoy them!

My biggest gripe so far is that most of the early upgrades are too easy. I know it is a test build, but I would suggest adding more thought to the upgrade components/requirements for future builds. For example, the initial bunker could also require a digging tool of some sort, pipes or wood for the ladder, concrete/stone for walls, etc.

Also, a small thing I noticed, only freshly killed corpses are counting for one of the upgrades (not sure if intended), meaning you cannot simply bring a dead human body you found on a side of the road. It should be a fresh kill.

Thanks for an amazing update! I will share more feedback us I play.

Warp Reinforcement for lvl 3 main room not expanding/doing anything

attempting to craft Warp Reinforcement to gain the lvl 3 main room succeeds the craft, but the underground area doesn't actually expand.
ive tried finishing it above ground and also below ground, but nothing happens either way. (the other two room upgrades, #1 and #2 when finished WOULD expand but threw an error about "player -1 was assigned, but current player is 1", not sure if thats relevant, but no errors come up for lvl 3)

also it turns the in-progress craft into a 900 lbs, 400L volume item that knocks you to the ground and crafts slowly due to size. im assuming because of the 4 heavy wooden beams needed? but thats just an aside
save.zip

update 1: i have a still, fridge, kitchen station from a vehicle, and all 3 infinity tree/ore/stone sources installed down there. i removed them all, crafted the lvl 3 again, and it expanded successfully. i will try removing them one by one to see which one(s) are the culprit

update 2: individual installations didnt make a difference, it would always fail (the craft always completes, but nothing actually happened to the size underground) if anything at all was installed. removing all installations successfully expanded lvl 3 each time

Milestone 1 throws errors in latest experimental

Attempting to load a sky islands game on the current experimental version (2024-01-26-1600) after replacing the Sky Island mod files with the latest from the repo gives the following error:

DEBUG : Error: Json error: data/mods/Sky_Island/EOCs.json:421:87: <color_white><color_cyan>unrecognized number source in { "time": "15 m" }

    "u_message": "All difficulty settings set to default.  You can speak to the Heart of the Island to change these at any time."

},
<color_light_red> { "arithmetic": [ { "global_val": "var", "var_name": "sicknessintervals" }, "=", { "time": "15 m" } ] },

<color_cyan>▲▲▲
{ "math": [ "roomteleportselector", "=", "1" ] },
{ "math": [ "u_spell_level('warp_home')", "=", "-1" ] },

FUNCTION : load_game
FILE : D:\a\Cataclysm-DDA\Cataclysm-DDA\src\main_menu.cpp
LINE : 1038
VERSION : 0f39e72

Attempting to start a new game gives many errors of the form

DEBUG : (json-error)
Json error: data/json/artifact/artifact_item_types.json:223:17: <color_white><color_cyan>Invalid or misplaced field name "copy-from" in JSON data

"id": "art_robe",
"type": "ARMOR",

<color_light_red> "copy-from": "robe",

<color_cyan>▲▲▲
"name": { "str": "royal robe" },
"description": "An ornately decorated robe with an unfamiliar royal symbol on it. The humanoid figure on the seal has two pairs of eyes. It is the only one of its kind.\nIt may have unknown powers; try activating them."

FUNCTION : error_skipped_members
FILE : D:\a\Cataclysm-DDA\Cataclysm-DDA\src\flexbuffer_json.cpp
LINE : 347
VERSION : 0f39e72

CTD teleporting to earth

I noticed this in the previous version but found a work around. Problem persists in this version. The crash occurs after teleporting to earth. This crash does not occur in the early part of the game. As play progresses and multiple expeditions are done the crash starts to happen. It appears the crash happens when trying to generate missions. As play continues and more expeditions are done the crash becomes more and more common.

The work around I found was to save and quit the game right before initiating an expedition. Then reload the client. Usually, the game would not crash. As time progresses this work around is less and less effective. In my current, late game save, I suffer 1-3 crashes every time I try to teleport to earth before I can finally get one that doesn't crash. Even when I use my work around.

Crash log:
`The program has crashed.
See the log file for a stack trace.
CRASH LOG FILE: ./config/crash.log
VERSION: d6d5349
TYPE: Signal
MESSAGE: SIGSEGV: Segmentation fault
STACK TRACE:

#0
(dbghelp: @0x7ff7c23d42f0[cataclysm-tiles.exe+0x2342f0]),
(libbacktrace: debug_write_backtrace(std::ostream&)+0x9e@0x1402342f0),
0x1402342f0 src/debug.cpp:1119 debug_write_backtrace(std::ostream&)
#1
(dbghelp: @0x7ff7c23bcce1[cataclysm-tiles.exe+0x21cce1]),
(libbacktrace: log_crash+0x1d2@0x14021cce1),
0x14021cce1 /opt/mxe/usr/lib/gcc/x86_64-w64-mingw32.static.gcc11/11.2.0/include/c++/sstream:917 std::_cxx11::basic_ostringstream<char, std::char_traits, std::allocator >::str() const
0x14021cce1 src/crash.cpp:85 log_crash
#2
(dbghelp: @0x7ff7c23bcf0f[cataclysm-tiles.exe+0x21cf0f]),
(libbacktrace: signal_handler+0x52@0x14021cf0f),
0x14021cf0f src/crash.cpp:137 signal_handler
#3
(dbghelp: @0x7ff7c2d036a2[cataclysm-tiles.exe+0xb636a2]),
(libbacktrace: gnu_exception_handler+0x182@0x140b636a2),
0x140b636a2 /opt/mxe/tmp-gcc-x86_64-w64-mingw32.static.gcc11/gcc-11.2.0.build
/mingw-w64-v9.0.0/mingw-w64-crt/crt/crt_handler.c:224 _gnu_exception_handler
#4
(dbghelp: _C_specific_handler+0x98@0x7ffe8f997ff8[msvcrt.dll+0x27ff8]),
(backtrace_syminfo failed: errno = -1, msg = no symbol table in PE/COFF executable),
(backtrace_pcinfo failed: errno = -1, msg = no debug info in PE/COFF executable),
#5
(dbghelp: _chkstk+0x11f@0x7ffe8faf241f[ntdll.dll+0xa241f]),
(backtrace_syminfo failed: errno = -1, msg = no symbol table in PE/COFF executable),
(backtrace_pcinfo failed: errno = -1, msg = no debug info in PE/COFF executable),
#6
(dbghelp: RtlRaiseException+0x434@0x7ffe8faa14a4[ntdll.dll+0x514a4]),
(backtrace_syminfo failed: errno = -1, msg = no symbol table in PE/COFF executable),
(backtrace_pcinfo failed: errno = -1, msg = no debug info in PE/COFF executable),
#7
(dbghelp: KiUserExceptionDispatcher+0x2e@0x7ffe8faf0f4e[ntdll.dll+0xa0f4e]),
(backtrace_syminfo failed: errno = -1, msg = no symbol table in PE/COFF executable),
(backtrace_pcinfo failed: errno = -1, msg = no debug info in PE/COFF executable),
#8
(dbghelp: @0x7ff7c3310deb[cataclysm-tiles.exe+0x1170deb]),
(libbacktrace: four_quadrants::max() const+0xb@0x141170deb),
0x141170deb /opt/mxe/usr/lib/gcc/x86_64-w64-mingw32.static.gcc11/11.2.0/include/c++/bits/predefined_ops.h:45 bool __gnu_cxx::__ops::_Iter_less_iter::operator()<float const*, float const*>(float const*, float const*) const
0x141170deb /opt/mxe/usr/lib/gcc/x86_64-w64-mingw32.static.gcc11/11.2.0/include/c++/bits/stl_algo.h:5688 float const* std::__max_element<float const*, __gnu_cxx::__ops::_Iter_less_iter>(float const*, float const*, __gnu_cxx::__ops::_Iter_less_iter)
0x141170deb /opt/mxe/usr/lib/gcc/x86_64-w64-mingw32.static.gcc11/11.2.0/include/c++/bits/stl_algo.h:5682 float const* std::__max_element<float const*, __gnu_cxx::__ops::_Iter_less_iter>(float const*, float const*, __gnu_cxx::__ops::_Iter_less_iter)
0x141170deb /opt/mxe/usr/lib/gcc/x86_64-w64-mingw32.static.gcc11/11.2.0/include/c++/bits/stl_algo.h:5712 float const* std::max_element<float const*>(float const*, float const*)
0x141170deb src/shadowcasting.h:57 four_quadrants::max() const
#9
(dbghelp: @0x7ff7c26e4456[cataclysm-tiles.exe+0x544456]),
(libbacktrace: map::pl_sees(tripoint const&, int) const+0xda@0x140544456),
0x140544456 src/lightmap.cpp:789 map::pl_sees(tripoint const&, int) const
#10
(dbghelp: @0x7ff7c22ff119[cataclysm-tiles.exe+0x15f119]),
(libbacktrace: Character::sees(tripoint const&, bool, int) const+0x5b@0x14015f119),
0x14015f119 src/character.cpp:10012 Character::sees(tripoint const&, bool, int) const
#11
(dbghelp: @0x7ff7c2717ebc[cataclysm-tiles.exe+0x577ebc]),
(libbacktrace: ter_furn_transform::transform(map&, coords::coord_point<tripoint, (coords::origin)5, (coords::scale)0> const&) const+0x61e@0x140577ebc),
0x140577ebc src/magic_ter_fur_transform.cpp:282 ter_furn_transform::transform(map&, coords::coord_point<tripoint, (coords::origin)5, (coords::scale)0> const&) const
#12
(dbghelp: @0x7ff7c333621b[cataclysm-tiles.exe+0x119621b]),
(libbacktrace: jmapgen_ter_furn_transform::apply(mapgendata const&, jmapgen_int const&, jmapgen_int const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&) const+0x8b@0x14119621b),
0x14119621b src/mapgen.cpp:2823 jmapgen_ter_furn_transform::apply(mapgendata const&, jmapgen_int const&, jmapgen_int const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&) const
#13
(dbghelp: @0x7ff7c2787329[cataclysm-tiles.exe+0x5e7329]),
(libbacktrace: jmapgen_objects::apply(mapgendata const&, mapgen_phase, point const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&) const+0x157@0x1405e7329),
0x1405e7329 src/mapgen.cpp:4886 jmapgen_objects::apply(mapgendata const&, mapgen_phase, point const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&) const
#14
(dbghelp: @0x7ff7c278bb34[cataclysm-tiles.exe+0x5ebb34]),
(libbacktrace: apply_mapgen_in_phases(mapgendata const&, std::vector<jmapgen_setmap, std::allocator<jmapgen_setmap> > const&, jmapgen_objects const&, point const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, bool)+0x138@0x1405ebb34),
0x1405ebb34 src/mapgen.cpp:4757 apply_mapgen_in_phases
#15
(dbghelp: @0x7ff7c27a17fd[cataclysm-tiles.exe+0x6017fd]),
(libbacktrace: mapgen_function_json_nested::nest(mapgendata const&, point const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&) const+0xab@0x1406017fd),
0x1406017fd /opt/mxe/usr/lib/gcc/x86_64-w64-mingw32.static.gcc11/11.2.0/include/c++/bits/basic_string.h:671 std::__cxx11::basic_string<char, std::char_traits, std::allocator >::~basic_string()
0x1406017fd src/mapgen.cpp:4847 mapgen_function_json_nested::nest(mapgendata const&, point const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&) const
#16
(dbghelp: @0x7ff7c33116c6[cataclysm-tiles.exe+0x11716c6]),
(libbacktrace: jmapgen_nested::apply(mapgendata const&, jmapgen_int const&, jmapgen_int const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&) const+0x126@0x1411716c6),
0x1411716c6 src/mapgen.cpp:3433 jmapgen_nested::apply(mapgendata const&, jmapgen_int const&, jmapgen_int const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&) const
#17
(dbghelp: @0x7ff7c2787329[cataclysm-tiles.exe+0x5e7329]),
(libbacktrace: jmapgen_objects::apply(mapgendata const&, mapgen_phase, point const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&) const+0x157@0x1405e7329),
0x1405e7329 src/mapgen.cpp:4886 jmapgen_objects::apply(mapgendata const&, mapgen_phase, point const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&) const
#18
(dbghelp: @0x7ff7c278bb34[cataclysm-tiles.exe+0x5ebb34]),
(libbacktrace: apply_mapgen_in_phases(mapgendata const&, std::vector<jmapgen_setmap, std::allocator<jmapgen_setmap> > const&, jmapgen_objects const&, point const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, bool)+0x138@0x1405ebb34),
0x1405ebb34 src/mapgen.cpp:4757 apply_mapgen_in_phases
#19
(dbghelp: @0x7ff7c27a16af[cataclysm-tiles.exe+0x6016af]),
(libbacktrace: mapgen_function_json::generate(mapgendata&)+0x18b@0x1406016af),
0x1406016af src/mapgen.cpp:4818 mapgen_function_json::generate(mapgendata&)
#20
(dbghelp: @0x7ff7c3311b32[cataclysm-tiles.exe+0x1171b32]),
(libbacktrace: mapgen_factory::generate(mapgendata&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, int) const+0xc2@0x141171b32),
0x141171b32 src/mapgen.cpp:350 mapgen_basic_container::generate(mapgendata&, int) const
0x141171b32 src/mapgen.cpp:476 mapgen_factory::generate(mapgendata&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, int) const
#21
(dbghelp: @0x7ff7c27aed78[cataclysm-tiles.exe+0x60ed78]),
(libbacktrace: map::draw_map(mapgendata&)+0x3a@0x14060ed78),
0x14060ed78 src/mapgen.cpp:4913 map::draw_map(mapgendata&)
#22
(dbghelp: @0x7ff7c27af2af[cataclysm-tiles.exe+0x60f2af]),
(libbacktrace: map::generate(tripoint const&, time_point const&)+0x373@0x14060f2af),
0x14060f2af src/int_id.h:109 int_id<oter_t>::operator->() const
0x14060f2af src/mapgen.cpp:226 map::generate(tripoint const&, time_point const&)
#23
(dbghelp: @0x7ff7c274903e[cataclysm-tiles.exe+0x5a903e]),
(libbacktrace: map::loadn(tripoint const&, bool, bool)+0x3b6@0x1405a903e),
0x1405a903e src/map.cpp:7667 map::loadn(tripoint const&, bool, bool)
#24
(dbghelp: @0x7ff7c2749bd8[cataclysm-tiles.exe+0x5a9bd8]),
(libbacktrace: map::loadn(point const&, bool, bool)+0x4e@0x1405a9bd8),
0x1405a9bd8 src/map.cpp:7738 map::loadn(point const&, bool, bool)
0x1405a9bd8 src/map.cpp:7735 map::loadn(point const&, bool, bool)
#25
(dbghelp: @0x7ff7c2749d75[cataclysm-tiles.exe+0x5a9d75]),
(libbacktrace: map::load(coords::coord_point<tripoint, (coords::origin)1, (coords::scale)1> const&, bool, bool)+0x149@0x1405a9d75),
0x1405a9d75 src/map.cpp:7319 map::load(coords::coord_point<tripoint, (coords::origin)1, (coords::scale)1> const&, bool, bool)
#26
(dbghelp: @0x7ff7c24f01ac[cataclysm-tiles.exe+0x3501ac]),
(libbacktrace: game::place_player_overmap(coords::coord_point<tripoint, (coords::origin)1, (coords::scale)2> const&, bool)+0x1ec@0x1403501ac),
0x1403501ac src/game.cpp:10466 game::place_player_overmap(coords::coord_point<tripoint, (coords::origin)1, (coords::scale)2> const&, bool)
#27
(dbghelp: @0x7ff7c2b3fa55[cataclysm-tiles.exe+0x99fa55]),
(libbacktrace: teleport::teleport_to_point(Creature&, tripoint, bool, bool, bool, bool)+0x247@0x14099fa55),
0x14099fa55 src/teleport.cpp:78 teleport::teleport_to_point(Creature&, tripoint, bool, bool, bool, bool)
#28
(dbghelp: @0x7ff7c35e276f[cataclysm-tiles.exe+0x144276f]),
(libbacktrace: talk_effect_fun_t::set_teleport(JsonObject const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, bool)::{lambda(dialogue const&)#1}::operator()(dialogue const&) const+0xbf@0x14144276f),
0x14144276f src/npctalk.cpp:3962 talk_effect_fun_t::set_teleport(JsonObject const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, bool)::{lambda(dialogue const&)#1}::operator()(dialogue const&) const
#29
(dbghelp: @0x7ff7c330f701[cataclysm-tiles.exe+0x116f701]),
(libbacktrace: talk_effect_t::apply(dialogue const&) const+0x211@0x14116f701),
0x14116f701 /opt/mxe/usr/lib/gcc/x86_64-w64-mingw32.static.gcc11/11.2.0/include/c++/bits/stl_iterator.h:1038 __gnu_cxx::__normal_iterator<talk_effect_fun_t const*, std::vector<talk_effect_fun_t, std::allocator<talk_effect_fun_t > > >::operator++()
0x14116f701 src/npctalk.cpp:4037 talk_effect_t::apply(dialogue const&) const
#30
(dbghelp: @0x7ff7c244dbcc[cataclysm-tiles.exe+0x2adbcc]),
(libbacktrace: effect_on_condition::activate(dialogue&) const+0x38@0x1402adbcc),
0x1402adbcc src/effect_on_condition.cpp:278 effect_on_condition::activate(dialogue&) const
#31
(dbghelp: @0x7ff7c349e7fb[cataclysm-tiles.exe+0x12fe7fb]),
(libbacktrace: std::_Function_handler<void (dialogue const&), talk_effect_fun_t::set_run_eocs(JsonObject const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&)::{lambda(dialogue const&)#1}>::_M_invoke(std::_Any_data const&, dialogue const&)+0x3b@0x1412fe7fb),
0x1412fe7fb src/npctalk.cpp:3492 talk_effect_fun_t::set_run_eocs(JsonObject const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&)::{lambda(dialogue const&)#1}::operator()(dialogue const&) const
0x1412fe7fb /opt/mxe/usr/lib/gcc/x86_64-w64-mingw32.static.gcc11/11.2.0/include/c++/bits/invoke.h:61 void std::__invoke_impl<void, talk_effect_fun_t::set_run_eocs(JsonObject const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&)::{lambda(dialogue const&)#1}&, dialogue const&>(std::__invoke_other, talk_effect_fun_t::set_run_eocs(JsonObject const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&)::{lambda(dialogue const&)#1}&, dialogue const&)
0x1412fe7fb /opt/mxe/usr/lib/gcc/x86_64-w64-mingw32.static.gcc11/11.2.0/include/c++/bits/invoke.h:154 std::enable_if<std::_and<std::is_void, std::__is_invocable<talk_effect_fun_t::set_run_eocs(JsonObject const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&)::{lambda(dialogue const&)#1}&, dialogue const&> >::value, void>::type std::__invoke_r<void, talk_effect_fun_t::set_run_eocs(JsonObject const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&)::{lambda(dialogue const&)#1}&, dialogue const&>(talk_effect_fun_t::set_run_eocs(JsonObject const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&)::{lambda(dialogue const&)#1}&, dialogue const&)
0x1412fe7fb /opt/mxe/usr/lib/gcc/x86_64-w64-mingw32.static.gcc11/11.2.0/include/c++/bits/std_function.h:291 std::_Function_handler<void (dialogue const&), talk_effect_fun_t::set_run_eocs(JsonObject const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&)::{lambda(dialogue const&)#1}>::_M_invoke(std::_Any_data const&, dialogue const&)
#32
(dbghelp: @0x7ff7c330f701[cataclysm-tiles.exe+0x116f701]),
(libbacktrace: talk_effect_t::apply(dialogue const&) const+0x211@0x14116f701),
0x14116f701 /opt/mxe/usr/lib/gcc/x86_64-w64-mingw32.static.gcc11/11.2.0/include/c++/bits/stl_iterator.h:1038 __gnu_cxx::__normal_iterator<talk_effect_fun_t const*, std::vector<talk_effect_fun_t, std::allocator<talk_effect_fun_t > > >::operator++()
0x14116f701 src/npctalk.cpp:4037 talk_effect_t::apply(dialogue const&) const
#33
(dbghelp: @0x7ff7c244dbcc[cataclysm-tiles.exe+0x2adbcc]),
(libbacktrace: effect_on_condition::activate(dialogue&) const+0x38@0x1402adbcc),
0x1402adbcc src/effect_on_condition.cpp:278 effect_on_condition::activate(dialogue&) const
#34
(dbghelp: @0x7ff7c257a11b[cataclysm-tiles.exe+0x3da11b]),
(libbacktrace: eoc_examine_actor::call(Character&, tripoint const&) const+0x6f@0x1403da11b),
0x1403da11b src/iexamine_actors.cpp:253 eoc_examine_actor::call(Character&, tripoint const&) const
#35
(dbghelp: @0x7ff7c2500538[cataclysm-tiles.exe+0x360538]),
(libbacktrace: game::examine(tripoint const&, bool)+0x682@0x140360538),
0x140360538 src/game.cpp:5648 game::examine(tripoint const&, bool)
#36
(dbghelp: @0x7ff7c2500c70[cataclysm-tiles.exe+0x360c70]),
(libbacktrace: game::examine(bool)+0x2f4@0x140360c70),
0x140360c70 src/game.cpp:5498 game::examine(bool)
#37
(dbghelp: @0x7ff7c25321e6[cataclysm-tiles.exe+0x3921e6]),
(libbacktrace: game::do_regular_action(action_id&, avatar&, cata::optional const&)+0x10d8@0x1403921e6),
0x1403921e6 src/handle_action.cpp:2091 game::do_regular_action(action_id&, avatar&, cata::optional const&)
#38
(dbghelp: @0x7ff7c2537280[cataclysm-tiles.exe+0x397280]),
(libbacktrace: game::handle_action()+0xb52@0x140397280),
0x140397280 src/handle_action.cpp:2969 game::handle_action()
#39
(dbghelp: @0x7ff7c2422fbe[cataclysm-tiles.exe+0x282fbe]),
(libbacktrace: do_turn()+0x631@0x140282fbe),
0x140282fbe src/do_turn.cpp:726 do_turn()
#40
(dbghelp: @0x7ff7c37a9706[cataclysm-tiles.exe+0x1609706]),
(libbacktrace: main+0x1e80@0x141609706),
0x141609706 src/main.cpp:816 main
#41
(dbghelp: @0x7ff7c21a13c1[cataclysm-tiles.exe+0x13c1]),
(libbacktrace: tmainCRTStartup+0x231@0x1400013c1),
0x1400013c1 /opt/mxe/tmp-gcc-x86_64-w64-mingw32.static.gcc11/gcc-11.2.0.build
/mingw-w64-v9.0.0/mingw-w64-crt/crt/crtexe.c:323 _tmainCRTStartup
#42
(dbghelp: @0x7ff7c21a14d6[cataclysm-tiles.exe+0x14d6]),
(libbacktrace: WinMainCRTStartup+0x16@0x1400014d6),
0x1400014d6 /opt/mxe/tmp-gcc-x86_64-w64-mingw32.static.gcc11/gcc-11.2.0.build
/mingw-w64-v9.0.0/mingw-w64-crt/crt/crtexe.c:178 WinMainCRTStartup
#43
(dbghelp: BaseThreadInitThunk+0x14@0x7ffe8dcc7614[KERNEL32.DLL+0x17614]),
(backtrace_syminfo failed: errno = -1, msg = no symbol table in PE/COFF executable),
(backtrace_pcinfo failed: errno = -1, msg = no debug info in PE/COFF executable),
#44
(dbghelp: RtlUserThreadStart+0x21@0x7ffe8faa26a1[ntdll.dll+0x526a1]),
(backtrace_syminfo failed: errno = -1, msg = no symbol table in PE/COFF executable),
(backtrace_pcinfo failed: errno = -1, msg = no debug info in PE/COFF executable),`

Failed missions remain "stuck" in quest log

image

Here's a screenshot of me on the Sky Island. I have "Kill the warp-draining zombie horde lord" and "Kill 3 nether creatures this expedition" still in my log. The zombie horde lord has been with me for several expeditions, the nether creatures one I only just noticed when I went to take that screenshot.

Unfortunately I have no idea how to reproduce this bug. I did die a couple of times, but I have no idea if that correlates to when I got the "stuck" missions. I'll try to keep an eye on it and try to catch it the next time it happens.

Dying on a raid utterly destroys my body

123

There is no coming back from this. It takes several irl seconds to move a single tile, hours to do anything in-game, I'm blind, can't wield anything, I can't even craft a Quickheal (meaning I miraculously have the shards on hand, but I literally cannot craft)

Please reduce the amount of damage one receives when dying.
Even better, when one dies, teleport them back home as they are, and heal just enough to bring them to life.
My arms where fine when I died, why are they so damaged now?

Grace period needed for meteors

Though this is a rare event, I can now personally attest that I have spawned into an expedition, progressed 1 tic of time, and immediately gotten vaporized by a random meteor. A small window of spawn invulnerability seems like it would prevent this, and I believe it should; dying instantly on expedition doesn't seem like good gameplay.

In normal CDDA meteors strike when map chunks load in, which is always at the edge of your screen, so you can't really get hit by one. Sky Islands teleports people to random map locations though, so this is a unique issue for the mod.

What to do about rivers

Hello, thanks for your great mod! Sorry if it's unwelcome to post here, but I am encountering a problem with the mod/game:

The problem being rivers. They stretch for long extended areas and I have no way to cross them. That is, by now my character is skilled enough to cobble a boat together any time he would have to make one to get across (even though it does cost a lot of time), the actual problem is that since I am a "Wayfarer" I can't use said boats at all. This has led to the situation on several occasions where there is just no physical way for me to make it to the exit at all. I've resorted to the homing spell for those situations but it does feel like cheating a bit.

I do realize it's basically a vanilla issue but I feel it is affecting characters in this mod disproportionately harshly. Especially as rivers are a huge pain even for characters who can make a boat out of stuff they find?

Perhaps there is a way to reduce/turn off river mapgen spawn? Or maybe (this would be a vanilla issue) wayfarer shouldn't affect boats (while possbly being reduced in point cost)?

Do you have any ideas? Maybe I am missing something obvious, if so, please do let me know. Perhaps I could just debug teleport me across the river? Although I'd have to look up how to even do that.

Anyway, thanks for your time and this mod. If you feel like this issue is not of interest to you, feel free to delete it.

Rooftop locator recipe requires surprisingly rare item

The rooftop locator upgrade requires a folding chair to create, but in Experimental 2024-01-03-0320 (the version I'm using for testing Milestone 1), it appears that the folding chair only spawns in convention centers and cannot be crafted. The common outdoor chair is instead the camp chair, which I assume is what the recipe is theoretically meant to be asking for even if the crafting menu doesn't currently accept it as a suitable replacement.

Lesser Quantum Tunneling Exploit

So, with Magiclysm, one can use Technomnacy's Lesser Quantum Tunnel spell. It's intended to be a strictly worse version of the CBM, but it's still sufficient to bypass the 'solid air' preventing you from simply walking off - and with the right preparations, survive.

Desc

Barely. However, it's still enough to allow a no-timer raid Earthside on a pre-scouted area thanks to the map reveal from altitude, and there are many methods of accelerated healing, ranging from mutations, CBMs to Magiclysm spells. Returning to the island is handled by the spell, as there is no Return Obelisk.

Still, IMO this issue can be solved fairly easily by either increasing altitude to make surviving the drop less feasible and/or increasing the thickess of 'solid air' from one tile to several.

[Bug] Severe Hypovolemic Shock (and potentially other conditions) causes repeated death loop

I was just shot by a riot control turret, wasn't able to stop the bleeding, tried to get back to the portal before I died, and got killed by wasps. Once I spawned back in on the sky island, I had a drink of water, went to sleep, and proceeded to die in my sleep ten times. Upon waking, I'm still suffering from severe hypovolemic shock, and am continuing to die about once an hour.

So far this is the only thing that's actually killed me, but here's a couple of other things I've noticed that also don't get cleared by death and could cause similar problems:

  • Infection
  • Body temperature (freezing to death could be very problematic in winter starts)
  • Poison
  • Overdoses (including mutagen)

Idea: Important place teleporter (Im bad at names)/ Translocators balance

So, It would be nice if you could make a device that could teleport you to important places (like refugee center) so you can do quests and stuff. Raids are nice, but so is the story i guess. How to balance it? I dunno. Make a status effect that will bring you back? Or deploy a exit room (Good justification for the statue reusability) in somewhat in front of it and drop you in one pulse away from warp sickness or so. Or maybe some item that would deploy island like walls around the center (or other building) when you use it, and make a 2 way teleporter or smth.
Alternatively, Magiclysm got translocation gates (and translocation spell) and aftershock got a translocator and buoys, maybe make a patch that makes the translocator teleport and translocation spell also apply the warp status and add a item to the island to remove the warp status like a return statue does (or heck add a return statue to island). (Right now if you get those things, you can tp down and ignore the warp sickness, at cost of not being able to get back up if dont also have a gate up there or find a return statue)

Reuse exit points when spawned near previous ones

Sometimes you teleport to previously visited areas. No problem with that.
But it would be better, in my opinion, to reuse exit points if they are already in area.
Reuse - like not spawn new one(s) and assign missions to existing one(s).
For immersion and aesthetic reasons :)

Error immediately on selecting "Custom Character"

As the title says, when trying to create a Custom Character, the error below occurs and the game returns to the main menu.

The game is a fresh install of F-3 via catapult

 DEBUG    : Error: Json error: data/mods/Sky_Islands/EOCs.json:3:12: unrecognized JSON object

[
  {
    "type":
           ^
            "effect_on_condition",
    "id": "EOC_difficultysafeguard",
    "//": "This EOC gets called after a teleport is initialized but before it is finished. It basically just checks if you're running an older save or somehow missed the difficulty


 FUNCTION : bool main_menu::new_character_tab()
 FILE     : src/main_menu.cpp
 LINE     : 865
 VERSION  : 0.F-3

Contrary to what the game claims, there is no full stack trace at the path it gives me, so this is all I have

Dying to acid causes problems by NOT killing you again (and there's no suicide option)

I got killed by acid ants, and when I returned to the sky island, I still had the Corroding damage-over-time effect on. It immediately broke all my limbs except my head and torso, leaving me alive but almost incapable of moving - my base move cost is 42580. That's not a typo, it's over 40k moves.

It was probably just RNG that I didn't die, but that's actually worse. If I'd died, I'd just come back. Now I'm stuck with four broken limbs, and it takes like 20 irl seconds to move one tile. And there's no way for me to kill myself without crawling over to my loot pile, or maybe off the edge, either of which will taken an annoyingly long time. The "suicide" (now 'abandon character') command bypasses the death trigger and just actually kills your character.

Dunno if there's a convenient way to remove Corroding, either. Maybe just apply invulnerability for 60 seconds after dying or something?

Suggestion: trader & procedural quests

Not everyone's cup of tea, so I would suggest making this a separate scenario.

There's an unkillable trader on the island, he does not buy items. He initially only sells low-worth, high-volume or high-weight items: dirty, water, wood, stones, metal, very basic building materials, etc. Things that are extremely trivial to find in vanilla, but very tedious to bring back to the island in meaningful quantities.

The only way to get ""money"" (hereafter called "points") is completing his procedural quests. The trader does not accept money or barter, only points.

He always has [5] quests, and one can choose up to [2] before starting a raid.
Coming back from a raid completes all quests you have satisfied the conditions for, rerolls all unchosen quests, and automatically fails the ones that could not be completed. So every quest has an effective timer of about 24 hours.

Quests should have a good degree of randomization and could be:

  • find x amount of a certain item and bring it back (it gets deleted form your inventory when teleporting back to the island). This is already present in the game in a way.
  • walk to a certain place (mall, lab, etc). Could be multiple places, like "visit 3x pharmacies and 2x gun stores".
  • walk to a specific place (noted on map)
  • kill x amount of a certain enemy
  • kill a specific enemy (noted on map)
  • read a specific book / note, either a vanilla one or one specifically spawned for the quest
  • butcher x amount of a certain animal
  • gain x experience in a specific skill / proficiency
  • talk to x amount of npcs, or a specific npc

The value and type of reward should be know before accepting the mission

Once in a while, the trader might have an exceptional reward for a slightly harder than usual mission: a welding rig, a solar panel, a refrigerator, a gun with some ammo, a skill book, 5 MREs, etc.
These rewards should be randomly picked from a large list, so that players cannot rely on the trader to get, for example, a metal stove early in the game. Every playthrough must be considerably different.

Similarly, instead of an important item, the quest could unlock the possibility to buy some rarer (relatively speaking) materials: cotton sheets, kevlar ropes, strings, cement, clean water, etc.
So in the late game, the trader will move form only selling hypercommon goods to low/medium rarity loot as well.

Ideally, quests would have adaptive difficulty, Surviving many raids will increase the difficulty (and thus the value of the rewards), and the other way around too.
Completing or failing the accepted quests should have a similar effect, but in a much less significant way.

If the player manages to save a really large amount of points, they'll be able to afford upgrades to the sky islands: an extra chunk with a forest (for free wood), an extra chunk with already tilled terrain (for farming), an extra chunk with an empty house, an extra chunk with a semi-furnished garage / workshop, an extra chunk with a pond (for fishing and free water), a magical walk-in refrigerator, a solar farm for energy, etc.

Balance: winter, cold & wind

I usually play with a randomized starting date, and 14 days season. This means there's a good chance I'll be meeting sub-zero temperatures not too far into the play through.

The combination of lack of solid structures on the island, lack of firewood, hell even lack of stones to make a campfire ring, the amount of super strong, non stop wind, is just too tedious to deal with.
It's not the difficulty so much that I mind, is how many extra clicks everything needs.

Also candles basically become useless.

Suggestion: add a separate scenario, which is identical except the sky island has a basement. It's an empty basement, also 3x3 chunks, with no light. It has more friendly temperatures, and no wind.

Suggestion: beacon to return to the location of your last raid

I've been playing Sky Island for months and while it is possible to complete vanilla missions it requires a lot of luck to spawn close to the refugee camp or other quest-givers.

I think it would be great to have the ability to spawn at the dedicated place. For example, placing a "warped beacon" close to the quest location so you can spawn there for your next raid or in the future.

This may sound a bit "cheating" but could be well-balanced with the right cost of warped tokens or items.

Please give this a thought. :)

Thanks!

Bring NPC back to island/go into raid?

As title, I've been enjoying this mod so much, loot and upgrade island, met some NPCs in raids too, but even if with the vortex it still only teleport items back and not the NPCs, which is somewhat disappointing for me.

Am I missing some settings/items or it's intentional that we can't get NPCs to come home playing this mod?
I just want some helping hands on the island, lol.

Moving the mod in-repo

I saw that one other of your mods Backrooms is in-repo, are there any plans to do the same with this mod?

Crash on Create Character

DEBUG : Error: Json error: C:/Users/Austin/Desktop/CDDA/dda/userdata/mods/CDDA-Sky-Islands-main/EOCs.json:6:17: unrecognized condition in { "math": [ "has_set_difficulty", "==", "0" ] }

": "EOC_difficultysafeguard",
"//": "This EOC gets called after a teleport is initialized but before it is finished. It basically just checks if you're running an older save or somehow missed the difficulty assignment.",
"condition":
^
{ "math": [ "has_set_difficulty", "==", "0" ] },
"effect": [
{

FUNCTION : bool main_menu::new_character_tab()
FILE : src/main_menu.cpp
LINE : 986
VERSION : d6ec466

That is the log I get I have gone to the file and tried fixing it failed reset the file tried again. I am very much a noob can I have some help.

license?

Hello! I want to inform you right away, my English is very bad and I use google translate

I would like to add or change something in your mod, but it scares me that you didn't specify a license.
If it's not difficult, can I use the by-nc-sa 4.0 license for my fork?

Warped animal carrier does not reduce weight of animals

Unlike the other "warped [blank]" items, the warped animal carrier doesn't make its contents weightless. You can put a ~700kg cow in it, but you can't actually move while carrying it because it weighs ~700kg.

You can still use it to bring a cow home, but you have to either haul it the whole way or leash the cow and only put it in the carrier right before touching the warp obelisk, which doesn't seem liek the intended use.

[Bug] Crashes when starting up mod on mobile

Whenever i load up the world for character creation, it throws this error code and kicks me to the menu screen, i've seen some guy on reddit with the same problem but it was apparently solved by extracting the mod on his PC before transferring the files to their phone.
I can't do that but i really want to play the mod, it looks so fun 😭

Error 👇
DEBUG : Error: Json error: /storage/emulated/0/Android/data/com.cataclysmbnteam.cataclysmbn.experimental/files/data/mods/CDDA-Sky-Islands-main/EOCs.json:3:12: unrecognized JSON object

[
{
"type":
^
"effect_on_condition",
"id": "EOC_fieldwarp_statue",
"//": "This EOC is triggered when activating the statue. It grabs a random location of a certain type (here a field), saves it to a global variable, and then triggers the actual tele

FUNCTION : bool main_menu::new_character_tab()
FILE : /home/runner/work/Cataclysm-BN/Cataclysm-BN/android/app/jni/src/main_menu.cpp
LINE : 871
VERSION : BN c336087

{
"type":i
^
"effect_on_condition",
"id": "EOC_fieldwarp_statue",
"//": "This EOC is triggered when activating the statue. It grabs a random location of a certain type (here a field), saves it to a global variable, and then triggers the actual tele

FUNCTION : bool main_menu::new_character_tab()
FILE : /home/runner/work/Cataclysm-BN/Cataclysm-BN/android/app/jni/src/main_menu.cpp
LINE : 871
VERSION : BN c336087

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.