diff --git a/CECOMMPATCH - README.html b/CECOMMPATCH - README.html index cb531ec..4e257a9 100644 --- a/CECOMMPATCH - README.html +++ b/CECOMMPATCH - README.html @@ -1,7 +1,7 @@
-Welcome to the Clockwork Empires Community Patch (CECOMMPATCH)! This project is an effort to continue development of the game Clockwork Empires that was made by Gaslamp Games. All changes are done to the exposed game files, *not* the engine itself. Decompiling the executable to gain access to those parts of the code is not part of this project, so engine-related limitations exist. Fortunately, Gaslamp Games made their engine in such a way that the vast majority of the game is moddable so it's rare to run into hardcoded issues.
The first priority of CECOMMPATCH is to fix any outstanding bugs that the game has. Great progress has been made so far, and the list of bugs is ever decreasing. After the majority are fixed, the next step will be to implement features that were removed/unfinished. A huge amount of unused 3D models, events, and gameplay features are still in the game files, and we plan to utilize as much as possible.
After that stage, completely new content will be considered. The intent of this project is not to create a "total conversion", so all custom content will be themed in a way that fits with the established style.
-+_____ _ _ _____ _______ _ _ |_ _| \ | |/ ____|__ __|/\ | | | | | | | \| | (___ | | / \ | | | | @@ -232,7 +390,7 @@You'll know you've installed the patch correctly if this readme has an image-based background (assuming you moved the readme as well... which isn't necessary, but recommended).
To uninstall this patch all you need to do is "verify integrity of game files" on Steam. The original files will be redownloaded and the mod will be overwritten.
-+_ ___ _ ______ ___ _ _____ _____ _____ _ _ ______ _____ | |/ / \ | |/ __ \ \ / / \ | | |_ _|/ ____/ ____| | | | ____|/ ____| | ' /| \| | | | \ \ /\ / /| \| | | | | (___| (___ | | | | |__ | (___ @@ -251,7 +409,7 @@The Trade Office menu isn't very pretty. Most of that menu is hardcoded and a good solution hasn't yet been found. -+Clockwork Empires Community Patch - Version: 0.9.4Clockwork Empires, all code, assets, etc. are (c) Gaslamp Games+ + + \ No newline at end of file diff --git a/game/beacons.xml b/game/beacons.xml new file mode 100644 index 0000000..df3a2c1 --- /dev/null +++ b/game/beacons.xml @@ -0,0 +1,205 @@ + + +_ _____ _ _ _ __ _____ | | |_ _| \ | | |/ // ____| | | | | | \| | ' /| (___ @@ -266,13 +424,13 @@Official Thread: https://community.gaslampgames.com/threads/community-patch.20992/ -
This is the official thread created on the Gaslamp Games forum. There is no telling how long they will stay online, so it's probably better to stay in touch via Steam.GitHub: https://github.com/SickBoySB/cecommpatch/tree/v1
+GitHub: https://github.com/SickBoySB/cecommpatch/
Feel free to fork the code, contribute your own changes, make your own patch, etc.Current Issues/Features: https://github.com/SickBoySB/cecommpatch/issues -
The current list of issues, features, etc. being tracked and worked on. This is not necessarily a comprehensive list, but it's a pretty good indication of what's on the to-do list.+_____ _ _ _ _ _____ ______ _ ____ _____ / ____| | | | /\ | \ | |/ ____| ____| | / __ \ / ____| | | | |__| | / \ | \| | | __| |__ | | | | | | | __ @@ -281,9 +439,69 @@ \_____|_| |_/_/ \_\_| \_|\_____|______|______\____/ \_____|CHANGELOG+ __ ___ ___ + / \ / _ \ / __) + ( 0 )_ \__ )_ (___ \ 0.9.5 (NEW SAVE RECOMMENDED) + \__/(_)(___/(_)(____/ +++
+- FIX: Invalid default animal/herd spawns - Cold Biome
+- FIX: Invalid default animal/herd spawns - Temperate Biome
+- FIX: Invalid default animal/herd/obeliskian spawns - Desert Biome
+- FIX: Invalid default animal/herd/deathwurm spawns - Tropical Biome
+- FIX: Minimap has bright white dots around the edges
+- FIX: Large animal burrow has dark square around it
+- FIX: Small animal burrow has dark square around it
+- FIX: Swamp biomes use a missing texture
+- FIX: Geometer Observators cause crash if they die when on fire
+- FIX: Vicars don't perform last rites on buried bodies
+- FIX: Corpses with last rites can still create a spectre
+- FIX: Flattening terrain near the edge of the map will crash the game
+- FIX: Blunderbuss area of effect attacks can cause meat 'splosions
+- FIX: Steam Knight minum gun area of effect attacks can cause meat 'slosions
+- FIX: Airship Masts don't use the correct materials in construction
+- FIX: Airship Masts don't spawn dust cloud on destruction properly
+- FIX: Loud, looping, metallic banging sounds occur in the middle of the map
+- FIX: Geometer Observators use an invalid animation when leaving the map
+- FIX: Geometer Observators cause script errors after exiting the map
+- FIX: Geometers cause script errors after exiting the map
+- FIX: Spectres loop walking animation when idling
+- FIX: Bamboo Agriculture lab research has a duplicate in tropical biomes
+- FIX: Practical Table and Chair Set has a typo
+- CHANGE: Unburied colonist corpses have a higher chance to spawn a spectre (5% -> 10%)
+- CHANGE: Chance for colonist corpses/graves without last rites spawning a spectre increased by 25%
+- CHANGE: Colonists can drink tea in class-appropriate houses with chairs (lower priority than pub drinking)
+- CHANGE: Drinking tea at home creates a new, slightly depressing memory
+- CHANGE: Minimap given fancy border/graphic
+- CHANGE: Flattening terrain near the edge of the map will now be prevented if it's within 5-6 spots (hacky crashfix)
+- CHANGE: Steam Knights despawn after their death animation and final explosion
+- CHANGE: Airship Mast cost changed
+- CHANGE: Airship Mast construction interruption made less sensitive
+- CHANGE: Airship Mast health increased from 20 -> 40
+- CHANGE: Airship Mast alert regarding missing materials removed
+- CHANGE: Airship Mast 'ghost' made less easy to destroy
+- CHANGE: Airship Mast destruction leaves more appropriate debris
+- CHANGE: Conifer trees in snowy areas given a healthy dusting of snow (all variants)
+- CHANGE: Pine trees in snowy areas given a healthy dusting of snow (all variants)
+- CHANGE: Fishepople bodies don't disappear automatically anymore
+- CHANGE: Fishpeople will now retrieve and "handle" their fallen friends
+- CHANGE: Spectres now have a few animations to pick from when idling
+- CHANGE: Simple Chair added to Lower Class House module menu
+- CHANGE: Simple Chair and Table Set added to Lower Class House module menu
+- CHANGE: Simple Chair and Table Set able to be built in Lower Class House
+- CHANGE: Chairs now impact quality (-1) - Simple Table and Chair Set
+- CHANGE: Chairs now impact quality (-1) - Practical Table and Chair Set
+- CHANGE: Chairs now impact quality (-1) - Ornate Table and Chair Set
+- CHANGE: Chairs now impact quality (-1) - Simple Chair
+- CHANGE: Chairs now impact quality (-1) - Practical Chair
+- CHANGE: Chairs now impact quality (-1) - Ornate Chair
+- TOOL: Readme now has a recipe searching tool
+- TOOL: Readme now has a lab research tree browsing tool
+__ ___ ___ / \ / _ \ / _ \ - ( 0 )_ \__ )_(__ ( 0.9.4 (NEW SAVE RECOMMNEDED) + ( 0 )_ \__ )_(__ ( 0.9.4 (NEW SAVE RECOMMENDED) \__/(_)(___/(_) (__/@@ -359,8 +577,6 @@
- -- CLEANUP: Fancier readme... just because
- CLEANUP: thoughtIcons00 has an inconsistent grey version
__ ___ ____ / \ / _ \ ( __ \ @@ -543,7 +759,6 @@CHANGE: TAG - Farming added to Bamboo CHANGE: TAG - Icon for "Used in Workshops" changed to general workshop icon -__ ____ __ / \ (__ ) / \ @@ -656,6 +871,57 @@CHANGE: EVENT - Some fishpeople spawning events have been given the chance to remain mysterious CLEANUP: Removed redundant "Make Steam Oven" job code CLEANUP: Removed redundant "Make Maize Chowder" job code + +++ _______ ____ ____ _ _____ + |__ __/ __ \ / __ \| | / ____| + | | | | | | | | | | | (___ + | | | | | | | | | | \___ \ + | | | |__| | |__| | |____ ____) | + |_| \____/ \____/|______|_____/ +TOOLS+++ ============================================== +-| Item Recipe Search |- + ============================================== +++ + + ++ +
+ (clear search) +++++++ ============================================= +-| Lab Research Tree |- + ============================================= +++ ++ + + +++ _____ _____ ______ _____ _____ _______ _____ + / ____| __ \| ____| __ \_ _|__ __/ ____| + | | | |__) | |__ | | | || | | | | (___ + | | | _ /| __| | | | || | | | \___ \ + | |____| | \ \| |____| |__| || |_ | | ____) | + \_____|_| \_\______|_____/_____| |_| |_____/ +CREDITS+
- SickBoy - Project Lead / Developer / Designer
+- Teutomatos - Playtester
@@ -676,5 +942,3734 @@+ diff --git a/game/biomes.xml b/game/biomes.xml new file mode 100644 index 0000000..095e966 --- /dev/null +++ b/game/biomes.xml @@ -0,0 +1,4129 @@ ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/game/buildings.xml b/game/buildings.xml index 92f2229..e0d0262 100644 --- a/game/buildings.xml +++ b/game/buildings.xml @@ -182,9 +182,9 @@ are already contained within other buildings. Consider those a placeholder for l upkeep_quantity="-1" > -+ + ++ + + + + + + ++ + + + + + ++ + + + + + + + + + ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + ++ + + + + + + + + + + + + + + + + + + + + + + + + + + ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +> + + + + + + + + + + + + + + + + + + + + + + ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ++ + + + + + + + + + + + + + + + + + + + ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ++ + + + + + + + + + + + + + + + ++ + + + + + + + + + + + + ++ + + + + + + + ++ + + + + ++ + + + + + + ++ + + + ++ + + + + + + ++ + + + + + + ++ + + + + ++ + + + + + + + + + + + ++ + + + + + ++ + + ++ + + + + + + + + + + + + + ++ + + + + + + + ++ + + + + ++ + + + + + + + + + + + + + + + + + ++ + + + + + + + + + + + ++ + + + + ++ + + ++ + + + + + + + + + + + + + ++ + + + + + + + ++ + + + + + ++ + + + + + + + + + + + + + + ++ + + + + ++ + + + + + ++ + + + + + + + + + + + ++ + + + + ++ + + ++ + + + + + + + + + + + + + ++ + + + + + + + ++ + + + + ++ + + + + + + + + + + + + ++ + ++ + + + + + ++ + + + + + + + + + + ++ + + + + + + + ++ + + + + + + + ++ + ++ + ++ + + + + + + + + + + + + + + + ++ + + + + ++ + + ++ + + + + + + + + + + ++ + ++ + + + + ++ + + + + + + + ++ + ++ + + + + + + + + + ++ + + + + + + + + + ++ ++ + + + + + + ++ ++ + + + + + + + + + + ++ ++ + + + + + + + + + + + ++ + + ++ + + + ++ + + + + + ++ ++ + + + + ++ + + + + + + + + + ++ + + + + + ++ + + ++ + + + + + + + + + + + + + ++ + + + + + + ++ + + + + ++ + + + + + + + + + + + + + + + ++ + + + + + + + + + ++ + + + + ++ + ++ + + + + + + + + + + ++ + + + + + + + + ++ + + + + + + ++ + + + + + ++ + + + + + + + ++ + + + + + + + + + + + + ++ + + + + + + + + + ++ + + + + ++ + ++ + + + + + + + + + + ++ + + + + + + + + ++ + + + + + + ++ + + + + + ++ + + + + + + + ++ + + + + + + + + ++ + + + + + + + + + + + + + ++ + + + + + + + ++ + + ++ + + + + + + + + + ++ + + + + + + + + + + + + + ++ + + + + + ++ + + + + + + + + + + + + + + + + + + + + ++ + + + + + + + + + + + + + ++ + + + + + ++ + + ++ + + + + + + + + + + + ++ + + + + + + ++ + + + + + + ++ + + + + + + + + + + + + + + + + ++ + + + + + + + + + + + + + ++ + + + + + ++ + + ++ + + + + + + + + + + + + ++ + + + + + + ++ + + + + + ++ + + + + + + + + + + + + + + + + ++ + + + + + + + + + + + + + ++ + + + + + + ++ + + + ++ + + + + + + + + + + + + + ++ + + + + + + + + + ++ + + + + + + + + ++ + + + + + + + + + ++ + + + + + + ++ + + ++ + + + + + + + + + + + + + + + + + ++ ++ + + + + + + + + + + + + + + + + + ++ + + + + + + + + + + + + + ++ + + + + + ++ + ++ + + + + + + + + + + + + + + + + ++ + + + + + + + + + ++ + + + + + + + + + ++ + + ++ + + + + + + ++ + + + + + + ++ + + + + + + + + + + + ++ ++ + + + + + + + + + + + ++ + + + + + + + + + + + + + + + ++ + + ++ + + + + + + + + + + + + + ++ + + + + + + ++ + + + + ++ + + + + + + + + + + + + + + + ++ + + + + + + + + + + + + + + ++ ++ + + + + + + ++ ++ + + + + + + + + + + ++ ++ + + + + + + + + + + + ++ + + ++ + + + + ++ + + + + + + ++ ++ + + + ++ + + + + + + + + ++ + + + + + + + + + ++ ++ + + + + + + ++ ++ + + + + + + + + + + ++ ++ + + + + + + + + + + + ++ + + ++ + + + ++ + + + + + ++ ++ + + ++ + + + ++ + + + + + + + + + + + + + + + + + + ++ + + + ++ + + + + + + + + + + + + + + + ++ + ++ + + + + + + + + + + + ++ + + + + + + + + + + + + ++ + ++ + + + + + + + + ++ + + + + + + + + + + + + ++ + + + + ++ + ++ + + + + + + + + + ++ + + + + + + + + + ++ + + + + + + + ++ + + + + ++ + + + + + + + + + + + + + ++ + + + + + + + + + + + + + ++ + + + + + + + ++ + + ++ + + + + + + + + + + ++ + + + + + + + + + + + ++ + + + + + + ++ + ++ + + + + + + + + + + + + + + + + + + ++ + + + + + + + + + + + + + + + + + ++ + ++ + + + + + + + + + + + ++ + + + + + + + ++ + + + + + + ++ + + + + + ++ + + + + + + + ++ + + + + + + ++ + + + + + + + + + + + + + ++ + + + + ++ + ++ + + + + + + + + + ++ + + + + + + + + + ++ + + + + + + + ++ + + + + ++ + + + + + + + + + + + + + + ++ + + + + + + + + + + + + + + + ++ + + + + + + + + + + + + + ++ + + + + + + + + ++ + + ++ + + + + + + + + + ++ + + + + + + + + + ++ + + + + + + ++ + ++ + + + + + + + + + + + + + + + + + + + + ++ + + + + + + + + + + + + ++ + + + ++ ++ + + + + + ++ + ++ + + + + + + + + + + + ++ ++ + + + + + + + + + + + + ++ + + ++ + + + ++ + + + + + + ++ ++ + + + + + ++ + + + + + + + + + + + + ++ + + + + + ++ ++ + + + + + + ++ ++ + + + + + + + + + + ++ ++ + + + + + + + + + + + ++ + + ++ + + + ++ + + + + + ++ ++ + + + + ++ + + + + + + + + + + + + + + + ++ + + + + ++ + + ++ + + + + + + + + + + ++ + ++ + + + + ++ + + + + + + + ++ + ++ + + + + + + + + ++ + + + + + + + + + + + + + ++ + + + + ++ + + ++ + + + + + + + + + + + + + ++ + + + + + ++ + + + + ++ + + + + + + + + + + + + + + + ++ + + + + + + + + + + + + + + + + + + ++ + + + + ++ + + ++ + + + + + + + + + + ++ + ++ + + + + ++ + + + + + + + ++ + ++ + + + + + + + + + + ++ + + + + + + + + + + + + ++ + + + + ++ ++ + + + + + + ++ ++ + + + + + + + + + + ++ ++ + + + + + + + + + + + ++ + + ++ + + + ++ + + + + + ++ ++ + + + + + ++ + + + + + + + + + + + + + + + + + ++ + + + + ++ + + ++ + + + + + + + + + + ++ + ++ + + + + ++ + + + + + + + ++ + ++ + + + + + + + + ++ + + + + ++ + + + + + + + + + + + + + + + + + ++ + + + + ++ + + ++ + + + + + + + + + ++ + ++ + + + + ++ + + + + + + + ++ + ++ + + + + + + + + + + ++ + + + + + + + + + + + + + + + + + ++ + + + + ++ + + ++ + + + + + + + + + + + ++ + + + ++ + + + + ++ + + + + + + + ++ + + + + ++ + + + + + + + ++ + ++ + + + ++ + + ++ + + + + + ++ + + + + + + + + + + + + + + + ++ ++ + + + + + ++ ++ + + + + + + + + + + + ++ ++ + + + + + + + + + + ++ + + ++ + + + + + ++ + + + + ++ + + + + + + ++ ++ + + ++ + + + + ++ + + + + + + + + + + + + + + + ++ + ++ + + + + + + + + + + + + ++ + + + + ++ + ++ + + + + + + ++ + ++ + + + + + ++ + + ++ + + + + ++ + + + + + ++ ++ + + + + + + + + + ++ + + ++ + + + + + + + + + + + + ++ + + ++ + + + + + + + + + + + + + + + + ++ + + + + + + + + + ++ + + + + ++ + + + + + ++ + + + + + + + + + + - - + + + @@ -10049,7 +10049,7 @@ are already contained within other buildings. Consider those a placeholder for l icon_skin="ui\orderIcons.xml" icon="lc_table_icon" model="models/buildingProps/tableChairMergedLC00.upm" short_description="Functions the same as a chair." - quality="0" + quality="-1" upkeep_type="-1" upkeep_quantity="-1" description="A robust wooden table and chair for the lower classes." @@ -10068,7 +10068,7 @@ are already contained within other buildings. Consider those a placeholder for l - + + diff --git a/game/jobs/fishperson_jobs.xml b/game/jobs/fishperson_jobs.xml new file mode 100644 index 0000000..c14c64b --- /dev/null +++ b/game/jobs/fishperson_jobs.xml @@ -0,0 +1,1033 @@ + + \ No newline at end of file diff --git a/game/jobs/jobs.xml b/game/jobs/jobs.xml index a7d5fc2..09dd2c2 100644 --- a/game/jobs/jobs.xml +++ b/game/jobs/jobs.xml @@ -2260,6 +2260,40 @@+ + + + + + + ++ + + + + ++ + + + + + ++ + + + ++ + + + + + ++ + ++ + ++ + + + ++ + + + + ++ + + + ++ + + + + + ++ + + + ++ + ++ + + + + ++ + + + + + + ++ + + ++ + + + + ++ + + + + + + ++ + + + ++ + + + ++ + + + + + + ++ + + + ++ + + + ++ + + + + + ++ + + + ++ + + + + + ++ + + + + + + ++ + + + ++ + + + ++ + + ++ + ++ + + + + ++ + + + ++ + ++ + + + ++ + + + + + + + ++ + + + + ++ + + + + ++ + + + + + + + ++ + + ++ + + + + ++ + + + ++ + ++ + + + + + ++ + + ++ + + ++ + + + + + + ++ + + ++ + + ++ + + + + + + + ++ + + + + ++ + + ++ + + + + + + ++ + ++ + ++ + + + + + + ++ + + + + + ++ + ++ + + + + ++ + + + + ++ + ++ + + + + ++ + + ++ + ++ + + + + + ++ + + ++ + ++ + + + ++ + + ++ + ++ + + + + + ++ + + ++ + ++ + + + + + + + ++ + + + + ++ + + ++ + + + + + + + ++ + + + ++ + + ++ + + ++ + + + + ++ + + + + + ++ + ++ + + + + + + ++ + + + + + + ++ + + + + ++ + + + + ++ + + + + + + ++ + + + + ++ + + + + ++ + + + + + ++ + + + + ++ + + + + ++ + + + + + ++ + + + ++ + + + + ++ + + + ++ + + + + ++ + + + + + + + + ++ ++ + + ++ + + + ++ + + + + ++ + ++ + + + + ++ + + + + + + + ++ + + + + ++ + + + + + + + + + + + + + + ++ + ++ + + + + ++ + + + + + + + + + + ++ + + ++ + + + + + + + + + + + + + + + ++ + + + + + + + + + + ++ + ++ + + + ++ + + + + + + + + + + ++ + ++ + + ++ + + + + + + + + + + ++ + ++ - CECOMMPATCH - 0.9.4 - README +CECOMMPATCH - 0.9.5 - README @@ -47,7 +47,7 @@ } #univ { - min-width: 700px; + min-width: 850px; margin: 0 auto; font-family: monospace; font-size: 12px; @@ -68,8 +68,8 @@ margin: 0 auto; padding-left: 20px; padding-right: 20px; - width: 70%; - min-width: 700px; + width: 80%; + min-width: 850px; height: auto; box-shadow: 0px 0px 20px 5px #000000; z-index: 999; @@ -90,6 +90,7 @@ } #mst3k > pre { + padding-top: 100px; color: #555; text-shadow: 0 0 0px; } @@ -171,6 +172,162 @@ filter: FlipH; -ms-filter: "FlipH"; } + + #searchfields { + padding-bottom: 10px; + } + + #searchresults { + display: table; + margin: 0 auto; + width: 835px; + font-size: 11px; + margin-right: 15px; + } + + #searchcontainer { + padding-top: 0px !important; + display: inline-block !important; + max-height: 400px; + width: 850px; + overflow-y: auto; + overflow-x: hidden; + margin: 0 auto; + } + + #searchresults > div { + display: table-row; + background: rgb(40, 40, 40); /* older ie fallback */ + background: rgba(40,40,40,0.8); + } + + #searchresults > div > span { + display: table-cell; + border-top: 1px solid #333; + border-bottom: 1px solid #000; + padding-left: 2px; + padding-right: 2px; + padding-top: 5px; + padding-bottom: 5px; + } + + .workshop, .module, .research, .biome { + width: 50px; + text-align: center; + vertical-align: middle; + } + + .product, .workshop, .research { + background: #333; + } + + .product, .materials { + width: 200px; + vertical-align: middle; + white-space: nowrap; + } + + input { + background: #333; + color: #FFF; + border: 1px solid #111; + margin-left: 5px; + margin-right: 5px; + padding: 5px; + width: 100px; + } + + #searchtop, #searchtop .product, #searchtop .workshop, #searchtop .module, #searchtop .research, #searchtop .biome, #searchtop .materials { + text-align: center; + background: rgb(100, 100, 100) !important; /* older ie fallback */ + background: rgba(100,100,100,0.8) !important; + color: #FFF; + } + + #clearsearch { + cursor: pointer; + } + + [class^="icon-"]{ + width: 32px; + height: 32px; + background-image: url("ui/icons/commodityIcons00.png"); + float: left; + background-position: 1024px 1024px; + } + + .icon-large_bomb { + background-position: 0px 0px; + } + + [class^="icon-"]{ + background-size: 512px 512px; + } + + .tree ul, .tree li { + + list-style-type: none; + } + + .tree li{ + padding: 5px; + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + margin-left: 5px; + position: relative; + padding-right: 0px; + } + + .tree > li { + width: 700px; + } + + .tree div { + background: rgb(40, 40, 40); /* older ie fallback */ + background: rgba(40,40,40,0.8); + border-top: 1px solid #333; + border-bottom: 1px solid #000; + padding: 10px; + } + + .tree span{ + color: #ddb777; + } + + .expanded { + display: block; + } + + .hid { + display: none; + } + + .canclick { + cursor: pointer; + } + + .canclick:hover { + background: rgb(70, 70, 70); /* older ie fallback */ + background: rgba(70,70,70,0.8); + } + + .ralign { + position: absolute; + right: 5px; + padding-right: 5px; + } + + .techname { + color: #CCC !important; + font-size: 16px !important; + } + + .techdesc { + font-size: 11px !important; + color: #666 !important; + } @@ -190,13 +347,14 @@ | | | __|| | | | | | |\/| | |\/| | ___/ /\ \ | | | | | __ | | |____| |___| |___| |__| | | | | | | | | / ____ \| | | |____| | | | \_____|______\_____\____/|_| |_|_| |_|_| /_/ \_\_| \_____|_| |_| -
+ Clockwork Empires Community Patch - Version: 0.9.5Clockwork Empires, all code, assets, etc. are (c) Gaslamp Games
Install | Known Issues | Links | Changelog | Tools | Credits +
Welcome to the Clockwork Empires Community Patch (CECOMMPATCH)! This project is an effort to continue development of the game Clockwork Empires that was made by Gaslamp Games. All changes are done to the exposed game files, *not* the engine itself. Decompiling the executable to gain access to those parts of the code is not part of this project, so engine-related limitations exist. Fortunately, Gaslamp Games made their engine in such a way that the vast majority of the game is moddable so it's rare to run into hardcoded issues.
The first priority of CECOMMPATCH is to fix any outstanding bugs that the game has. Great progress has been made so far, and the list of bugs is ever decreasing. After the majority are fixed, the next step will be to implement features that were removed/unfinished. A huge amount of unused 3D models, events, and gameplay features are still in the game files, and we plan to utilize as much as possible.
After that stage, completely new content will be considered. The intent of this project is not to create a "total conversion", so all custom content will be themed in a way that fits with the established style.
-+_____ _ _ _____ _______ _ _ |_ _| \ | |/ ____|__ __|/\ | | | | | | | \| | (___ | | / \ | | | | @@ -232,7 +390,7 @@You'll know you've installed the patch correctly if this readme has an image-based background (assuming you moved the readme as well... which isn't necessary, but recommended).
To uninstall this patch all you need to do is "verify integrity of game files" on Steam. The original files will be redownloaded and the mod will be overwritten.
-+_ ___ _ ______ ___ _ _____ _____ _____ _ _ ______ _____ | |/ / \ | |/ __ \ \ / / \ | | |_ _|/ ____/ ____| | | | ____|/ ____| | ' /| \| | | | \ \ /\ / /| \| | | | | (___| (___ | | | | |__ | (___ @@ -251,7 +409,7 @@The Trade Office menu isn't very pretty. Most of that menu is hardcoded and a good solution hasn't yet been found. -++ + + \ No newline at end of file diff --git a/models/nature/animalBurrowLarge.upm b/models/nature/animalBurrowLarge.upm new file mode 100644 index 0000000..9e6b685 Binary files /dev/null and b/models/nature/animalBurrowLarge.upm differ diff --git a/models/nature/animalBurrowSmall.upm b/models/nature/animalBurrowSmall.upm new file mode 100644 index 0000000..e65dbea Binary files /dev/null and b/models/nature/animalBurrowSmall.upm differ diff --git a/models/nature/trees/coniferLargeCold.upm b/models/nature/trees/coniferLargeCold.upm new file mode 100644 index 0000000..03a7aad Binary files /dev/null and b/models/nature/trees/coniferLargeCold.upm differ diff --git a/models/nature/trees/coniferMediumCold.upm b/models/nature/trees/coniferMediumCold.upm new file mode 100644 index 0000000..2bc37ec Binary files /dev/null and b/models/nature/trees/coniferMediumCold.upm differ diff --git a/models/nature/trees/coniferSmallCold.upm b/models/nature/trees/coniferSmallCold.upm new file mode 100644 index 0000000..472e93d Binary files /dev/null and b/models/nature/trees/coniferSmallCold.upm differ diff --git a/models/nature/trees/pineTreeLrg00Cold.upm b/models/nature/trees/pineTreeLrg00Cold.upm new file mode 100644 index 0000000..934dbd7 Binary files /dev/null and b/models/nature/trees/pineTreeLrg00Cold.upm differ diff --git a/models/nature/trees/pineTreeMed00Cold.upm b/models/nature/trees/pineTreeMed00Cold.upm new file mode 100644 index 0000000..eb27c49 Binary files /dev/null and b/models/nature/trees/pineTreeMed00Cold.upm differ diff --git a/models/nature/trees/pineTreeSml00Cold.upm b/models/nature/trees/pineTreeSml00Cold.upm new file mode 100644 index 0000000..98a21b5 Binary files /dev/null and b/models/nature/trees/pineTreeSml00Cold.upm differ diff --git a/scripts/embark_cold.lua b/scripts/embark_cold.lua new file mode 100644 index 0000000..5fcb761 --- /dev/null +++ b/scripts/embark_cold.lua @@ -0,0 +1,42 @@ +printl("SETTING COLD BIOME") +local biomeName = "cold" +send("gameSession", "setSessionString", "biome", biomeName) +send("gameSession", "setSessionBool", "spawnExtraBandits", true) +send("gameSession", "setSessionBool", "biomeCold", true) +send("gameSession", "setSessionBool", "biomeTemperate", false) +send("gameSession", "setSessionBool", "biomeTropical", false) +send("gameSession", "setSessionBool", "biomeDesert", false) +send("gameSession", "setSessionInt", "colonyPopulation", 0) +send("gameSession", "setSessionInt", "militaryCount", 0) + +send("rendCommandManager", "odinRendererSetLighting",111,90,59,93,83,69) -- Arctic Lighting + +-- set up agriculture for this biome +-- (these will be read by farm.go to set allowed crops) + +local cropTable = EntityDB.WorldStats.climateInfoPerBiome[ biomeName ].cropTable +for cropName, stats in pairs( cropTable ) do + send("gameSession", "setSessionBool", "cropUnlocked=" .. cropName, cropTable[cropName].unlocked ) + send("gameSession", "setSessionInt", "cropGrowthModifier=" .. cropName, cropTable.growthModifier) +end + +function spawnGameobject( x, y, objectType, objectTable ) + if x > 235 then x = 235 end + if x < 20 then x = 20 end + + if y > 235 then y = 235 end + if y < 20 then y = 20 end + + local createResults = query( "scriptManager", "scriptCreateGameObjectRequest", objectType, objectTable ) + local handle = createResults[1] + if handle ~= nil then + send(handle, "GameObjectPlace", x, y ) + end +end + +-- need some accessible hunting at game start +local animals_to_spawn = { [1] = {["legacyString"]="Wooly Aurochs"}, [2] = {["legacyString"]="Arctic Dodo"} } +--spawnGameobject( 250, 210, "herd", animals_to_spawn[rand(1,#animals_to_spawn)]) +--spawnGameobject( 250, 300, "herd", animals_to_spawn[rand(1,#animals_to_spawn)]) +spawnGameobject( rand(20,235), rand(20,235), "herd", animals_to_spawn[rand(1,#animals_to_spawn)]) +spawnGameobject( rand(20,235), rand(20,235), "herd", animals_to_spawn[rand(1,#animals_to_spawn)]) \ No newline at end of file diff --git a/scripts/embark_desert.lua b/scripts/embark_desert.lua new file mode 100644 index 0000000..e6aeaff --- /dev/null +++ b/scripts/embark_desert.lua @@ -0,0 +1,62 @@ +printl("SETTING DESERT BIOME") +local biomeName = "desert" +send("gameSession", "setSessionString", "biome", biomeName) +send("gameSession", "setSessionBool", "spawnExtraBandits", true) +send("gameSession", "setSessionBool", "biomeDesert", true) +send("gameSession", "setSessionBool", "biomeCold", false) +send("gameSession", "setSessionBool", "biomeTemperate", false) +send("gameSession", "setSessionBool", "biomeTropical", false) +send("gameSession", "setSessionInt", "colonyPopulation", 0) +send("gameSession", "setSessionInt", "militaryCount", 0) + +send("rendCommandManager", "odinRendererSetLighting",118,79,75,38,27,53) -- Desert Lighting + +-- set up agriculture for this biome +-- (these will be read by farm.go to set allowed crops) +local cropTable = EntityDB.WorldStats.climateInfoPerBiome[ biomeName ].cropTable +for cropName, stats in pairs( cropTable ) do + send("gameSession", "setSessionBool", "cropUnlocked=" .. cropName, cropTable[cropName].unlocked ) + send("gameSession", "setSessionInt", "cropGrowthModifier=" .. cropName, cropTable.growthModifier) +end + +function spawnGameobject( x, y, objectType, objectTable ) + if x > 235 then x = 235 end + if x < 20 then x = 20 end + + if y > 235 then y = 235 end + if y < 20 then y = 20 end + + local createResults = query("scriptManager", + "scriptCreateGameObjectRequest", + objectType, + objectTable ) + + local handle = createResults[1] + if handle ~= nil then + send(handle, "GameObjectPlace", x, y ) + end +end + +-- need some accessible hunting at game start +local animals_to_spawn = { [1] = {["legacyString"]="Beetle"}, [2] = {["legacyString"]="Desert Fox"} } + +--spawnGameobject( 250, 210, "herd", animals_to_spawn[rand(1,#animals_to_spawn)]) +--spawnGameobject( 250, 300, "herd", animals_to_spawn[rand(1,#animals_to_spawn)]) +spawnGameobject( rand(20,235), rand(20,235), "herd", animals_to_spawn[rand(1,#animals_to_spawn)]) +spawnGameobject( rand(20,235), rand(20,235), "herd", animals_to_spawn[rand(1,#animals_to_spawn)]) + +-- load in some more Obeliskians! Fun fun fun. + +local x_max = 255 +local y_max = 255 + +spawnGameobject( rand(20, 98), + rand(20,235), + "objectcluster", + { legacyString="Obeliskian Cluster" } ) + +spawnGameobject( rand(20,235), + rand(20, 98), + "objectcluster", + { legacyString="Obeliskian Cluster" } ) + diff --git a/scripts/embark_temperate.lua b/scripts/embark_temperate.lua new file mode 100644 index 0000000..2cb8b2c --- /dev/null +++ b/scripts/embark_temperate.lua @@ -0,0 +1,44 @@ +printl("SETTING TEMPERATE BIOME") +local biomeName = "temperate" +send("gameSession", "setSessionString", "biome", biomeName) +send("gameSession", "setSessionBool", "biomeCold", false) +send("gameSession", "setSessionBool", "biomeTemperate", true) +send("gameSession", "setSessionBool", "biomeTropical", false) +send("gameSession", "setSessionBool", "biomeDesert", false) +send("gameSession", "setSessionInt", "colonyPopulation", 0) +send("gameSession", "setSessionInt", "militaryCount", 0) + +send("rendCommandManager", "odinRendererSetLighting",165,140,125,30,40,90) -- Temperate Lighting +--send("rendCommandManager", "odinRendererSetLighting",118,79,75,38,27,53) -- Desert Lighting +--send("rendCommandManager", "odinRendererSetLighting",126,132,183,33,37,82) -- Tropical Lighting +--send("rendCommandManager", "odinRendererSetLighting",111,90,59,93,83,69) -- Arctic Lighting + +-- set up agriculture for this biome +-- (these will be read by farm.go to set allowed crops) +local cropTable = EntityDB.WorldStats.climateInfoPerBiome[ biomeName ].cropTable +for cropName, stats in pairs( cropTable ) do + send("gameSession", "setSessionBool", "cropUnlocked=" .. cropName, cropTable[cropName].unlocked ) + send("gameSession", "setSessionInt", "cropGrowthModifier=" .. cropName, cropTable.growthModifier) +end + +function spawnGameobject( x, y, objectType, objectTable ) + if x > 235 then x = 235 end + if x < 20 then x = 20 end + + if y > 235 then y = 235 end + if y < 20 then y = 20 end + + local createResults = query( "scriptManager", "scriptCreateGameObjectRequest", objectType, objectTable ) + local handle = createResults[1] + if handle ~= nil then + send(handle, "GameObjectPlace", x, y ) + end +end + +-- need some accessible hunting at game start +local animals_to_spawn = { [1] = {["legacyString"]="Aurochs"}, [2] = {["legacyString"]="Dodo"} } +--spawnGameobject( 250, 210, "herd", animals_to_spawn[rand(1,#animals_to_spawn)]) +--spawnGameobject( 250, 300, "herd", animals_to_spawn[rand(1,#animals_to_spawn)]) +spawnGameobject( rand(20,235), rand(20,235), "herd", animals_to_spawn[rand(1,#animals_to_spawn)]) +spawnGameobject( rand(20,235), rand(20,235), "herd", animals_to_spawn[rand(1,#animals_to_spawn)]) +send("gameSession", "setSessionBool", "maize_technology_unlocked", true) --gotta manually unlock it! \ No newline at end of file diff --git a/scripts/embark_tropical.lua b/scripts/embark_tropical.lua new file mode 100644 index 0000000..20c3791 --- /dev/null +++ b/scripts/embark_tropical.lua @@ -0,0 +1,60 @@ +printl("SETTING TROPICAL BIOME") +local biomeName = "tropical" + +send("gameSession", "setSessionString", "biome", biomeName) +send("gameSession", "setSessionBool", "biomeCold", false) +send("gameSession", "setSessionBool", "biomeTemperate", false) +send("gameSession", "setSessionBool", "biomeTropical", true) +send("gameSession", "setSessionBool", "biomeDesert", false) +send("gameSession", "setSessionInt", "colonyPopulation", 0) +send("gameSession", "setSessionInt", "militaryCount", 0) + +send("rendCommandManager", "odinRendererSetLighting",126,132,183,33,37,82) -- Tropical Lighting + +-- set up agriculture for this biome +-- (these will be read by farm.go to set allowed crops) + +local cropTable = EntityDB.WorldStats.climateInfoPerBiome[ biomeName ].cropTable +for cropName, stats in pairs( cropTable ) do + send("gameSession", "setSessionBool", "cropUnlocked=" .. cropName, cropTable[cropName].unlocked ) + send("gameSession", "setSessionInt", "cropGrowthModifier=" .. cropName, cropTable.growthModifier) +end + +function spawnGameobject( x, y, objectType, objectTable ) + if x > 235 then x = 235 end + if x < 20 then x = 20 end + + if y > 235 then y = 235 end + if y < 20 then y = 20 end + + local createResults = query( "scriptManager", "scriptCreateGameObjectRequest", objectType, objectTable ) + local handle = createResults[1] + if handle ~= nil then + send(handle, "GameObjectPlace", x, y ) + end +end + +-- need some accessible hunting at game start +local animals_to_spawn = { [1] = {["legacyString"]="Junglefowl"}, [2] = {["legacyString"]="Giant Beetle"} } +--spawnGameobject( 250, 210, "herd", animals_to_spawn[ rand(1,#animals_to_spawn) ]) +--spawnGameobject( 250, 300, "herd", animals_to_spawn[ rand(1,#animals_to_spawn) ]) +spawnGameobject( rand(20,235), rand(20,235), "herd", animals_to_spawn[rand(1,#animals_to_spawn)]) +spawnGameobject( rand(20,235), rand(20,235), "herd", animals_to_spawn[rand(1,#animals_to_spawn)]) + +--[[local spawnLocs = { + [1] = {x=255,y=96, w=128, h=32 }, + [2] = {x=384,y=128, w=32, h=255}, + [3] = {x=255,y=384, w=128, h=32 }, + } + +for i=1,9 do + local spawnBox = spawnLocs[ rand(1,#spawnLocs) ] + local spawnLoc = {x = rand(spawnBox.x, spawnBox.x + spawnBox.w), + y = rand(spawnBox.y, spawnBox.y + spawnBox.h) } + + spawnGameobject(spawnLoc.x,spawnLoc.y,"animal", {legacyString="Deathwurm"}) +end]]-- + +for i=1,9 do + spawnGameobject(rand(20,235),rand(20,235),"animal", {legacyString="Deathwurm"}) +end \ No newline at end of file diff --git a/scripts/entity/explosions.edb b/scripts/entity/explosions.edb new file mode 100644 index 0000000..c5e3c86 --- /dev/null +++ b/scripts/entity/explosions.edb @@ -0,0 +1,222 @@ +-- EXPLOSIONS + +Entity { + name = "Landmine Explosion", + type = "explosion", + damage = 10, + shrapnelDamage = 5, + pfx = "MidSplosion", + sfx = "Explosion Generic", + spawnClearableAfter = "Large Crater", + secondaryHitName = "Small Explosion", + secondaryHitNumber = 3, + secondaryHitSpawnTimeMin = 2, + secondaryHitSpawnTimeMax = 5, + ignition_percent = 30, +} + +Entity { + name = "Medium Explosion", + type = "explosion", + damage = 8, + shrapnelDamage = 3, + pfx = "MidSplosion", + sfx = "Explosion Generic", + spawnClearableAfter = "Large Crater", + secondaryHitName = "Small Explosion", + secondaryHitNumber = 2, + secondaryHitSpawnTimeMin = 2, + secondaryHitSpawnTimeMax = 4, + ignition_percent = 50, +} + +Entity { + name = "Strange Meteor Explosion", + type = "explosion", + damage = 0, + shrapnelDamage = 0, + pfx = "MidSplosion", + sfx = "Explosion Generic", + spawnClearableAfter = "Large Crater", + ignition_percent = 0, +} + +Entity { + name = "Quaggaroth Explosion", + type = "explosion", + damage = 12, + shrapnelDamage = 2, + pfx = "DustExplosion", + sfx = "Lightning bolt", + spawnClearableAfter = "Large Crater", + secondaryHitName = "Obeliskian Guardian Explosion", + secondaryHitNumber = 13, + secondaryHitSpawnTimeMin = 3, + secondaryHitSpawnTimeMax = 99, + ignition_percent = 10, +} + +Entity { + name = "Obeliskian Guardian Explosion", + type = "explosion", + damage = 12, + shrapnelDamage = 2, + pfx = "MidNade", + sfx = "Lightning bolt", + spawnClearableAfter = "Large Crater", + secondaryHitName = "Small Eldritch Explosion", + secondaryHitNumber = 3, + secondaryHitSpawnTimeMin = 3, + secondaryHitSpawnTimeMax = 8, + ignition_percent = 40, +} + +Entity { + name = "Small Eldritch Explosion", + type = "explosion", + damage = 4, + shrapnelDamage = 2, + pfx = "QuagSmokePuffGiant", + sfx = "Urchin Grenade", + spawnClearableAfter = "Small Crater", +} + +Entity { + name = "Ammo Explosion", + type = "explosion", + damage = 1, + shrapnelDamage = 4, + pfx = "SmallSplosion", + sfx = "Grenade Blast", + spawnClearableAfter = "Small Crater", + secondaryHitName = "Small Explosion", + secondaryHitNumber = 4, + secondaryHitSpawnTimeMin = 2, + secondaryHitSpawnTimeMax = 5, + ignition_percent = 30, +} + +Entity { + name = "Quaggaroth Trample", + type = "explosion", + damage = 3, + shrapnelDamage = 0, + pfx = "DustPuffMassive", + sfx = "Blast (Dredmor)", + ignition_percent = 0, +} + +Entity { + name = "Quaggaroth Beam Hit", + type = "explosion", + damage = 3, + shrapnelDamage = 0, + pfx = "FireObject_Spread", + sfx = "Blast (Dredmor)", + ignition_percent = 20, + secondaryHitName = "Quaggaroth Beam Hit Mini", + secondaryHitNumber = 8, + secondaryHitSpawnTimeMin = 1, + secondaryHitSpawnTimeMax = 9, + spawnRadius = 5, + spawnClearableAfter = "Medium Crater", +} + +Entity { + name = "Quaggaroth Beam Hit Mini", + type = "explosion", + damage = 2, + shrapnelDamage = 0, + pfx = "ElecSparker", + --sfx = "Blast (Dredmor)", + ignition_percent = 10, +} + +Entity { + name = "Small Explosion", + type = "explosion", + damage = 4, + shrapnelDamage = 4, + pfx = "SmallSplosion", + sfx = "Grenade Blast", + ignition_percent = 10, +} + +Entity { + name = "Minum Burst Hit", + type = "explosion", + damage = 1, + shrapnelDamage = 1, + --pfx = "SmallSplosion", + pfx = "BigRichochet", + sfx = "Grenade Blast", + sounds = { "Dirt", "Dirt Thump", "Foliage", "Metal Plate", "stone", "Flesh Pierce"}, + --ignition_percent = 1, + spawnClearableAfter = "Small Crater", + damageTypeOverride="bullet", + shrapnelDamageTypeOverride="bullet", + secondaryHitName = "Minum Tiny Explosion", + secondaryHitNumber = 10, + secondaryHitSpawnTimeMin = 2, + secondaryHitSpawnTimeMax = 9, + spawnRadius = 3, +} + +Entity { + name = "Minum Tiny Explosion", + type = "explosion", + damage = 1, + shrapnelDamage = 1, + damageTypeOverride="bullet", + shrapnelDamageTypeOverride="bullet", + pfx = "DustPuffV1", + sfx = "Grenade Blast", + sounds = { "Dirt", "Dirt Thump", "Foliage", "Metal Plate", "stone", "Flesh Pierce"}, + --ignition_percent = 1, +} + +Entity { + name = "Tiny Explosion", + type = "explosion", + damage = 1, + shrapnelDamage = 1, + pfx = "DustPuffV1", + sfx = "Grenade Blast", + sounds = { "Dirt", "Dirt Thump", "Foliage", "Metal Plate", "stone", "Flesh Pierce"}, + --ignition_percent = 1, +} + +Entity { + name = "Blunderbuss Area Attack", + type = "explosion", + damage = 1, + shrapnelDamage = 2, + damageTypeOverride="bullet", + shrapnelDamageTypeOverride="blunderbuss", + pfx = "SmallRicochet", + spawnClearableAfter = nil, +} + +Entity { + name = "Selenian Field Effect", + type = "explosion", + damage = 2, + damageTypeOverride="selenian", + --shrapnelDamage = 1, + pfx = "FishNade", + spawnClearableAfter = nil, +} + +Entity { + name = "Urchin Grenade Explosion", + type = "explosion", + damage = 5, + shrapnelDamage = 3, + pfx = "FishNade", + sfx = "Urchin Grenade", + spawnClearableAfter = "Small Crater", + --secondaryHitName = "Small Miasma Explosion", + --secondaryHitNumber = 4, + --secondaryHitSpawnTimeMin = 2, + --secondaryHitSpawnTimeMax = 5, +} \ No newline at end of file diff --git a/scripts/entity/factions.edb b/scripts/entity/factions.edb index c99dac5..65be1e0 100644 --- a/scripts/entity/factions.edb +++ b/scripts/entity/factions.edb @@ -1878,7 +1878,7 @@ Entity iconSkin = "ui//commodityIcons.xml", sessionVarName = "bamboo_technology_unlocked", eventName = "discovery_bamboo", - biomes = { desert = true, tropical=true }, + biomes = { desert = true }, }, { name = "opium_technology_desert", diff --git a/scripts/entity/histories.edb b/scripts/entity/histories.edb new file mode 100644 index 0000000..8d637f1 --- /dev/null +++ b/scripts/entity/histories.edb @@ -0,0 +1,3993 @@ +--[[ + + Balance notes: + * happiness: baseline of 50 + Values of 25 are assumed to be baseline (so as to fit with the workshift system). + Higher than 25 is happier than average, lower is distinctly unhappy. + + * anger: baseline of 25 + Values of above 50 will promote destructive behaviour. + Anything from 0-49 will actually inhibit destructive behaviour. + (Yes, it's a blunt instrument right now) + + * despair: baseline of 25 + This combines madness and sadness. + + * afraid: baseline of 25 + TODO : will be connected to concept of combat morale + +--]] + +Entity { + name = "Joined The Colonies", + type="emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN is proud to have joined The Colonies!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN joined The Colonies!", + icon="empire_flag", iconSkin="thoughtIcons.xml", + painting_description = "a painting of a beautiful landscape, viewed from above", + priority = "high", + duration = "long" }, + values = { anger=-5, happiness=10, fear=-5, despair=-5 }, +} + +Entity { + name="SeedMemories", + type="data", + memories = {"Enjoyed Travel", + "Did Not Enjoy Travel", + "Had A Fond Farewell", + "Had A Sad Farewell", + "Fear of Airship Travel", + "Haunted Dreams"} +} + +Entity { + name="CriminalSeedMemories", + type="data", + memories = {"Angry At Being Sent To The Colonies", + "Did Not Enjoy Travel", + "Sad About Their False Sentence", + "Haunted Dreams"} +} + +Entity { + name="BanditSeedMemories1", + type="data", + memories = {"Angry At Being Sent To The Colonies", + "Haunted Dreams", + "Drank a Jar of Brew", + "Sleep Was Interrupted", + "Slept out in the woods", } +} + +Entity { + name="BanditSeedMemories2", + type="data", + memories = { "Feeling Hungry", + "Witnessed Combat", + "Let Off Some Steam", + "Enjoyed Smashing Something Up", + "Damaged", } +} + +Entity { + name = "Enjoyed Travel", + type="emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN enjoyed the journey to The Frontier; what a view!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN enjoyed a scenic journey to The Frontier", + icon="map", iconSkin="thoughtIcons.xml", + painting_description = "a painting of a beautiful landscape, viewed from above", + priority = "medium", duration = "medium" }, + values = {fear=-1,happiness = 3} +} + +Entity { + name = "Did Not Enjoy Travel", + type="emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was airsick on the entire airship journey to The Frontier.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was airsick for the trip to The Frontier and did not enjoy it", + icon="sick", iconSkin="thoughtIcons.xml", + priority = "medium", duration = "medium", + painting_description = "an abstract work on the subject of airsickness"}, + values = {fear=10, happiness=-3} +} + +Entity { + name = "Had A Fond Farewell", + type="emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN bid fond farewell to loved ones before joining The Colonies; it's going to be the adventure of a lifetime!", + icon="happy", iconSkin="thoughtIcons.xml", + priority = "medium", duration = "medium", + painting_description = "a portrait of a family"}, + values = { happiness = 3} +} + +Entity { + name = "Had A Sad Farewell", + type="emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN bid sad farewell to loved ones before leaving for The Colonies.", + icon="sad", iconSkin="thoughtIcons.xml", + priority = "medium", duration = "medium", + painting_description = "a portrait of an unhappy looking family"}, + values = { happiness=-5} +} + +Entity { + name = "Fear of Airship Travel", + type="emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN had an unpleasant journey due to fear of airship travel.", + icon="afraid", iconSkin="thoughtIcons.xml", + priority = "medium", duration = "medium", + painting_description = "a picture of terrifying-looking airships"}, + values = {fear = 5, despair=3, happiness=-5} +} + +Entity { + name = "Haunted Dreams", + type="emotion", + info = {description = "CAPITALIZED_POSSESSIVE_PERSONAL_PRONOUN journey to The Frontier was haunted by strange, dark figures.", + icon="invisible_geometer", iconSkin="thoughtIcons.xml", + priority = "medium", duration = "medium", + painting_description = "a painting of a mysterious dark figure"}, + values = {fear=2, despair=10} +} + + +Entity { + name = "Angry At Being Sent To The Colonies", + type="emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN is really angry about being sent from prison to the Colonies.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was really angry about being sent from prison to the Colonies.", + icon="prisoner_hat", iconSkin="thoughtIcons.xml", + priority = "medium", duration = "long", + painting_description = "a picture of humans locked in combat, spilling blood"}, + values = {anger = 5, fear=2, happiness=-5 } +} +Entity { + name = "Sad About Their False Sentence", + type="emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN is really unhappy about being sent to the Colonies for crimes they didn't commit. Really.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was really unhappy about being sent to the Colonies for crimes they didn't commit. Really.", + icon="prisoner_hat", iconSkin="thoughtIcons.xml", + priority = "medium", duration = "long", + painting_description = "a picture of a sad-looking person behind prison bars"}, + values = {despair=5, happiness=-5} +} + +Entity { + name="Feeling Hungry", + type="emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt hungry recently.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was annoyed about the general lack of food.", + icon="hungry", iconSkin="thoughtIcons.xml", + painting_description = "a still life of a bowl of apples next to an Aurochs steak", + priority = "low", duration = "short"}, + values = {despair= 3, anger = 3,happiness=-3} +} + +Entity { + name="Feeling Really Hungry", + type="emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt really hungry recently and willing to eat uncooked food.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN got really worried about the lack of food.", + icon="hungry", iconSkin="thoughtIcons.xml", + painting_description = "a still life of a bowl of apples next to an Aurochs steak", + priority = "medium", duration = "short"}, + values = { despair= 5, anger = 5, happiness=-5 } +} + +Entity { + name="Feeling Desperately Hungry", + type="emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt so hungry that SUBJECTIVE_PERSONAL_PRONOUN would eat almost anything.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN got so hungry that SUBJECTIVE_PERSONAL_PRONOUN would eat almost anything.", + icon="hungry", iconSkin="thoughtIcons.xml", + painting_description = "a still life of a bowl of apples next to an Aurochs steak", + priority = "medium", duration = "short"}, + values = { despair= 8, anger = 8, happiness=-8} +} + +Entity { + name="Feeling Starvation", + type="emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN is suffering from starvation.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN began to starve to death.", + icon="hungry", iconSkin="thoughtIcons.xml", + painting_description = "a still life of a bowl of apples next to an Aurochs steak", + priority = "high", duration = "short"}, + values = { despair= 10, anger = 10, fear = 10, happiness = -10 } +} + +Entity { + name="Hopelessly Starving", + type="emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN is on the verge of starvation.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN nearly succumbed due to lack of food.", + icon="hungry", iconSkin="thoughtIcons.xml", + painting_description = "a still life of a bowl of apples next to an Aurochs steak", + priority = "high", duration = "short"}, + values = {despair= 15, anger = 15, fear = 15, happiness= -15 } +} + +Entity { + name="Murderously Starving", + type="emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt so hungry that SUBJECTIVE_PERSONAL_PRONOUN would kill for food... WILL kill for food.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt so hungry that SUBJECTIVE_PERSONAL_PRONOUN began to consider cannibalism.", + icon="murder_stab", iconSkin="thoughtIcons.xml", + painting_description = "a still life of a bowl of apples next to an Aurochs steak", + priority = "high", duration = "short"}, + values = {despair=20,anger=15,fear=-10, happiness=-20} +} + +Entity { + name = "Feeling Tired", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt tired recently.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN lamented the sleeping arrangements in the settlement.", + icon="arrow_to_bed", iconSkin="thoughtIcons.xml", + painting_description = "a still life of a bedroom", + priority = "low", duration = "short"}, + values = {happiness=-1, anger = 3} +} +Entity { + name = "Discovered A Weird Artifact", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was the first to discover a weird artifact and SUBJECTIVE_PERSONAL_PRONOUN can't stop thinking about it.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN discovered a weird artifact and can't stop thinking about it.", + icon="despair", iconSkin="thoughtIcons.xml", + painting_description = "a nude figure curled up into a hole dug in the earth", + priority = "medium", duration = "medium"}, + values = {fear = 2, happiness=3, despair=5 } +} + +Entity { + name = "Repressed Eldritch Visions", + type = "emotion", + info = {description = "CAPITALIZED_POSSESSIVE_PERSONAL_PRONOUN mind was filled with maddening visions, but SUBJECTIVE_PERSONAL_PRONOUN managed to overcome them.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN had a bizarre experience with maddening visions, but managed to overcome them.", + icon="eldritch", iconSkin="thoughtIcons.xml", + painting_description = "a still life of a bedroom with drawn curtains", + priority = "low", iconSkin="thoughtIcons.xml", duration = "low"}, + values = {fear = 1, despair=1} +} +Entity { + name = "Embraced Eldritch Visions", + type = "emotion", + info = {description = "CAPITALIZED_POSSESSIVE_PERSONAL_PRONOUN mind was overcome by maddening visions.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was overcome by compelling, maddening visions.", + icon="eldritch", iconSkin="thoughtIcons.xml", + painting_description = "a still life of a bedroom, but everything is inside-out", + priority = "medium", iconSkin="thoughtIcons.xml", duration = "medium"}, + values = {fear = 2, despair=10} +} + + Entity { + name = "Gossiping", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN had an unremarkable chat with OTHER_NAME.", + priority = "low", duration = "short", + icon="people", iconSkin="thoughtIcons.xml", painting_description = "a pair in conversation"}, + values = {happiness = 4, fear = -2} + } + + Entity { + name = "Gossiping (angry response)", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN had an angry exchange with OTHER_NAME.", + priority = "low", duration = "short", + icon="angry", iconSkin="thoughtIcons.xml", painting_description = "a pair in conversation"}, + values = {anger = 5} +} + + Entity { + name = "Gossiping (happy response)", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN had a plesant chat with OTHER_NAME.", + priority = "low", duration = "short", + icon="happy", iconSkin="thoughtIcons.xml", painting_description = "a pair in conversation"}, + values = {happiness = 5} + } + + Entity { + name = "Gossiping (sad response)", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was saddened by a talk with OTHER_NAME.", + priority = "low", duration = "short", + icon="sad", iconSkin="thoughtIcons.xml", painting_description = "a pair in conversation"}, + values = {despair = 5} + } + + Entity { + name = "Gossiping (fear response)", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was frightened by a discussion with OTHER_NAME.", + priority = "low", duration = "short", + icon="fearful", iconSkin="thoughtIcons.xml", painting_description = "a pair in conversation"}, + values = {fear = 5} + } + + Entity { + name = "Gossiping (default response)", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN had a chat.", + priority = "low", duration = "short", + icon="indifferent", iconSkin="thoughtIcons.xml", painting_description = "a pair in conversation"}, + values = {happiness = 2,} + } + +Entity { + name = "Got Poison All Over Face", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN rubbed a poison herb all over POSSESSIVE_PERSONAL_PRONOUN face and feels horrible!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN rubbed a poison herb all over POSSESSIVE_PERSONAL_PRONOUN face and felt horrible.", + priority = "medium", duration = "medium", + painting_description = "a painting of two colonists in each other's faces, shouting red-faced.", + icon = "plant_grass", iconSkin="orderIcons.xml"}, + values = {happiness = -10, despair= 10} +} + +Entity { + name = "Enjoyed Medicinal Face Herbs", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN rubbed a medicinal herb all over POSSESSIVE_PERSONAL_PRONOUN face and feels great!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN rubbed a poison herb all over POSSESSIVE_PERSONAL_PRONOUN face and felt great.", + priority = "medium", duration = "medium", + painting_description = "a painting of two colonists in each other's faces, shouting red-faced.", + icon = "plant_grass", iconSkin="orderIcons.xml"}, + values = {happiness = 10, despair= -10} +} + +Entity { + name = "Rejuvenated by Medicinal Herbs", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN rubbed a medicinal herb all over POSSESSIVE_PERSONAL_PRONOUN face and feels great!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN rubbed a poison herb all over POSSESSIVE_PERSONAL_PRONOUN face and felt great.", + priority = "medium", duration = "medium", + painting_description = "a painting of two colonists in each other's faces, shouting red-faced.", + icon = "plant_grass", iconSkin="orderIcons.xml"}, + values = {happiness = 20, despair= -20} +} + +Entity { + name = "Irritated Rivalry Is Still Occurring", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was highly irritated at the disruptive rivalry between two fellow colonists.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was highly irritated at the disruptive rivalry between two fellow colonists.", + priority = "medium", duration = "medium", + painting_description = "a painting of two colonists in each other's faces, shouting red-faced.", + icon = "anger5", iconSkin="thoughtIcons.xml"}, + values = {happiness = -5, despair= 5, anger = 10} +} + +Entity { + name = "Happy Annoying Rivalry is Resolved", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was glad the irritating rivalry between two fellow colonists was resolved.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was glad the irritating rivalry between two fellow colonists was resolved", + priority = "medium", duration = "medium", + painting_description = "a painting of two colonists turning their backs on each other.", + icon = "happy2", iconSkin="thoughtIcons.xml"}, + values = {happiness = 5, anger = -5} +} + +Entity { + name = "Beaten Over Rivalry", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was beaten into submission by OTHER_NAME over a rivalry!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was beaten into submission by OTHER_NAME over a rivalry.", + priority = "high", duration = "medium", + painting_description = "a painting of two colonists under a giant boot.", + icon = "anger5", iconSkin="thoughtIcons.xml"}, + values = {happiness = -10, despair= 10, fear = 5} +} + +Entity { + name = "Had a Drink Over Rivalry", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN calmed down about POSSESSIVE_PERSONAL_PRONOUN rivalry with OTHER_NAME after having a good drink.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN calmed down about POSSESSIVE_PERSONAL_PRONOUN rivalry with OTHER_NAME after having a good drink.", + priority = "medium", duration = "medium", + painting_description = "a painting of two people glaring at each other over a beer mug.", + icon = "happy3", iconSkin="thoughtIcons.xml"}, + values = {happiness = 5, despair= -10, anger = -10} +} + +Entity { + name = "Had a Bar Fight", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN got into a bar fight over POSSESSIVE_PERSONAL_PRONOUN rivalry with OTHER_NAME.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN got into a bar fight over POSSESSIVE_PERSONAL_PRONOUN rivalry with OTHER_NAME.", + priority = "high", duration = "medium", + painting_description = "a painting of a shattered beer mug.", + icon = "anger5", iconSkin="thoughtIcons.xml"}, + values = {anger = 10} +} + +Entity { + name = "Counseled Over Rivalry By Vicar", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was counseled by a vicar and felt an easing of POSSESSIVE_PERSONAL_PRONOUN rivalry with OTHER_NAME.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was counseled by a vicar and felt an easing of POSSESSIVE_PERSONAL_PRONOUN rivalry with OTHER_NAME.", + priority = "medium", duration = "medium", + painting_description = "an abstract oil representation of reconciliation.", + icon = "happy5", iconSkin="thoughtIcons.xml"}, + values = {happiness = 5, despair=-15, anger = -5} +} + +Entity { + name = "Brought To Shame By Rousing Colony Leader Speech", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN listened to an incredible speed by the Colony Leader and felt shame over POSSESSIVE_PERSONAL_PRONOUN rivalry with OTHER_NAME.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN listened to an incredible speed by the Colony Leader and felt shame over POSSESSIVE_PERSONAL_PRONOUN rivalry with OTHER_NAME.", + priority = "high", duration = "medium", + painting_description = "a shining beacon on the horizon.", + icon = "happy5", iconSkin="thoughtIcons.xml"}, + values = {happiness = 10, despair=-20, anger = -20} +} + +Entity { + name = "Irritated by Colony Leader Speech", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was forced to listen to a grumpy speech by the colony leader and hated every moment of it.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was forced to listen to a grumpy speech by the colony leader and hated every moment of it.", + priority = "medium", duration = "medium", + painting_description = "a shattered beacon on the horizon.", + icon = "anger5", iconSkin="thoughtIcons.xml"}, + values = {happiness = -5, anger = 5} +} + +Entity { + name = "Refused Orders to Protect Friends", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN refused the Colony Manager's orders to protect POSSESSIVE_PERSONAL_PRONOUN friend OTHER_NAME.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN refused the Colony Manager's orders to protect POSSESSIVE_PERSONAL_PRONOUN friend OTHER_NAME.", + priority = "high", duration = "medium", + painting_description = "a painting of a soldier walking into the darkness.", + icon = "anger5", iconSkin="thoughtIcons.xml"}, + values = {happiness = -5, despair= 10, fear=15} +} + + +Entity { + name = "Saw Frontier Justice", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw a gruesome and horrifying act of frontier justice recently!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw a gruesome and horrifying act of frontier justice!", + priority = "high", duration = "medium", + painting_description = "a painting of a man being chased, with soldiers behind him firing guns", + icon = "frontier_justice", iconSkin="thoughtIcons.xml"}, + values = {happiness = -5, despair= 10, anger = 5, fear=5} +} +Entity { + name = "Witnessed the Madness of Frontier Justice", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN witnessed the harsh and barbaric 'justice' of the Frontier as OTHER_NAME was executed and is horrified at the brutality.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN witnessed the harsh and barbaric 'justice' of the Frontier as OTHER_NAME was executed.", + priority="high", duration="medium", + painting_description = "a painting of a man being gunned down by armed soldiers of the Empire", + icon="frontier_justice", iconSkin="thoughtIcons.xml" }, + values = {happiness=-10, despair= 15, anger =5} +} +Entity { + name= "Witnessed Frontier Justice And Approved", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN witnessed the harsh - but necessary - justice of the Frontier as OTHER_NAME was executed.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN witnessed the harsh - but necessary - justice of the Frontier as OTHER_NAME was executed.", + priority="high", duration="short", + painting_description = "a painting of Criminal Scum being gunned down by their Betters", + icon="frontier_justice", iconSkin="thoughtIcons.xml"}, + values = { happiness=3, fear=-5} + } +Entity { + name = "Saw a cannibal", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw a dead body get turned into food!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw a dead body get turned into food!", + priority = "high", duration = "short", + painting_description = "a painting of one overseer eating another overseer", + icon = "cannibalism", iconSkin="thoughtIcons.xml"}, + values = {happiness = -10, despair= 10, fear=10} +} + +Entity { + name = "Saw the corpse of a loved one", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw the dead body of a loved one recently!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw the dead body of a loved one!", + priority = "high", duration = "long", + painting_description = "a painting of a weeping lover", + icon="heart_broken"}, + values = {happiness = -10, despair= 10, anger = 5,fear=2} +} + +Entity { + name = "Saw the rotted corpse of a loved one", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw the grisly rotted corpse of a loved one recently!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw the grisly rotted corpse of a loved one lying unburied!", + priority = "high", duration = "long", + painting_description = "a painting of a weeping lover", + icon="heart_broken"}, + values = {happiness = -15, despair= 15, anger = 10,fear=5} +} + +Entity { + name = "Saw a rotted corpse", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was greatly upset by seeing the rotted corpse of OTHER_NAME.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was greatly upset by seeing the rotted corpse of OTHER_NAME.", + priority = "high", duration = "short", + painting_description = "a painting of a rotted corpse, crawling with flies and maggots", + icon="skull"}, + values = {happiness = -5, despair= 10, fear=3} +} + +Entity { + name = "Saw a corpse", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was upset at seeing the unburied corpse of OTHER_NAME.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was upset at seeing the unburied corpse of OTHER_NAME.", + priority = "high", + duration = "medium", + painting_descripstion = "a painting of a corpse in repose", + icon="skull", + iconSkin="thoughtIcons.xml"}, + values = {happiness = -3, despair= 5, anger = 1, fear=3} +} + +Entity { + name = "Saw a corpse and liked it", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw a dead body and found it fascinating.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw a dead body and found it fascinating.", + priority = "high", + duration = "medium", + painting_description = "a painting of a corpse in repose", + icon="skull", + iconSkin="thoughtIcons.xml"}, + values = {happiness = 6, despair=15 } +} + +Entity { + name = "Slept due to Despair", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN drank to relieve their depression.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN drank to relieve their depression.", + painting_description = "a picture of a crying man in a bar", + icon="bed", + iconSkin="thoughtIcons.xml", + duration="short", + priority="high"}, + values = {despair= -1 } +} + +Entity { + name = "Attended a Party", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN attended a party recently.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN attended a party.", + priority = "medium", duration = "short", + painting_description = "a pleasing picture of a jolly party", + icon="placeholder", + iconSkin="thoughtIcons.xml"}, + values = {happiness = 7} +} + +Entity { + name = "Consumed Human Flesh", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN ate human flesh recently.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN ate human flesh", + priority = "high", duration = "medium", + painting_description = "a self-portrait of the artist with their hands and mouth covered in blood", + icon="cannibalism", + iconSkin="thoughtIcons.xml"}, + values = { despair = 15, happiness=-5} +} + +Entity { + name = "Consumed Delicious Human Flesh", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN ate some tasty human flesh recently.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN ate some tasty human flesh", + priority = "low", duration = "medium", + painting_description = "a self-portrait of the artist chomping down on a delicious human", + icon="cannibalism", + iconSkin="thoughtIcons.xml"}, + values = {happiness = 5, despair=20, } +} +Entity { + name = "Ate Fishperson Flesh", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN ate fishperson flesh recently. Creepy.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN ate fishperson flesh.", + priority = "medium", + duration = "medium", + painting_description = "a picture of a scaly chunk of meat", + icon="fishperson", + iconSkin="thoughtIcons.xml"}, + values = { despair= 10} +} + +Entity { + name = "Ate Exotic Caviar", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN ate some Exotic Caviar! Mm-mm!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN ate some Exotic Caviar.", + priority = "medium", + duration = "medium", + painting_description = "a picture of a scaly chunk of meat", + icon="food_plate", + iconSkin="thoughtIcons.xml"}, + values = {happiness = 4, fear=0, anger = 0, despair= 0} +} + +Entity { + name = "Ate Something Exotic", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN ate some Exotic Food! How.. Strange.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN ate some Exotic Food. CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN feels eerie.", + priority = "medium", + duration = "medium", + painting_description = "a picture of a scaly chunk of meat", + icon="food_plate", + iconSkin="thoughtIcons.xml"}, + values = {happiness = 4, despair= 5} +} +Entity { + name = "Ate Exotic Caviar (fishy)", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN ate some Exotic Caviar. It felt ... unsettling and sad.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN sadly ate some Exotic Caviar.", + priority = "medium", + duration = "medium", + painting_description = "a picture of a scaly chunk of meat", + icon="food_plate", + iconSkin="thoughtIcons.xml"}, + values = { happiness=2, fear=0, anger = 0, despair= 5} +} +Entity { + name = "Ate Fishperson Flesh (fishy)", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was forced to consume fishperson flesh recently and was horrified!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was forced to consume fishperson flesh and was horrified!", + priority = "medium", + duration = "medium", + painting_description = "a picture of a bloody plate", + icon="food_plate", + iconSkin="thoughtIcons.xml"}, + values = {happiness=-5, fear=0, anger = 0, despair= 15} +} + +Entity { + name = "Ate something (Epicurean)", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN throughly enjoyed eating something recently.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN thoroughly enjoyed a culinary delight.", + priority = "low", duration = "short", + painting_description = "a picture of a gourmand", + icon="food_plate"}, + values = {happiness = 3, fear=0, anger = 0, despair= 0} +} + +Entity { + name = "Ate something tasty (Epicurean)", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN thoroughly enjoyed eating a wonderfully cooked OTHER_NAME recently. A delight! Delicious!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN thoroughly enjoyed eating a wonderfully cooked OTHER_NAME.", + priority = "low", duration = "short", + painting_description = "a picture of a pleased gourmand", + icon="food_plate"}, + values = {happiness = 6, fear=0, anger = 0, despair= 0} +} + +Entity { + name = "Ate something delicious (Epicurean)", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN ate a lovely and sophisticated OTHER_NAME recently. Truly piquant!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN ate a lovely and sophisticated OTHER_NAME. Truly piquant!", + priority = "low", + duration = "short", + painting_description = "a picture of a decadent feast", + icon="food_plate", + iconSkin="thoughtIcons.xml" }, + values = {happiness = 8, fear=0, anger = 0, despair= 0} +} + +Entity { + name = "Ate something unsatisfying (Epicurean)", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN ate a OTHER_NAME recently. The food was, frankly, below POSSESSIVE_PERSONAL_PRONOUN refined tastes.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN ate a OTHER_NAME. The food was somewhat below their refined palate.", + priority = "low", + duration = "short", + painting_description = "a picture of a moldy toast", + icon="food_plate", + iconSkin="thoughtIcons.xml" }, + values = {happiness = 2, fear=0, anger = 0, despair= 0} +} + +Entity { + name = "Ate something nasty (Epicurean)", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN ate a OTHER_NAME recently and found it appallingly undercooked.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN ate a OTHER_NAME and found it appallingly undercooked.", + priority = "low", + duration = "short", + painting_description = "a picture of a fat person frowning at a banquet", + icon="food_plate"}, + values = {happiness = 0, fear=0, anger = 0, despair= 4} +} + +Entity { + name = "Ate something", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN ate a OTHER_NAME recently.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN ate a OTHER_NAME.", + priority = "low", + duration = "short", + painting_description = "a picture of a clean plate", + icon="food_plate", + iconSkin="thoughtIcons.xml"}, + values = {happiness = 3, fear=0, anger = 0, despair= 0} +} +Entity { + name = "Ate something tasty", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN thoroughly enjoyed eating a wonderfully cooked OTHER_NAME recently.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN thoroughly enjoyed eating a wonderfully cooked OTHER_NAME.", + priority = "low", + duration = "short", + painting_description = "a picture of a delicious feast", + icon="food_plate", + iconSkin="thoughtIcons.xml" }, + values = {happiness = 4, fear=0, anger = 0, despair= 0} +} + +Entity { + name = "Ate Delicious Mushrooms", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN thoroughly enjoyed eating a mushroom-based meal recently, being a mushroom lover. Mm-mm!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN thoroughly enjoyed eating a mushroom-based meal, being a mushroom lover.", + priority = "low", + duration = "short", + painting_description = "a picture of a delicious shroomy feast", + icon="raw_fungus_category", + iconSkin="commodityIcons.xml" }, + values = {happiness = 8, fear=0, anger = 0, despair= 0} +} +Entity { + name = "Ate something delicious", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN ate a thoroughly decadent OTHER_NAME recently. Exquisite!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN ate a thoroughly decadent OTHER_NAME. Exquisite!", + priority = "low", + duration = "short", + painting_description = "a picture of a decadent feast", + icon="food_plate", + iconSkin="thoughtIcons.xml" }, + values = {happiness = 6, fear=0, anger = 0, despair= 0} +} +Entity { + name = "Ate something unsatisfying", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN ate a OTHER_NAME recently. The food was, frankly, below POSSESSIVE_PERSONAL_PRONOUN refined tastes.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN ate a OTHER_NAME. The food was somewhat below their refined palate.", + priority = "low", + duration = "short", + painting_description = "a picture of a moldy toast", + icon="food_plate", + iconSkin="thoughtIcons.xml" }, + values = {happiness = 1, fear=0, anger = 0, despair= 0} +} +Entity { + name = "Ate something nasty", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN ate a raw OTHER_NAME. Although edible, it was unpleasant.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN ate a raw OTHER_NAME; although edible, it was unpleasant.", + priority = "low", duration = "short", + painting_description = "a picture of some maggots", + icon="food_plate", iconSkin="thoughtIcons.xml"}, + values = {happiness = 1, fear=0, anger = 0, despair= 1} +} + + + + +-- Sleep memories + + Entity { + name = "Sleep Was Interrupted", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was quite irate at having POSSESSIVE_PERSONAL_PRONOUN sleep disturbed.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was quite irate at having POSSESSIVE_PERSONAL_PRONOUN sleep disturbed.", + icon="angry", iconSkin="thoughtIcons.xml", + duration="short", + priority="low" }, + values = { happiness=-10, anger =6, despair=2, fear = 4 } + } + + Entity { + name = "Slept Outside", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN had to sleep outside recently.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was unhappy about having to sleep outside.", + priority = "medium", + duration = "medium", + painting_description = "a picture of a campsite", + icon="jobtree"}, + values = { happiness= -10, despair= 5, fear=5, anger = 5 } + } + + Entity { + name = "Slept On The Floor", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN is discontented due to sleeping on a floor.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN is discontended due to sleeping on a floor.", + priority = "medium", + duration = "medium", + painting_description = "a picture of a house", + icon="jobtree"}, + values = { happiness= -4, } + } + + Entity { + name = "Slept On The Floor (overseer)", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN is very upset due to sleeping on a floor like a common Labourer.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN is very upset due to sleeping on a floor like a common Labourer.", + priority = "medium", + duration = "medium", + painting_description = "a picture of a house", + icon="jobtree"}, + values = { happiness= -8, anger = 2 } + } + + Entity { + name = "Slept On The Floor (aristocrat)", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN is extremely upset due to sleeping on the floor like an animal.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN is extremely upset due to sleeping on the floor like an animal.", + priority = "medium", + duration = "medium", + painting_description = "a picture of a house", + icon="jobtree"}, + values = { happiness= -12, despair= 4, anger=4 } + } + + Entity { + name = "Slept Appallingly", --"Sleep Tier -6", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN slept Appallingly due to the dismal quality of the accommodations.", + priority = "medium", duration = "short", + painting_description = "a picture of the inside of a house", + icon="bed", iconSkin="thoughtIcons.xml"}, + values = {happiness = -6, despair= 3, anger = 3} + } + + Entity { + name = "Slept Badly", --"Sleep Tier -4", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN slept Badly due to the low quality of the accommodations.", + priority = "low", duration = "short", + painting_description = "a picture of the inside of a house", + icon="bed", iconSkin="thoughtIcons.xml"}, + values = {happiness = -4, despair= 1, anger = 1} + } + + Entity { + name = "Slept Poorly", --"Sleep Tier -2", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN slept Poorly due to the unsatisfactory quality of the accommodations.", + priority = "low", duration = "short", + painting_description = "a picture of the inside of a house", + icon="bed", iconSkin="thoughtIcons.xml"}, + values = {happiness = -2} + } + + Entity { + name = "Slept", --"Sleep Tier 0", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN had a satisfactory sleep.", + priority = "low", duration = "short", + painting_description = "a picture of the inside of a house", + icon="bed", iconSkin="thoughtIcons.xml"}, + values = {happiness = 2, despair= 0, anger = 0} + } + + Entity { + name = "Slept Well", --"Sleep Tier 2", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN slept well in decent accommodations.", + priority = "low", duration = "short", + painting_description = "a picture of the inside of a house", + icon="bed", iconSkin="thoughtIcons.xml"}, + values = {happiness = 4, despair= 0, anger = 0} + } + + Entity { + name = "Slept Comfortably", -- "Sleep Tier 4", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN slept comfortably in quality accommodations.", + priority = "medium", duration = "short", + painting_description = "a picture of the inside of a house", + icon="bed", iconSkin="thoughtIcons.xml"}, + values = {happiness = 5, despair= 0, anger = 0} + } + + Entity { + name = "Slept Lavishly", -- "Sleep Tier 6", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN slept lavishly in wonderful accommodations.", + priority = "medium", duration = "short", + painting_description = "a picture of the inside of a house", + icon="bed", iconSkin="thoughtIcons.xml"}, + values = {happiness = 6, despair= 0, anger = 0} + } + + + + +Entity { + name = "Fishpeople Menacing", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was menaced by fishpeople recently!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was menaced by fishpeople, and it was horrible.", + priority = "medium", duration = "short", + painting_description = "a picture of a terrifying fish creature", + icon = "fishperson_angry", iconSkin="thoughtIcons.xml" }, + values = {fear=3,happiness=-1,despair=3} +} +Entity { + name = "Fishpeople Menacing (fishy)", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was menaced by POSSESSIVE_PERSONAL_PRONOUN friends, the fishpeople. How terribly upsetting!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was menaced by POSSESSIVE_PERSONAL_PRONOUN friends, the fishpeople.", + priority = "medium", duration = "short", + painting_description = "a picture of a terrifying fish creature", + icon = "fishperson_angry", iconSkin="thoughtIcons.xml" }, + values = {despair=5,happiness=-2} +} +Entity { + name = "Fishpeople Intimidation Sad", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was saddened by an intimidating fishperson.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was saddened by an intimidating fishperson.", + priority = "medium", duration = "short", + painting_description = "a sad picture of a terrifying fish creature", + icon = "fishperson_angry", iconSkin="thoughtIcons.xml" }, + values = {fear=2,despair=3,happiness=1} +} +Entity { + name = "Fishpeople Intimidation Angry", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was angered by a fishperson's ferocious display.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was angered by a fishperson.", + priority = "medium", duration = "short", + painting_description = "a picture of an unpleasant fish creature covered in blood", + icon = "fishperson_angry", iconSkin="thoughtIcons.xml" }, + values = {fear=2,anger=3,happiness=1, despair=3} +} +Entity { + name = "Fishpeople Inimidation Unpleasant", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was intimidated by a fishperson's ferocious display.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was intimidated by a fishperson.", + priority = "medium", duration = "short", + painting_description = "a picture of an unpleasant fish creature", + icon = "fishperson_angry", iconSkin="thoughtIcons.xml" }, + values = {fear=1,anger=1,happiness=1,despair=3} +} + +Entity { + name = "Damaged", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was hurt recently.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was injured.", + priority = "medium", duration = "short", + painting_description = "an abstract work meant to signify pain and suffering", + icon="affliction", iconSkin="thoughtIcons.xml"}, + values = {fear = 5, anger = 2,happiness=-2} +} + +Entity { + name = "Healed", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was healed by a Barber. Ow!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was healed by a Barber. Ow!", + priority = "medium", duration = "short", + painting_description = "a bit of a bloody mess", + icon="bandage_and_blood_drop", iconSkin="thoughtIcons.xml"}, + values = { fear = 5, anger = 3, happiness=-4}, +} + +Entity { + name = "Healed With Tonic", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was healed by a Barber and given a healthful Sulphur Tonic. Tip-top!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was healed by a Barber and given a healthful Sulphur Tonic. Tip-top!", + priority = "medium", duration = "short", + painting_description = "a bit of a bloody mess", + icon="bandage_and_blood_drop", iconSkin="thoughtIcons.xml"}, + values = { fear = -5, anger = -5, happiness=5}, +} + +Entity { + name = "Confusing Fishperson Gibberish", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was confused and a little scared due to being gibbered at by a Fishperson.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was confused and frightened by a fishperson.", + priority = "medium", duration = "short", + painting_description = "a picture of a terrifying fish creature", + icon = "fishperson_surprised", iconSkin="thoughtIcons.xml" }, + values = {fear=1,despair=5} +} +Entity { + name = "Frightening Fishperson Gibberish", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was frightened by the incomprehensible gibberings of a Fishperson!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was frightened by a fishperson.", + priority = "medium", duration = "short", + painting_description = "a picture of a terrifying fish creature", + icon = "fishperson", iconSkin="thoughtIcons.xml" }, + values = {fear=2,despair=5} +} +Entity { + name = "Enthralling Fishperson Gibberish", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was enthralled by sublime but incomprehensible Fishperson speech.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was enthralled by a fishperson.", + priority = "medium", duration = "short", + painting_description = "a picture of a terrifying fish creature", + icon = "fishperson_smile", iconSkin="thoughtIcons.xml" }, + values = {happiness=5,despair=10} +} + +Entity { + name = "Enthralled by the Call of the Sea", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was enthralled by hearing the Call of the Sea.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was enthralled by hearing the Call of the Sea", + priority = "medium", duration = "short", + painting_description = "a picture of a terrifying fish creature", + icon = "sea", iconSkin="thoughtIcons.xml" }, + values = {happiness=7,despair=16} +} + +Entity { + name = "Annoyed by the Call of the Sea", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was annoyed by hearing OTHER_NAME rant about the Call of the Sea.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was annoyed by OTHER_NAME ranting about the Call of the Sea.", + priority = "medium", duration = "short", + painting_description = "a picture of a terrifying fish creature", + icon = "sea", iconSkin="thoughtIcons.xml" }, + values = {anger=1,despair=5} +} + +Entity { + name = "Drank a Bottle of Laudanum", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN drank an entire bottle of laudanum and feels very much better now, thank you.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN drank an entire bottle of laudanum and felt much better.", + --icon="laudanum_bottle", iconSkin="commodityIcons.xml", -- DOESNT WORK YET + icon="despair1", + iconSkin="thoughtIcons.xml", + painting_description = "a plain white square on a plain back background, with MINISTRY-APPROVED ARTWORK stamped on it in large red letters", + duration="short", priority="medium" }, + values = {happiness = 10, fear=-10, anger =-30, despair= -10 } +} +Entity { + name = "Drank Sulphur Tonic", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN drank an entire bottle of sulphur tonic and swears that SUBJECTIVE_PERSONAL_PRONOUN feels much better.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN drank an entire bottle of sulphur tonic and swears SUBJECTIVE_PERSONAL_PRONOUN felt much better.", + --icon="sulphur_tonic_bottle", iconSkin="commodityIcons.xml",-- DOESNT WORK YET + icon="despair1", + iconSkin="thoughtIcons.xml", + painting_description = "a plain white square on a plain back background, with MINISTRY-APPROVED ARTWORK stamped on it in large red letters", + duration="short", + priority="medium" }, + values = {happiness = 5, fear=-3, anger =-3, despair= -10} +} + +Entity { + name = "Drank a Bottle of Spirits", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN drank an entire bottle of spirits.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN drank an entire bottle of spirits.", + painting_description = "sort of hard to make out", + --icon="whisky_bottle", iconSkin="commodityIcons.xml",-- doesn't work yet!! + icon="beer_mug", + iconSkin="thoughtIcons.xml", + duration="short", + priority="medium" }, + values = {happiness = 8, fear=-5, anger =-8, despair= -2} +} + +Entity { + name = "Enjoyed a Bottle of Spirits", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN downed a bottle of spirits and was quite pleased. Another!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN downed a bottle of spirits and was quite pleased.", + painting_description = "sort of hard to make out", + --icon="whisky_bottle", iconSkin="commodityIcons.xml",-- doesn't work yet!! + icon="beer_mug", + iconSkin="thoughtIcons.xml", + duration="short", + priority="medium" }, + values = {happiness = 12, fear=-5, anger =-12, despair= -2} +} + +Entity { + name = "Drank a Jar of Brew", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN had a nice jar of brewed booze.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN had a nice jar of brewed booze.", + painting_description = "a picture of a Stahlmarkian Beer-Chamber", + icon="beer_mug", + iconSkin="thoughtIcons.xml", + duration="short", + priority="low"}, + values = {happiness = 6, fear=-3, anger =-5, despair= -3} +} + +Entity { + name = "Enjoyed a Jar of Brew", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN chugged down a jar of brewed booze. Another!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN chugged down a jar of brewed booze.", + painting_description = "a picture of a Stahlmarkian Beer-Chamber", + icon="beer_mug", + iconSkin="thoughtIcons.xml", + duration="short", + priority="low"}, + values = {happiness = 8, fear=-3, anger =-8, despair= -3} +} + +Entity { + name = "Drank Spirits In Despair", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN drank an entire bottle of spirits in intense Despair. CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN feels a lot better.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN drank a bottle of spirits in Despair. CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt a bit better.", + painting_description = "sort of hard to make out", + --icon="whisky_bottle", iconSkin="commodityIcons.xml",-- doesn't work yet!! + icon="beer_mug", + iconSkin="thoughtIcons.xml", + duration="medium", + priority="high" }, + values = {fear=-5, anger =2, despair= -20} +} + +Entity { + name = "Drank a Jar of Brew In Despair", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN drank a jar of brewed booze in intense Despair. CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN feels a bit better.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN drank a jar of brewed booze in Despair. CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt a bit better.", + painting_description = "a picture of a Stahlmarkian Beer-Chamber", + icon="beer_mug", + iconSkin="thoughtIcons.xml", + duration="medium", + priority="high"}, + values = {fear=-3, anger =-1, despair= -10} +} + +Entity { + name = "Drank Laudanum In Despair", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN drank an entire bottle of laudanum in Despair and feels much now, thank you.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN drank an entire bottle of laudanum in Despair and felt much better.", + --icon="laudanum_bottle", iconSkin="commodityIcons.xml", -- DOESNT WORK YET + icon="despair1", + iconSkin="thoughtIcons.xml", + painting_description = "a plain white square on a plain back background, with MINISTRY-APPROVED ARTWORK stamped on it in large red letters", + duration="medium", priority="high" }, + values = { fear=-10, anger =-30, despair= -30 } +} + +Entity { + name = "Was Comforted By Priest", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN talked to a priest about their intense despair and felt comforted.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN talked to a priest about their intense despair and felt comforted.", + icon="despair1", + iconSkin="thoughtIcons.xml", + painting_description = "a distant light in a deep, deep darkness", + duration="medium", priority="high" }, + values = {happiness = 5, fear=-5, anger =-5, despair= -20 } +} + +Entity { + name = "Had a Cup of Tea", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN had a nice cup of tea.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN had a nice cup of tea.", + painting_description = "a picture of Her Majesty the Queen with a cup of tea", + icon="cup_of_tea", + iconSkin="thoughtIcons.xml", + duration="short", + priority="low"}, + values = {happiness = 3, fear=-1, anger =-1, despair= -1} +} + +Entity { + name = "Had a Cuppa", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN had a slightly depressing cup of tea at home, alone, without sugar.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN had a slightly depressing cup of tea at home.", + painting_description = "a picture of Her Majesty the Queen with a cup of bland tea", + icon="cup_of_tea", + iconSkin="thoughtIcons.xml", + duration="short", + priority="low"}, + values = {happiness=1, despair=2} +} + +Entity { + name = "Drank at the Pub", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN had a pint at the local pub. Good times!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN had a pint at the local pub.", + painting_description = "a picture of a Stahlmarkian Beer-Chamber", + icon="beer_mug", iconSkin="thoughtIcons.xml", + duration="short", priority="low"}, + values = {fear=-3, despair= -2,happiness=5, anger =-7,} +} + +Entity { + name = "Drank a Non-Alcoholic Drink", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN had a refreshing beverage; it was nice.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN had a refreshing beverage.", + painting_description = "a picture of a glass of cabbage juice", + icon="beer_mug", iconSkin="thoughtIcons.xml", + duration="short", priority="low" }, + values = {anger = -3} +} + +Entity { + name = "Drank due to Despair", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN drank to relieve their depression.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN drank to relieve their despair.", + painting_description = "a picture of a crying man in a bar", + icon="beer_mug", iconSkin="thoughtIcons.xml", + duration="short", priority="low"}, + values = { fear=-2, despair= -3,happiness=2, anger=-5 } +} + +Entity { + name = "Cried over a Gravestone", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt despair at the sight of a colonist's gravestone.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt despair at the sight of a colonist's gravestone.", + painting_description = "a painting of a crying statue", + icon="despair", iconSkin="thoughtIcons.xml", duration="short", priority="low"}, + values = { despair= 2, happiness=-2 } +} + +Entity { + name = "Cried over a Body", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt despair at the sight of a colonist's dead body.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt despair at the sight of a colonist's dead body.", + painting_description = "a painting of a crying statue", + icon="despair", iconSkin="thoughtIcons.xml", duration="short", priority="low"}, + values = { despair= 2, happiness=-2 } +} + +Entity { + name = "Enjoyed Paperwork", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN had an excellent time filling out paperwork. Now this is what being a bureaucrat is all about!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN had an excellent time filling out paperwork.", + painting_description = "a picture of a filing cabinet", + icon="open_book", iconSkin="thoughtIcons.xml", duration="short", priority="low" }, + values = {happiness = 3, anger =-1, fear=-1 } +} + +Entity { + name = "Begrudgingly Did Paperwork", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN reluctantly did the paperwork required of OBJECTIVE_PERSONAL_PRONOUN, grumbling the entire time.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN reluctantly did paperwork.", + painting_description = "a picture of a disorganized filing cabinet", + icon="open_book", iconSkin="thoughtIcons.xml", duration="short", priority="low",}, + values = { anger =1,happiness=-1 } +} + +Entity { + name = "Read Poetry", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN gave a public reading of POSSESSIVE_PERSONAL_PRONOUN most recent poem.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN gave a public reading of POSSESSIVE_PERSONAL_PRONOUN most recent poem.", + painting_description = "a picture of a poet reclining upon a Fainting-Couch, surrounded by admiring followers and Sufficient Opium", + icon="open_book", iconSkin="thoughtIcons.xml",duration="medium", priority="low" }, + values = { happiness = 3 } +} + +Entity { + name = "Butchered A Human Corpse", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was forced to butcher a human corpse for sustenance!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was forced to butcher a human corpse for food and felt terrible about it!", + painting_description = "a ghastly self-portrait of the artist cutting up a human body with a butcher knife", + icon="cannibalism", + iconSkin="thoughtIcons.xml", + duration="medium", + priority="high" }, + values = { fear=3, despair=5,happiness=-2} +} +Entity { + name = "Butchered A Fishperson Corpse", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN butchered a fishperson corpse for sustenance!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN butchered a fishperson corpse for food!", + painting_description = "a self-portrait of the artist cutting up a fishperson body with a butcher knife", + icon="fishperson", + iconSkin="thoughtIcons.xml", + duration="medium", + priority="high" }, + values = { fear=2,despair=2} +} +Entity { + name = "Butchered A Fishperson Corpse (fishy)", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was forced to butcher a fishperson corpse for sustenance!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was forced to butcher a fishperson corpse for food and felt terrible about it!", + painting_description = "a ghastly abstract of the artist's blood blending together with that of a fishperson", + icon="fishperson", + iconSkin="thoughtIcons.xml", + duration="long", + priority="high" }, + values = {fear=4, anger=2, happiness=1, despair=5} +} +Entity { + name = "Witnessed Butchery of a Human Corpse", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN watched in horror as a human corpse was butchered!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN watched a human corpse be butchered for food.", + painting_description = "a ghastly picture of a colonist cutting up a human body with a butcher knife", + icon="cannibalism", + iconSkin="thoughtIcons.xml", + duration="medium", + priority="high"}, + values = { fear=4, despair=5,happiness=-3} +} + +Entity { + name = "Witnessed Fishperson Butcher a Human Corpse", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN watched in horror as a human corpse was butchered by a fishperson!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN watched a fishperson butcher a human corpse and was horrified!", + painting_description = "a ghastly picture of a fishperson cutting up a human body with a butcher knife", + icon="fishperson_bloody", + iconSkin="thoughtIcons.xml", + duration="medium", + priority="high"}, + values = { fear=4, anger=3 ,happiness=1,despair=3} +} +Entity { + name = "Witnessed Fishperson Butcher a Human Corpse (morbid)", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN watched in fascination as a human corpse was butchered by a fishperson!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN watched a fishperson butcher a human corpse and was fascinated.", + painting_description = "a ghastly picture of a fishperson cutting up a human body with a butcher knife", + icon="fishperson_bloody", + iconSkin="thoughtIcons.xml", + duration="medium", + priority="medium"}, + values = { happiness=5, despair=10, } +} +Entity { + name = "Witnessed Butchery of a Fishperson Corpse", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was creeped out by the butchery of a Fishperson.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was creeped out by the butchery of a Fishperson.", + painting_description = "a ghastly picture of a colonist cutting up a fishperson body with a butcher knife", + icon="fishperson", iconSkin="thoughtIcons.xml", duration="medium", priority="medium"}, + values = { fear=2,happiness=-1,despair=1} +} +Entity { + name = "Witnessed Butchery of a Fishperson Corpse (fishy)", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was horrified out by the butchery of a Fishperson!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was horrified by the butchery of a Fishperson.", + painting_description = "a ghastly picture of a colonist cutting up a fishperson with a human face", + icon="fishperson", iconSkin="thoughtIcons.xml", duration="long", priority="high"}, + values = { fear=3, anger=2,happiness=-2,despair=10} +} +Entity { + name = "Witnessed Consumption of Human Meat", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN watched in horror as the cannibal OTHER_NAME ate human flesh!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN witnessed OTHER_NAME engage in cannibalism!", + painting_description = "a picture of a well-dressed man about to eat a very large pot roast", + icon="cannibalism", + iconSkin="thoughtIcons.xml", + duration="medium", + priority="high" }, + values = {fear=5,happiness=-5,despair=5}, +} +Entity { + name= "Horrified By Fishperson Corpse", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw the horrible corpse of a fishy creature! (OTHER_NAME).", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw the horrible corpse of a fishy creature.", + painting_description = "a watercolor depiction of a horrific fishperson corpse", + icon="fishperson_dead", iconSkin="thoughtIcons.xml", duration="short", priority="medium"}, + values = {fear=2, happiness =-3, despair=1} +} +Entity { + name = "Fascinated By Fishperson Corpse", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw a horrible fishy creature's corpse. How interesting!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw a horrible fishy creature's corpse.", + painting_description = "an abstract fresco about what life would be like under the ocean", + icon="fishperson_dead", iconSkin="thoughtIcons.xml", duration="short", priority="medium" }, + values = {happiness = 5, despair=5} +} +Entity { + name = "Horrified By A Fishperson", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw a horrible fishy creature for the first time. Disgusting!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw a horrible fishy creature for the first time.", + painting_description = "a vividly imagined painting of a horrific fishperson corpse", + icon="fishperson_surprised", iconSkin="thoughtIcons.xml", duration="short", priority="medium" }, + values = { fear = 2,happiness=-4, despair=2} +} +Entity { + name = "Fascinated By A Fishperson", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw a horrible fishy creature, the likes of which SUBJECTIVE_PERSONAL_PRONOUN had never seen before, and was fascinated by it!", + painting_description = "a painting, the contents of which have been redacted by the local branch of Her Majesty's Occult Purging Squad", + icon="fishperson_smile", iconSkin="thoughtIcons.xml", duration="short", priority="medium" }, + values = { happiness = 5, despair=2} +} + +-- Selenians + + Entity { + name = "Horrified By A Selenian", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw a horrible glowing thing for the first time. How awful!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw a horrible glowing thing for the first time.", + painting_description = "abnormal glowing shapes floating in the night, of no colour from this world", + icon="selenian_polyp_night", + iconSkin="thoughtIcons.xml", + duration="medium", + priority="medium" }, + values = { fear = 10,happiness=-5, despair=8, } + } + Entity { + name = "Fascinated By A Selenian", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw a horrible glowing shape, the likes of which SUBJECTIVE_PERSONAL_PRONOUN had never seen before, and was fascinated by it!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw a horrible yet wonderful glowing thing for the first time.", + painting_description = "a picture of glowing lights shining in no colour of this world", + icon="selenian_polyp_night", + iconSkin="thoughtIcons.xml", + duration="medium", + priority="medium" }, + values = { happiness = 5, anger=0, fear=0, despair=5} + } + + Entity { + name = "Attacked By A Selenian", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was injured by an Obeliskian recently!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was injured by an Obeliskian", + painting_description = "a picture of glowing lights shining in no colour of this world", + priority = "high", + duration = "short", + icon = "obeliskian", + iconSkin="thoughtIcons.xml" }, + values = {fear=8,happiness=-5, despair=3,anger=1} + } + Entity { + name = "Suffered From Selenian Field Effect", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was harmed by a Selenian field effect recently!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN suffered an attack by a Selenian.", + priority = "high", duration = "short", + painting_description = "a picture of glowing lights shining in no colour of this world", + icon = "obeliskian", iconSkin="thoughtIcons.xml" }, + values = {fear=8,happiness=-5, despair=6,anger=0} + } + +-- Geometers + +Entity { + name = "Horrified By A Geometer", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw an unnatural little creature for the first time. How awful!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw an unnatural little creature for the first time.", + painting_description = "abnormal glowing shapes floating in the night, of no colour from this world", + icon="invisible_geometer", + iconSkin="thoughtIcons.xml", + duration="medium", + priority="medium" }, + values = { fear = 10,happiness=-5, anger=0, despair=10, } +} +Entity { + name = "Fascinated By A Geometer", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw an unnatural little creature, the likes of which SUBJECTIVE_PERSONAL_PRONOUN had never seen before, and was fascinated by it!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw an unnatural yet wonderful little creature for the first time.", + painting_description = "a picture of glowing lights shining in no colour of this world", + icon="invisible_geometer", + iconSkin="thoughtIcons.xml", + duration="medium", + priority="medium" }, + values = { happiness = 10, anger=0, fear=0, despair=15} +} + +-- Obeliskian Memories + Entity { + name = "Horrified By An Obeliskian", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw a horrible living monolith, the likes of which SUBJECTIVE_PERSONAL_PRONOUN had never seen before, and was terrified!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw a horrible living monolith for the first time and was terrified!", + painting_description = "a vividly imagined painting of a horrific stone with gaping eyes", + icon="obeliskian", iconSkin="thoughtIcons.xml", + duration="long", + priority="medium" }, + values = {fear=10,happiness=-3,despair=5} + } + Entity { + name = "Fascinated By An Obeliskian", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw a horrible living monolith, the likes of which SUBJECTIVE_PERSONAL_PRONOUN had never seen before, and was fascinated by it!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw a horrible but fascinating living monolith for the first time!", + painting_description = "a painting, the contents of which have been redacted by the local branch of Her Majesty's Occult Purging Squad", + icon="obeliskian", + iconSkin="thoughtIcons.xml", + duration="long", + priority="medium" }, + values = {fear=3,happiness=5,despair=10} + } + Entity { + name = "Attacked By An Obeliskian", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was injured by an Obeliskian recently!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was injured by an Obeliskian", + painting_description = "a picture of a terrifying tentacled monolith", + priority = "high", + duration = "short", + icon = "obeliskian", + iconSkin="thoughtIcons.xml" }, + values = {fear=8,happiness=-3,despair=5} + } + Entity { + name = "Suffered From Obeliskian Aetheric Attack", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN suffered attack by Obeliskian aetheric weaponry recently!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN suffered an attack by an Obeliskian.", + priority = "high", duration = "short", + painting_description = "a picture of a terrifying, screaming, flying head carved from stone", + icon = "obeliskian", iconSkin="thoughtIcons.xml" }, + values = {fear=8,happiness=-3,despair=5} + } + +-- Military Training / Barracks memories. + Entity { + name = "Engaged In Military Training", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN trained in a soldierly manner and is numbed by the exertion.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN engaged in military training.", + priority = "high", duration = "short", + painting_description = "a picture of a terrifying, screaming, flying head carved from stone", + icon = "soldiers", iconSkin="thoughtIcons.xml" }, + values = {fear=-3, anger=-2, despair=-1} + } + +Entity { + name = "Witnessed Construction", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN witnessed the construction of a building, for the glory of the Empire! CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt a stirring, patriotic feeling within POSSESSIVE_PERSONAL_PRONOUN breast.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN witnessed the construction of a building and was uplifted by it.", + painting_description = "a painting of the Capital City of the Clockwork Empires", + icon="job_carpentry", iconSkin="thoughtIcons.xml", duration="short", priority="low", inspire ="yes"}, + values = { happiness = 8, fear=-4,anger=-4,despair=-4 } +} +Entity { + name = "Inspired by the Proud Military of the Colony", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was comforted by the sight of brave soldiers keeping the colony safe.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was comforted by the sight of active military.", + painting_description = "a painting of a smiling squad of redcoats", + icon="morale4", iconSkin="thoughtIcons.xml", duration="short", priority="low"}, + values = { happiness = 3, fear=-3, anger=-1,despair=-1 } +} +Entity { + name = "Finished Construction of a Building", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN constructed a building, and feels quite good about it!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was pleased to finish construction of a building.", + painting_description = "a stylized depiction of a carpenter", + icon="job_carpentry", iconSkin="thoughtIcons.xml", duration="medium", priority="medium" }, + values = { happiness = 4, anger =-1, fear=-1, despair= -1 } +} + +Entity { + name = "Angry Due To Hunger", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN hadn't had a meal in ages, and was quite upset about it.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was quite upset about being so hungry.", + painting_description = "a picture of a starving labourer", + icon="food_plate", iconSkin="thoughtIcons.xml", duration="medium", priority="medium" }, + values = { happiness = -5, anger =3 } +} +Entity { + name = "Desperately Hungry", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN is starving. CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN would do almost anything for food!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt desperately hungry.", + painting_description = "a painting of a skeleton", + icon="act_of_murder", iconSkin="thoughtIcons.xml", duration="short", priority="high" }, + values = { happiness = -5, fear=6} +} +Entity { + name = "Killed Some Wild Game", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN killed some wild game and felt rather satisfied about it.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was satisfied to have killed some wild game.", + priority = "low", duration = "short", + painting_description = "a picture of a roasting boar", + icon="aurochs", iconSkin="thoughtIcons.xml"}, + values = {happiness = 3} +} +Entity { + name = "Killed for the first time", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN killed someone for the first time. How horrible!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN killed someone for the first time.", + painting_description = "a painting of a somewhat confused-looking aurochs", + icon="act_of_murder", iconSkin="thoughtIcons.xml", duration="long", priority="high" }, + values = { happiness = -5, fear=5, despair=10} +} +Entity { + name = "Killed someone for the first time", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN killed someone for the first time by taking the life of OTHER_NAME. How horrible!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt awful about taking the life of OTHER_NAME.", + painting_description = "a painting of a somewhat confused-looking aurochs", + icon="act_of_murder", iconSkin="thoughtIcons.xml", duration="long", priority="high" }, + values = { happiness = -1, fear=3, despair=10} +} +Entity { + name = "Killed for the first time (friend)", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN killed for the first time - and, horribly, it was their friend OTHER_NAME!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN killed their friend OTHER_NAME and felt repulsive.", + painting_description = "a painting of abstract, streaking blue and red lines", + icon="heart_broken", iconSkin="thoughtIcons.xml", + duration="long", + priority="high" }, + values = { happiness = -20, fear=10, despair=20} +} +Entity { + name = "Killed for the first time (military)", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN killed another being for the first time. The death of OTHER_NAME was a sad but necessary duty, for the good of the empire.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt grim resignation at having to kill another being, OTHER_NAME.", + painting_description = "a painting of a condemned criminal", + icon="skull", + iconSkin="thoughtIcons.xml", + duration="long", + priority="high" }, + values = { happiness = 2, despair=2} +} +Entity { + name = "Killed for the first time and liked it", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN killed another being for the first time. A sense of dread runs through them at the death of OTHER_NAME.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt satisfied at killing OTHER_NAME for the good of the settlement.", + painting_description = "a painting of a gloating criminal", + icon="act_of_murder", + iconSkin="thoughtIcons.xml", + duration="long", + priority="high" }, + values = { happiness = 8, fear=1,despair=2} +} +Entity { + name = "Killed a fishperson", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN killed OTHER_NAME the fishperson recently.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN killed OTHER_NAME the fishperson.", + painting_description = "a painting of a fishperson being shot by a soldier", + icon="fishperson_angry", + iconSkin="thoughtIcons.xml", + duration="short", + priority="medium" }, + values = { fear=-1, happiness=2 } +} +Entity { + name = "Killed a Bandit", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN killed a bandit recently.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN killed a bandit.", + painting_description = "a painting of a bandit", + icon="placeholder", iconSkin="orderIcons.xml", duration="short", priority="medium" }, -- SHOULD USE "bandit" ICON!!! + values = { fear=-1 , happiness=2} +} +Entity { + name = "Enacted Frontier Justice (military)", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN enacted Frontier Justice, as per orders. The death of OTHER_NAME was a sad but necessary duty.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN enacted Frontier Justice on OTHER_NAME.", + painting_description = "a painting of a blindfolded figure facing a firing squad", + icon="frontier_justice", + iconSkin="thoughtIcons.xml", + duration="medium", + priority="high" }, + values = { happiness = -2, despair=1} +} +Entity { + name = "Witnessed Combat", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN witnessed combat recently.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN witnessed combat.", + painting_description = "a painting of a battlefield", + icon="shot_at", iconSkin="thoughtIcons.xml", duration="short", priority="low", }, + values = { fear=4, happiness=-2,despair=2 } +} + +Entity { + name = "Civilian In Combat", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN participated in combat as a civilian recently and was very upset by it.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN participated in combat as a civilian and was very upset by it.", + painting_description = "a painting of colonist cowering on a battlefield", + icon="shot_at", iconSkin="thoughtIcons.xml", duration="short", priority="low", }, + values = { fear=8, happiness=-3,despair=3 } +} + +Entity { + name = "Civilian In Combat With Horror", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN participated in combat against a horror and was terrified.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUNparticipated in combat against a horror and was terrified.", + painting_description = "a painting of colonist cowering on a battlefield", + icon="shot_at", iconSkin="thoughtIcons.xml", duration="short", priority="medium", }, + values = { fear=15, happiness=-5,despair=5 } +} + +Entity { + name = "Witnessed Fighting Between Colonists", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN witnessed fighting between fellow colonists recently!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN witnessed fighting between fellow colonists.", + painting_description = "a painting of a battlefield", + icon="affliction", + iconSkin="thoughtIcons.xml", + duration="short", + priority="low", }, + values = { fear=1, anger=1,happiness=-2, despair=1 } +} + + +Entity { + name = "Horrified At Eating Human Flesh", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was so hungry, SUBJECTIVE_PERSONAL_PRONOUN was forced to eat human flesh! CAPITALIZED_POSSESSIVE_PERSONAL_PRONOUN mind recoils from the horrifying experience.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was forced to resort to cannibalism due to starvation!", + painting_description = "a colourful abstact work, resembling the scribblings of a Street Urchin", + icon="cannibalism", iconSkin="thoughtIcons.xml", duration="long", priority="high" }, + values = { happiness = -8, fear=3, despair=5} +} +Entity { + name = "Ate Human Flesh (Epicurean)", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN consumed the strangest sort of meat, recently. What IS that flavor?", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN consumed an unusual meat dish recently.", + painting_description = "a picture of a man being put into a Sausage-Grinder", + icon="cannibalism", iconSkin="thoughtIcons.xml", duration="medium", priority="high" }, + values = { happiness = 4,despair=2} +} +Entity { + name = "Enjoyed Eating Human Flesh", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was so hungry, they were forced to eat human flesh... and it was wonderful.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN found out they really like the taste of human flesh.", + painting_description = "a picture of an excited-looking man being put into a Sausage-Grinder", + icon="cannibalism_extreme", iconSkin="thoughtIcons.xml", duration="medium", priority="high" }, + values = { happiness = 7,despair=10, } +} +Entity { + name = "Committed Intentional Murder", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN committed bloody murder of OTHER_NAME!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN committed the murder of OTHER_NAME!", + painting_description = "a painting of horrific, bloody streaks across a black canvas", + icon="act_of_murder", + iconSkin="thoughtIcons.xml", + duration="long", + priority="high" }, + values = { fear=5, despair=10, } +} +Entity { + name = "Committed Intentional Murder of a Friend", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN personally committed bloody murder of one of their own friends!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN committed the murder of one of their own friends!", + painting_description = "a painting of horrific, bloody streaks across a black canvas", + icon="act_of_murder", + iconSkin="thoughtIcons.xml", + duration="long", priority="high" }, + values = { fear=3, anger =3, despair=15, happiness=-5} +} +Entity { + name = "Attacked By A Murderer", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was assaulted by a murderer!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was attacked by a murderer!", + icon="cower", + iconSkin="thoughtIcons.xml", + duration="medium", + priority="medium" }, + values = { fear=10, anger=3,happiness=-5,despair=5 }, +} +Entity { + name = "Witnessed Murder", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN witnessed the heinous murder of OTHER_NAME!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN witnessed the heinous murder of OTHER_NAME!", + icon="cower", iconSkin="thoughtIcons.xml", duration="long", priority="high" }, + values = { fear=10,happiness=-10, anger=5, despair =10}, +} +Entity { + name = "Witnessed Murder And Liked It", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN witnessed the murder of OTHER_NAME and found it... strangely appealing.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was actually pretty okay with witnessing the murder of OTHER_NAME.", + icon="act_of_murder", iconSkin="thoughtIcons.xml", duration="long", priority="high" }, + values = { happiness=7, anger =1, despair=10 }, +} + +Entity { + name = "Witnessed Violent Death", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was horrified to witness the violent death of OTHER_NAME!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN witnessed the horrible, violent death of OTHER_NAME!", + painting_description = "a paint of bloody hands", + icon="act_of_murder", + iconSkin="thoughtIcons.xml", + duration="long", + priority="high" }, + values = { fear=15,happiness=-10, despair=10}, +} +Entity { + name = "Witnessed Violent Death And Liked It", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN witnessed the violent death of OTHER_NAME and found it... compelling.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was actually pretty okay with witnessing the violent death of OTHER_NAME", + painting_description = "a paint of bloody hands", + icon="act_of_murder", + iconSkin="thoughtIcons.xml", + duration="long", + priority="high" }, + values = { happiness=6, anger =1, despair=10 }, +} + +Entity { + name = "Witnessed a Dreadful Poetry Reading", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN witnessed a dreadful poetry reading and was discomfited.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN heard some terrible poetry.", + painting_description = "a painting of an unpleasant looking man giving a poetry reading", + icon="open_book", + iconSkin="thoughtIcons.xml", + duration="short", + priority="low" }, + values = { anger =3, happiness=-3 } +} +Entity { + name= "Witnessed a Maddened Poetry Reading", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was subjected to the ravings of a mad poet and was greatly unnerved.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was unnerved by the ravings of a mad poet.", + painting_description = "a painting of a wild-eyed man shouting poetry at passers-by", + icon="open_book", iconSkin="thoughtIcons.xml", duration="short", priority="medium" }, + values = { fear=2, despair=4 } +} +Entity { + name = "Witnessed a Poetry Reading", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN witnessed a poetry reading and found it tolerable.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN witnessed a tolerable poetry reading.", + painting_description = "a painting of a bored-looking colonist witnessing Poetry", + icon="open_book", iconSkin="thoughtIcons.xml", duration="short", priority="low" }, + values = { despair= 1, happiness = 2, } +} +Entity { + name = "Enjoyed a Reading of Poetry", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN witnessed, and quite enjoyed, a poetry reading. How unusual!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN witnessed a quite enjoyable poetry reading.", + painting_description = "a painting of a poet surrounded by pleased-looking subjects of the Empire", + icon="open_book", iconSkin="thoughtIcons.xml", duration="short", priority="low" }, + values = { happiness = 3, fear=-3, anger =-3, despair = -1 } +} + +Entity { + name = "Totally Unequipped To Be A Vicar", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was given a holy text and told to make the best of it!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was assigned vicar duty in spite of being totally unqualified.", + painting_description = "a portrait of an overwhelmed, possibly illiterate priest", + icon="thumbs_down", iconSkin="thoughtIcons.xml", duration="short", priority="medium" }, + values = { fear=4, anger =2, happiness = -3, despair=1 } +} + +Entity { + name = "Thrilled At Being Conscripted", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was thrilled to be conscripted into the military, despite having absolutely no idea what they are doing! How exciting!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was thrilled to be conscripted into the military.", + painting_description = "a portrait of a happy-looking soldier shooting himself in the foot", + icon="morale4", iconSkin="thoughtIcons.xml", duration="short", priority="medium" }, + values = { happiness = 4 } +} + +Entity { + name = "Upset At Being Conscripted", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was forcibly conscripted into the military, despite POSSESSIVE_PERSONAL_PRONOUN lack of training. How very upsetting!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was forcibly conscripted against POSSESSIVE_PERSONAL_PRONOUN will.", + painting_description = "a portrait of an unhappy-looking soldier", + icon="morale1", iconSkin="thoughtIcons.xml", duration="short", priority="medium" }, + values = { fear=4, anger =2, happiness = 1 } +} + +Entity { + name = "Upset At Being Decomissioned", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was forcibly decomissioned from the military, despite POSSESSIVE_PERSONAL_PRONOUN military training. How very upsetting!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was forcibly decomissioned from the military, despite POSSESSIVE_PERSONAL_PRONOUN military training.", + painting_description = "a portrait of an unhappy-looking soldier", + icon="morale1", iconSkin="thoughtIcons.xml", duration="short", priority="medium" }, + values = { anger =3, happiness = 1 } +} +Entity { + name = "Witnessed Creepy Dance", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw OTHER_NAME performing an ecstatic dance and was unnervered.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw OTHER_NAME performing a strange frenzied dance.", + icon="despair2", + iconSkin="thoughtIcons.xml", + duration="short", + priority="medium" }, + values = { fear=2,happiness=1} +} +Entity { + name = "Witnessed Creepy Dance (maddened)", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw OTHER_NAME performing an ecstatic dance and was excited.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw OTHER_NAME performing a strangely compelling, frenzied dance.", + icon="despair2", + iconSkin="thoughtIcons.xml", + duration="short", + priority="medium" }, + values = { happiness=3} +} +Entity { + name = "Did a Dance", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN spontaneously decided to dance and had a great time!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN danced and felt great.", + icon="happy", iconSkin="thoughtIcons.xml", duration="short", priority="low" }, + values = { happiness=3 } +} +Entity { + name = "Talked to An Animal", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN decided to chat up an animal. A good time was had by all.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN had a great conversation with an animal.", + icon="aurochs", iconSkin="thoughtIcons.xml", duration="short", priority="medium" }, + values = { anger=0, despair=0, happiness=3} +} +Entity { + name = "Witnessed Talking To Animal", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was disturbed to witness OTHER_NAME talking to an animal.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was distressed by OTHER_NAME talking to an animal.", + icon="aurochs", + iconSkin="thoughtIcons.xml", + duration="short", + priority="medium" }, + values = { fear=2,happiness=2 } +} +Entity { + name = "Talked to A Corpse", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN talked to POSSESSIVE_PERSONAL_PRONOUN friend. A very cold friend. Who maybe wasn't alive.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN talked to POSSESSIVE_PERSONAL_PRONOUN late friend.", + icon="skull", iconSkin="thoughtIcons.xml", duration="short", priority="medium" }, + values = { anger=0, happiness=4} +} +Entity { + name = "Witnessed Talking To Corpse", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw OTHER_NAME talking to a corpse and was very disturbed by the sight!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw OTHER_NAME talking to a corpse.", + icon="despair2", iconSkin="thoughtIcons.xml", duration="short", priority="medium" }, + values = { fear=3,happiness=1 } +} +Entity { + name = "Witnessed Happy Freakout", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw OTHER_NAME overcome by manic gyrations from pure joy. This was frightening.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN witnessed the manic gyrations of OTHER_NAME.", + icon="despair2", iconSkin="thoughtIcons.xml", duration="short", priority="medium" }, + values = { fear=1, happiness = 2 } +} +Entity { + name = "Made A Friend", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN has a new friend: OTHER_NAME!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN made a friend of OTHER_NAME.", + icon="heart", + iconSkin="thoughtIcons.xml", + duration="medium", + priority="medium" }, + values = { fear=-5, anger =-5, happiness = 10, despair=-5 } +} + +Entity { + name = "Lost A Friend", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN sadly lost OTHER_NAME as a friend.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN lost OTHER_NAME as a friend.", + icon="heart_broken", iconSkin="thoughtIcons.xml", + duration="medium", + priority="medium" }, + values = { anger=2, despair=4, happiness=-10 } +} + +Entity { + name = "Made An Enemy", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN has a new enemy: OTHER_NAME!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN made an enemy of OTHER_NAME.", + icon="thumbs_down", + iconSkin="thoughtIcons.xml", + duration="medium", + priority="medium" }, + values = { anger=3, despair=0,happiness=1 } +} + +Entity { + name = "Had A Good Cower", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was comforted by having a good cower.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was comforted by having a good cower.", + icon="fearful", iconSkin="thoughtIcons.xml", duration="short", priority="low" }, + values = { fear=0,happiness=2 } +} + +Entity { + name = "Fled From Danger", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN fled from danger and feels a little better now.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN fled fromd danger.", + icon="retreat", iconSkin="thoughtIcons.xml", duration="short", priority="low" }, + values = { fear=0,happiness=2 } +} + + +Entity { + name = "Forced to Frontier Justice a Friend", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN had to brutally kill POSSESSIVE_PERSONAL_PRONOUN friend OTHER_NAME in the name of Frontier Justice. What a horrible turn of events.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN had to brutally kill POSSESSIVE_PERSONAL_PRONOUN friend OTHER_NAME in the name of Frontier Justice.", + icon="frontier_justice", + iconSkin="thoughtIcons.xml", + duration="long", + priority="high" }, + values = { anger =2, happiness = 0 , despair=20} +} +Entity { + name = "Watched a Friend Die to Frontier Justice", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was forced to watch the murder of POSSESSIVE_PERSONAL_PRONOUN friend - a necessity of the Empire's 'Justice'.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN witnessed the murder of POSSESSIVE_PERSONAL_PRONOUN due to Frontier Justice.", + icon="frontier_justice", iconSkin="thoughtIcons.xml", duration="long", priority="high" }, + values = { despair=10, anger =4, happiness = 0} +} +Entity { + name = "Watched a Friend Die", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN watched POSSESSIVE_PERSONAL_PRONOUN friend OTHER_NAME die.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN watched POSSESSIVE_PERSONAL_PRONOUN friend OTHER_NAME die.", + icon="skull", + iconSkin="thoughtIcons.xml", + duration="long", + priority="high" }, + values = { fear=3, despair=5,happiness=0} +} + +Entity { + name = "Watched a Friend Get Murdered", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw POSSESSIVE_PERSONAL_PRONOUN friend OTHER_NAME get murdered!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw POSSESSIVE_PERSONAL_PRONOUN friend OTHER_NAME get murdered!", + icon="murder_stab", + iconSkin="thoughtIcons.xml", + duration="long", + priority="high" }, + values = { fear=7,despair=2,happiness=0} +} +Entity { + name = "Prayed Before Bed", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN prayed before sleeping and rested more peacefully for it.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN prayed before sleeping and rested more peacefully for it.", + icon="holy_cog", iconSkin="thoughtIcons.xml", duration="short", priority="low" }, + values = { fear=-1, anger =-1, happiness = 3, despair=-1} +} +Entity { + name = "Prayed And Felt Better", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN prayed and felt more at peace with POSSESSIVE_PERSONAL_PRONOUN fate.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN prayed and felt more at peace with POSSESSIVE_PERSONAL_PRONOUN fate.", + icon="holy_cog", iconSkin="thoughtIcons.xml", duration="short", priority="low" }, + values = { fear=-1, anger =-1, happiness = 3, despair=-1} +} + +Entity { + name = "Prayed at Wall Shrine", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN prayed at a wall shrine and felt at peace.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN prayed at a wall shrine and felt at peace.", + icon="holy_cog", iconSkin="thoughtIcons.xml", duration="short", priority="low" }, + values = { fear=-1, anger =-1, happiness = 3, despair=-1} +} + +Entity { + name = "Gave Confession And Felt Better", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN gave confession to a Vicar and feels much better now.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN gave confession to a Vicar and felt much better.", + icon="holy_cog", + iconSkin="thoughtIcons.xml", + duration="short", + priority="medium" }, + values = {fear=-5, happiness = 5, despair=-8, anger=0} +} +Entity { + name = "Prayed And Spread Despair", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN prayed and spread the True Knowledge of Forbidden Things.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN prayed and spread the True Knowledge of Forbidden Things.", + icon="cultist_kneeling", iconSkin="thoughtIcons.xml", + duration="short", priority="low" }, + values = { fear=0, anger =0, happiness = 3,despair=3} +} +Entity { + name = "Preached the End Times", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN preached and spread the news to all that The End Times are near.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN preached and spread the news to all that The End Times are near.", + icon="cultist_kneeling", iconSkin="thoughtIcons.xml", + duration="short", priority="medium" }, + values = { fear=5, despair=-5} +} +Entity { + name = "Heard Someone Preaching the End Times", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN heard OTHER_NAME preaching the End Times and was disturbed.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN heard OTHER_NAME preaching the End Times and was disturbed.", + icon="despair2", iconSkin="thoughtIcons.xml", + duration="short", priority="medium" }, + values = { fear=5, despair = 5} +} +Entity { + name = "Heard Uplifting Prayer Service", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN heard an Ecumenist prayer service given by OTHER_NAME and felt uplifted.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN heard an Ecumenist prayer service given by OTHER_NAME and felt uplifted.", + icon="holy_cog", + iconSkin="thoughtIcons.xml", + duration="short", + priority="medium" }, + values = {importance= 15, fear=0, anger =0, despair=-20, happiness = 4 } +} + +Entity { + name = "Heard Military Prayer Service", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN heard an Unreformed Deist prayer service given by OTHER_NAME and felt inspired to perform military feats!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN heard an Unreformed Deist prayer service given by OTHER_NAME and felt inspired to perform military feats!", + icon="holy_cog", + iconSkin="thoughtIcons.xml", + duration="short", + priority="medium" }, + values = {importance= 15, fear=0, despair=-20, happiness = 4 } +} + +Entity { + name = "Heard Tedious Military Service", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN heard a tedious Unreformed Deist prayer service given by OTHER_NAME. CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN didn't much understand or appreciate the military overtones.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN heard a tedious Unreformed Deist prayer service given by OTHER_NAME. CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN didn't much understand or appreciate the military overtones.", + icon="holy_cog", + iconSkin="thoughtIcons.xml", + duration="short", + priority="low" }, + values = {importance= 15, fear=0, despair=-10, happiness=2} +} + +Entity { + name = "Heard Worker Prayer Service", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN heard an oppressive Muscularist prayer service given by OTHER_NAME and felt obligated to work OBJECTIVE_PERSONAL_PRONOUNself to exhaustion.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN heard an oppressive Muscularist prayer service given by OTHER_NAME and felt obligated to work OBJECTIVE_PERSONAL_PRONOUNself to exhaustion.", + icon="holy_cog", + iconSkin="thoughtIcons.xml", + duration="short", + priority="medium" }, + values = {importance= 15, fear=0, despair=-10, happiness = 2 } +} + +Entity { + name = "Heard Bland Worker Service", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN heard an Muscularist prayer service given by OTHER_NAME and felt glad that SUBJECTIVE_PERSONAL_PRONOUN wasn't required to participate in hard labor.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN heard an Muscularist prayer service given by OTHER_NAME and felt glad that SUBJECTIVE_PERSONAL_PRONOUN wasn't required to participate in hard labor.", + icon="holy_cog", + iconSkin="thoughtIcons.xml", + duration="short", + priority="low" }, + values = {importance= 15, fear=0, despair=-5, happiness = 2 } +} + +Entity { + name = "Heard UC Prayer Service", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN heard a Predestinational Mechanistic prayer service given by OTHER_NAME and felt satisfaction at POSSESSIVE_PERSONAL_PRONOUN important place in the universe.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN heard a Predestinational Mechanistic prayer service given by OTHER_NAME and felt satisfaction at POSSESSIVE_PERSONAL_PRONOUN important place in the universe.", + icon="holy_cog", + iconSkin="thoughtIcons.xml", + duration="short", + priority="medium" }, + values = {importance= 15, fear=0, despair=-20, happiness = 4 } +} + +Entity { + name = "Heard Boring UC Service", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN heard a tedious Predestinational Mechanistic prayer service given by OTHER_NAME and was intensely bored by the endless praise of the nobility.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN heard a tedious Predestinational Mechanistic prayer service given by OTHER_NAME and was intensely bored by the endless praise of the nobility.", + icon="holy_cog", + iconSkin="thoughtIcons.xml", + duration="short", + priority="low" }, + values = {importance= 15, fear=0, despair=-10, happiness=2} +} + +Entity { + name = "Heard A Very Strange Prayer Service", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN heard a very strange prayer service indeed given by OTHER_NAME.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN heard a very strange prayer service indeed given by OTHER_NAME.", + icon="despair2", + iconSkin="thoughtIcons.xml", + duration="short", + priority="low" }, + values = { fear=1, happiness = 2 } +} +Entity { + name= "Slapped Someone", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN slapped OTHER_NAME in anger and felt very satisfied.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN slapped OTHER_NAME in anger and felt very satisfied.", + icon = "fist_upheld_red", iconSkin = "thoughtIcons.xml", duration="short", priority = "medium" }, + values = {anger = -2, happiness=2} +} +Entity { + name= "Slapped By Another", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was slapped by OTHER_NAME and is very upset by it!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was slapped by OTHER_NAME and was very upset by it!", + icon = "angry", iconSkin = "thoughtIcons.xml", duration="medium", priority = "medium" }, + values = {anger = 2, happiness=-5, despair=2} +} + +Entity { + name= "Insulted By Bandit", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was insulted quite rudely by the bandit OTHER_NAME and is very upset by it!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN insulted quite rudely by the bandit OTHER_NAME and is very upset by it!", + icon = "angry", iconSkin = "thoughtIcons.xml", duration="medium", priority = "medium" }, + values = {anger = 2, happiness=1, despair=2} +} + + +Entity { + name= "Hugged A Fishperson", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN shared a cold, wet hug with a Fishperson.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN shared a cold, wet hug with a Fishperson.", + icon = "fishperson", iconSkin = "thoughtIcons.xml", duration="short", priority = "low" }, + values = {despair=1, happiness=6} +} + +Entity { + name= "Hugged Someone", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN shared a warm hug with OTHER_NAME.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN shared a warm hug with OTHER_NAME.", + icon = "happy", iconSkin = "thoughtIcons.xml", duration="short", priority = "low" }, + values = {despair=-3, fear=-3, anger=-3, happiness=5} +} +Entity { + name= "Hugged By Another", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN shared a warm hug with CHARACTER_NAME.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN shared a warm hug with CHARACTER_NAME.", + icon = "happy", iconSkin = "thoughtIcons.xml", duration="short", priority = "low" }, + values = {despair=-3, fear=-3, anger=-3, happiness=5} +} + +Entity { + name= "Sadly Hugged Someone", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN hugged OTHER_NAME tight to assuage POSSESSIVE_PERSONAL_PRONOUN own fears.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN hugged OTHER_NAME.", + icon = "sad", iconSkin = "thoughtIcons.xml", duration="short", priority = "low" }, + values = {despair=-3, fear=-3, anger=-3, happiness=5} +} +Entity { + name= "Sadly Hugged By Another", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN hugged CHARACTER_NAME to make them feel better.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN hugged CHARACTER_NAME to make them feel better.", + icon = "sad", iconSkin = "thoughtIcons.xml", duration="short", priority = "low" }, + values = {despair=-3, fear=-3, anger=-3, happiness=5} +} + +Entity { + name= "Hugged Someone Random", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was so incredibly happy that SUBJECTIVE_PERSONAL_PRONOUN suddenly hugged TARGET_NAME.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN hugged TARGET_NAME from intense joy.", + icon = "happy", iconSkin = "thoughtIcons.xml", duration="short", priority = "low" }, + values = { fear=-3, anger=-3, happiness=5} +} + +Entity { + name= "Sudden Shift Change", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was angered by a sudden change in work schedule.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was angered by a sudden change in work schedule.", + icon = "angry", + iconSkin = "thoughtIcons.xml", + duration="long", + priority = "medium" }, + values = {happiness=-5, anger=5} +} + +Entity { + name= "Hugged By Someone They Didn't Like", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was suddenly hugged by CHARACTER_NAME and felt very uncomfortable about it.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was hugged by CHARACTER_NAME and felt very uncomfortable about it.", + icon = "angry", + iconSkin = "thoughtIcons.xml", + duration="medium", + priority = "low" }, + values = {despair=1, anger=2, happiness=-3} +} + +Entity { + name = "Witnessed Descent Into Madness", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was upset by witnessing OTHER_NAME descend into a state of Madness.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was upset by witnessing OTHER_NAME descend into a state of Madness.", + icon = "madness", + iconSkin = "thoughtIcons.xml", + duration = "medium", + priority = "medium"}, + values = {anger = 0, happiness=-2, despair=4, fear=2} +} + +Entity { + name= "Whispered At Someone", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN whispered weird things to OTHER_NAME.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN whispered weird things to OTHER_NAME.", + icon = "despair2", iconSkin = "thoughtIcons.xml", duration="short", priority = "low" }, + values = {happiness=3} +} +Entity { + name= "Whispered At By Another", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was creeped out by OTHER_NAME's whisperings.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + icon = "despair2", iconSkin = "thoughtIcons.xml", duration="short", priority = "low" }, + values = { fear=1,despair=1,happiness=-1} +} +Entity { + name = "Was Punched By Another", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was punched by someone who didn't like OBJECTIVE_PERSONAL_PRONOUN!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + icon = "angry", iconSkin = "thoughIcons.xml", duration = "short", priority = "high" }, + values = {anger = 3,happiness=-3} +} +Entity { + name = "Saw Someone Get Punched", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was upset by witnessing a fistfight.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + icon = "angry", + iconSkin = "thoughtIcons.xml", + duration = "short", + priority = "medium"}, + values = {anger = 2,happiness=-1} +} +Entity { + name = "Punched Someone Else", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN punched someone SUBJECTIVE_PERSONAL_PRONOUN didn't like and felt a bit better.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + icon = "smash", iconSkin = "thoughtIcons.xml", duration = "short", priority = "medium"}, + values = {anger = 1,happiness=2} +} +Entity { + name= "Blamed Someone", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN blamed POSSESSIVE_PERSONAL_PRONOUN enemy OTHER_NAME for the miserable state of the colony.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + icon = "finger_point", iconSkin = "thoughtIcons.xml", duration="medium", priority = "medium" }, + values = { anger=1, fear=0,happiness=3} +} +Entity { + name= "Blamed By Another", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was blamed for the colony's woes by OTHER_NAME!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + icon = "finger_point", iconSkin = "thoughtIcons.xml", duration="medium", priority = "medium" }, + values = { happiness=-3, anger=3} +} + +Entity { + name= "Yelled At Someone", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN became so upset that SUBJECTIVE_PERSONAL_PRONOUN yelled at OTHER_NAME.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + icon = "finger_point", iconSkin = "thoughtIcons.xml", duration="short", priority = "medium" }, + values = { anger=-1, happiness=2} +} +Entity { + name= "Yelled At By Another", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was undeservedly yelled at by CHARACTER_NAME!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + icon = "finger_point", iconSkin = "thoughtIcons.xml", duration="short", priority = "medium" }, + values = { happiness=-3, despair=2, fear=1} +} + +Entity { + name= "Sucked up to someone (positive)", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN sucked up to OTHER_NAME and felt pretty good about it.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + icon = "happy", iconSkin = "thoughtIcons.xml", duration="short", priority = "medium" }, + values = { happiness=4, fear=-1} +} +Entity { + name= "Sucked up to someone (negative)", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN sucked up to OTHER_NAME and was rebuffed!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + icon = "angry", iconSkin = "thoughtIcons.xml", duration="short", priority = "medium" }, + values = { happiness=-1, fear=1, despair=1} +} + +Entity { + name= "Sucked up to and liked it", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was pleased to be given the respect SUBJECTIVE_PERSONAL_PRONOUN deserves by OTHER_NAME.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + icon = "happy", iconSkin = "thoughtIcons.xml", duration="short", priority = "medium" }, + values = { happiness=4, fear=0} +} + +Entity { + name= "Sucked up to and disliked it", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN sucked up to by CHARACTER_NAME and found it very creepy.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + icon = "angry", iconSkin = "thoughtIcons.xml", duration="short", priority = "medium" }, + values = { anger=1, happiness=-1} +} + +Entity { + name= "Examined Tasty Food", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN examined some delicious food!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN examined some delicious food!", + icon = "food_plate", iconSkin = "thoughtIcons.xml", duration="short", priority = "low" }, + values = { happiness=3} +} +Entity { + name= "Examined Dead Body", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN examined a dead body. Neat!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN examined a dead body. Neat!", + icon = "skull", iconSkin = "thoughtIcons.xml", duration="short", priority = "low" }, + values = { happiness=4, despair=2} +} +Entity { + name= "Cowered", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN cowered in terror and felt a bit better.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN cowered in terror and felt a bit better.", + icon = "afraid", iconSkin = "thoughtIcons.xml", duration="short", priority = "medium" }, + values = { fear=-3,happiness=3} +} + +Entity { + name= "Cowered In Despair", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN cowered from overwhelming despair and felt a bit better.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN cowered from overwhelming despair and felt a bit better.", + icon = "afraid", iconSkin = "thoughtIcons.xml", duration="medium", priority = "high" }, + values = { despair=-5,} +} + +Entity { + name= "Cowered In Despair (Outside)", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN cowered from overwhelming despair and felt a bit better.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN cowered from overwhelming despair and felt a bit better.", + icon = "afraid", iconSkin = "thoughtIcons.xml", duration="medium", priority = "high" }, + values = { despair=-3,} +} + +Entity { + name= "Stomped Due To Rage", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN stomped on the ground from overwhelming anger and felt a bit better.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN stomped on the ground from overwhelming anger and felt a bit better.", + icon = "angry",iconSkin = "thoughtIcons.xml", + duration="medium",priority = "high" }, + values = { anger=-5,} +} + +Entity { + name= "Let Off Some Steam", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN stomped POSSESSIVE_PERSONAL_PRONOUN feet and felt a little better.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN stomped POSSESSIVE_PERSONAL_PRONOUN feet and felt a little better.", + icon = "angry", iconSkin = "thoughtIcons.xml", duration="short", priority = "medium" }, + values = { anger = -3,happiness=3} +} +Entity { + name= "Enjoyed Smashing Something Up", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN smashed up a thing and felt a lot better.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN smashed up a thing and felt a lot better.", + icon = "smash", iconSkin = "thoughtIcons.xml", duration="short", priority = "medium" }, + values = { anger = 2, happiness=3} +} + +Entity { + name = "Science Failure", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was disappointed by a failed line of inquiry in studies of Science.", + priority = "medium", duration = "medium", + painting_description = "a painting depicting a lone, thoughtful figure lit by a single flickering candle, nearly burned out", + icon="science_fail"}, + values = { despair= 3, fear = 1, happiness=-3} +} +Entity { + name = "Science Success", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was delighted by a successful study of Science!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + priority = "medium", duration = "medium", + painting_description = "a painting depicting a lone figure surrounded by books and devices illuminated by a single ray of sunlight", + icon="science"}, + values = { happiness = 4 } +} +Entity { + name = "Saw Invisible Geometries", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw the invisible geometries.", + priority = "high", duration = "long", + painting_description = "a painting of a chair seen from the front, sides, and back all at the same time", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + icon = "invisible_geometer", iconSkin="thoughtIcons.xml"}, + values = { despair= 25, fear=10} +} +Entity { + name = "Saw A Drowned World", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw visions of a lost and ancient drowned world.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + priority = "high", duration = "long", + painting_description = "a painting of indistinct figures with pale glowing beckoning from murky water", + icon = "cosmic_horror", iconSkin="thoughtIcons.xml"}, + values = { despair= 25, fear=10} +} +Entity { + name = "Felt Inhuman Thoughts", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt the thoughts of the Omnipotent Idiot-Constructor.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + priority = "high", duration = "long", + painting_description = "a painting of endless rows of cubes within cubes within cubes that seem to crawl across the canvas", + icon = "obeliskian", iconSkin="thoughtIcons.xml"}, + values = { despair= 25, anger = -10, fear=15} +} +Entity { + name = "Felt Spirit Devoured", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt POSSESSIVE_PERSONAL_PRONOUN spirit devoured by The Insatiable Black Monolith Of The Underworld.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + priority = "high", duration = "long", + painting_description = "a painting of a black monolith above writhing humanoid forms", + icon = "cosmic_horror", iconSkin="thoughtIcons.xml"}, + values = { happiness = -10, despair= 25, anger = -10, fear=15} +} + +Entity { + name= "Terrifying Secret In Family History", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN discovered a terrifying secret about POSSESSIVE_PERSONAL_PRONOUN family genealogy recently!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + painting_description = "a painting of a row of people stretching back, further and further, into the shadows, their faces becoming increasingly warped over time", + icon = "cosmic_horror", iconSkin = "thoughtIcons.xml", duration="long", priority = "high" }, + values = { fear = 10, despair = 10,happiness=-10} +} + +Entity { + name = "Uneventful Family Research", + type="emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN recently researched their family history and were relieved to find it was perfectly normal... as far as they knew.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + icon="indifferent", iconSkin="thoughtIcons.xml", + painting_description = "a painting of a happy family", + priority = "medium", duration = "medium" }, + values = { fear=-1,happiness = 2} +} + +Entity { + name = "Discovered a Distant Relative", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was excited to discover that OTHER_NAME is a distant relative!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + painting_description = "a joyful reuinion between two family members", + icon="heart", iconSkin="thoughtIcons.xml", duration="medium", priority="high" }, + values = { happiness = 5 } +} + +Entity { + name = "Determined to Make Something of Self", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was disappointed by a lack of geneaological discoveries and is determined to make a name for OBJECTIVE_PERSONAL_PRONOUNself!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was disappointed by a lack of geneaological discoveries and determined to make a name for OBJECTIVE_PERSONAL_PRONOUNself", + painting_description = "", + icon="heart", iconSkin="thoughtIcons.xml", duration="medium", priority="high" }, + values = { happiness = 5 } +} + +Entity { + name = "Had An Unsettling Dream (good reaction)", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN had an ominous dream recently, and found it very stimulating...", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + priority = "medium", duration = "medium", + painting_description = "abstract, unnerving shapes and dimly visible figures welcoming the viewer", + icon = "eldritch", iconSkin="thoughtIcons.xml"}, + values = { happiness = 4, despair=3} +} + +Entity { + name = "Had An Unsettling Dream (bad reaction) A", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN had an ominous dream about a terrifying Black Pyramid from amongst the stars..", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + priority = "medium", duration = "medium", + painting_description = "abstract, unnerving shapes and dimly visible figures", + icon = "eldritch", iconSkin="thoughtIcons.xml"}, + values = { happiness = -3, despair= 5, fear=4} +} + +Entity { + name = "Had An Unsettling Dream (bad reaction) B", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN had an ominous dream about a mysterious city, lost beneath the waves..", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + priority = "medium", duration = "medium", + painting_description = "abstract, unnerving shapes and dimly visible figures", + icon = "eldritch", iconSkin="thoughtIcons.xml"}, + values = { happiness = -3, despair= 5, fear=4} +} + +Entity { + name = "Had An Unsettling Dream (bad reaction) C", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN had an ominous dream about mysterious lights in the forest..", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + priority = "medium", duration = "medium", + painting_description = "abstract, unnerving shapes and dimly visible figures", + icon = "eldritch", iconSkin="thoughtIcons.xml"}, + values = { happiness = -3, despair= 5, fear=4} +} + +Entity { + name = "Had An Unsettling Dream (Doomed)", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN had an horrifying dream that has scarred OBJECTIVE_PERSONAL_PRONOUN forever.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + priority = "high", duration = "medium", + painting_description = "abstract, unnerving shapes and dimly visible figures", + icon = "eldritch", iconSkin="thoughtIcons.xml"}, + values = { happiness = -5, despair= 10, fear=10} +} + +Entity { + name = "Planet Dream", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN dreamt that SUBJECTIVE_PERSONAL_PRONOUN heard a wailing from the stars as the sky slowly turned black.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + priority = "high", duration = "medium", + painting_description = "a terrifying mass of tentacles and mouths", + icon = "eldritch", iconSkin="thoughtIcons.xml"}, + values = { happiness = -5, fear=10, despair=10} +} + +Entity { + name = "Planet Wake", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt a strange terror run through SUBJECTIVE_PERSONAL_PRONOUN as the stars suddenly began to wink out.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + priority = "high", duration = "medium", + painting_description = "an all-encompassing blackness", + icon = "eldritch", iconSkin="thoughtIcons.xml"}, + values = { happiness = -5, fear=10, despair=10} +} + +Entity { + name = "Thrilled At Being Able To Send Stolen Goods", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was thrilled to provide Goods for the Colony, without being asked where they came from.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + painting_description = "a group portrait of jolly criminals and happy rogues", + icon="criminal", iconSkin="thoughtIcons.xml", duration="medium", priority="low" }, + values = { happiness = 5 } +} + + +Entity { + name = "Upset At Nearby Criminal Endeavours", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was upset that the Colony is becoming a den of thievery lately!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + painting_description = "a watercolour painting of a vicar being mugged by bandits", + icon="bandit", iconSkin="orderIcons.xml", duration="medium", priority="low" }, + values = { anger = 3, fear = 2, happiness = -3 } +} + +Entity { + name = "Furious at knowledge of Bandit Activities", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was extremely upset to discover the colony manager is working with bandits!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + painting_description = "an impressionistic painting of laughing, devilish figures around a table", + icon="placeholder", iconSkin="orderIcons.xml", duration="medium", priority="medium" }, -- NOTE: SHOULD USE "bandit" ICON + values = { anger = 5, fear = 2, happiness = -5 } +} + +Entity { + name = "Amused at knowledge of Bandit Activities", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN amusedly let the Colony Manager off the hook for trafficking in stolen goods.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + painting_description = "a print of a scammer being passed money by an accomplice", + icon="bandit_peace", iconSkin="orderIcons.xml", duration="medium", priority="high" }, + values = { happiness = 3 } +} +Entity { + name = "Angered By Destruction Of Shrine", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was angered and upset that POSSESSIVE_PERSONAL_PRONOUN cult's shrine was destroyed.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + painting_description = "a human figure in a murky field with the face cut out", + icon="cultist_shrine", iconSkin="thoughtIcons.xml", + duration="medium", priority="medium" }, + values = { anger = 6, despair= 1, happiness=-10} +} +Entity { + name = "Upset At Not Being Able To Send Stolen Goods", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was upset that POSSESSIVE_PERSONAL_PRONOUN generous offer to provide Goods for the Colony was denied, due to the suspect nature of said Goods.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + painting_description = "a portrait of an unhappy-looking criminal in irons", + icon="angry", iconSkin="thoughtIcons.xml", duration="medium", priority="low" }, + values = { anger = 1, happiness = -1 } +} + + +Entity { + name = "Happy to have studied a Science Crate", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was delighted by the successful study of a Science Crate!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + priority = "medium", + duration = "medium", + painting_description = "a painting depicting a light shining forth from the center of the empire", + icon="science"}, + values = { happiness = 4 } +} + +Entity { + name = "Disappointed to have not studied a Science Crate", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was disappointed by the colony's rejection of a Science Crate.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + priority = "medium", + duration = "medium", + painting_description = "a portrait depicting a disapproving-looking Lord Palmerstoke", + icon="science_fail"}, + values = { despair = 3 } +} + +Entity { + name = "Exposure to Science Goo", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt rather unpleasant due to researching Science Goo.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + priority = "medium", + duration = "short", + painting_description = "a painting depicting a scientist labouring alone", + icon="science_fail"}, + values = { despair = 1, }, +} + +Entity { + name = "Humbled By The Infinite Terror Of The Cosmos", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN witnessed the Infinite Terror and Malign Vastness of The Cosmos.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN", + icon="cosmic_horror", + iconSkin="thoughtIcons.xml", + duration="long", + priority="high", }, + values = { fear=10, despair= 5, }, +} + +Entity { + name = "Ecstatic To Have Joined A Cult", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN found new purpose and joy in life by joining a cult.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN found new purpose and joy in life by joining a cult.", + painting_description = "a circle of robed figures holding hands", + icon="cultist", + iconSkin="thoughtIcons.xml", + duration="long", + priority="high" }, + values = { happiness = 10, despair=5 } +} + +Entity { + name = "Fulfilled By Cult Worship", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt devoured by joy due to performing cult worship.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt devoured by joy due to performing cult worship.", + painting_description = "a circle of robed figures holding hands", + icon="cultist_kneeling", + iconSkin="thoughtIcons.xml", + duration="medium", + priority="medium" }, + values = { happiness = 5, despair=5 } +} + +Entity { + name = "Grateful to have a Chapel", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN is happy to have a colony overseer who understands their spiritual needs.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was happy to have a colony overseer who understands their spiritual needs.", + painting_description = "a classical depiction of a soaring chapel", + icon="holy_cog", + iconSkin="thoughtIcons.xml", + duration="medium", + priority="medium" }, + values = { happiness = 5, fear=-5, anger =-5, despair=-5 } +} + +Entity { + name = "Witnessed Last Rites Performed", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was pleased to witness the correct rites performed for the body of OTHER_NAME.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was pleased to witness the correct rites performed for the body of OTHER_NAME.", + painting_description = "a peaceful grave", + icon="holy_cog", + iconSkin="thoughtIcons.xml", + duration="medium", + priority="medium" }, + values = { happiness = 5, despair=-8 } +} + +Entity { + name = "Performed Last Rites", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was pleased to perform the correct rites for the body of OTHER_NAME.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was pleased to perform the correct rites for the body of OTHER_NAME.", + painting_description = "a peaceful grave", + icon="holy_cog", + iconSkin="thoughtIcons.xml", + duration="medium", + priority="medium" }, + values = { happiness = 3, fear=-1, anger =-1, despair=-1 } +} + +Entity { + name = "Upset at being Denied a Chapel", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was deeply upset by the decision not to build a church.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was deeply upset by the decision not to build a church.", + icon="not_work", iconSkin="thoughtIcons.xml", + painting_description = "a lonely pilgrim looking for a place to worship", + duration="medium", priority="medium" }, + values = { happiness = -5, anger =3, despair=3 } +} + +Entity { + name = "Felt Understood by The Aristocracy", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN is happy to have spoken with an Aristocrat who understood OBJECTIVE_PERSONAL_PRONOUN.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was happy to have spoken with an Aristocrat who understood OBJECTIVE_PERSONAL_PRONOUN.", + painting_description = "a sketch of an aristocrat embracing a worker", + icon="upper_class", + iconSkin="thoughtIcons.xml", + duration="medium", + priority="medium" }, + values = { happiness = 3, fear=-1, anger =-2, despair=-1 } +} + +Entity { + name = "Felt Fumbling Condescension of The Aristocracy", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN is angred by the arrogance of an Aristocrat who pretended to understand POSSESSIVE_PERSONAL_PRONOUN.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was angred by the arrogance of an Aristocrat who pretended to understand POSSESSIVE_PERSONAL_PRONOUN.", + painting_description = "a sketch of an aristocrat spitting on a worker", + icon="fist_upheld_red", + iconSkin="thoughtIcons.xml", + duration="medium", + priority="medium" }, + values = { anger = 2, happiness=-1 } +} + +Entity { + name = "Felt Intense Joy at Being Understood by The Aristocracy", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was filled with glee at the chance to speak on equal terms with a member of the Aristocracy.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was filled with glee at the chance to speak on equal terms with a member of the Aristocracy.", + painting_description = "a sketch of a worker joyfully shaking the hand of an aristocrat", + icon="upper_class", + iconSkin="thoughtIcons.xml", + duration="medium", + priority="medium" }, + values = { happiness = 7, fear=-3, anger =-2, despair=-1 } +} + +Entity { + name = "Upset at Lazy Colony Manager", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN grumbled at governmental promises that never were fufilled.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN grumbled at governmental promises that never were fufilled.", + icon="finger_point", iconSkin="thoughtIcons.xml", + painting_description = "a cartoonish depiction of a lazy bureaucrat", + duration="medium", priority="medium" }, + values = { happiness = -3, anger =2 } +} + +Entity { + name = "Enraged at an Unfair Fine", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was incensed that SUBJECTIVE_PERSONAL_PRONOUN was levied with a fine for protesting.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was incensed that SUBJECTIVE_PERSONAL_PRONOUN was levied with a fine for protesting.", + icon="pain", iconSkin="thoughtIcons.xml", + painting_description = "an illustration of a beaurecrat stomping on a symbol of justice", + duration="medium", priority="medium" }, + values = { happiness = -5, anger =6 } +} + +Entity { + name = "Subject to Military Brutality", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was brutalized by the military in an attempt to stop their protest!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was brutalized by the military in an attempt to stop their protest!", + icon="affliction_headwound", iconSkin="thoughtIcons.xml", + painting_description = "a meticuous painting of colonists fleeing the tyrrany of the military", + duration="long", priority="medium" }, + values = { happiness = -10, despair=8, anger =8, fear=3} +} + +Entity { + name = "Slept out in the woods", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN had to sleep out in the scary woods recently.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN had to sleep out in the scary woods recently.", + priority = "medium", duration = "medium", + painting_description = "threatening trees", + icon="jobtree", iconSkin="thoughtIcons.xml" }, + values = { fear=2, despair=4, anger=2, happiness=-5 } +} +Entity { + name = "Left a Life of Banditry", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN left behind the life of an outlaw to become a productive member of society.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN left behind the life of an outlaw to become a productive member of society.", + painting_description = "a lonely figure locked behind iron bars", + icon="placeholder", -- bandit_peace", -- TODO : need to be able to use orderIcons.xml!!! + iconSkin="orderIcons.xml", + duration="long", + priority="medium" }, + values = { happiness = 5, fear=80 } +} + + +Entity { + name = "Lost Faith in Cult", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN lost faith in POSSESSIVE_PERSONAL_PRONOUN former cult, and feels only emptiness now.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN lost faith in POSSESSIVE_PERSONAL_PRONOUN former cult, and felt empty.", + icon="cultist_no", iconSkin="thoughtIcons.xml", + painting_description = "a human figure staring out a window at nothing", + duration="long", priority="medium" }, + values = { despair=-20, fear=10, happiness=-10 } +} + +Entity { + name = "Enjoyed A Conversation About The Occult", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN enjoyed hearing all about the Occult.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN enjoyed hearing all about the Occult.", + icon="eldritch", iconSkin="thoughtIcons.xml", + painting_description = "a strange sigil", + duration="medium", priority="low" }, + values = { despair = 10, happiness=5 } +} + +Entity { + name = "Offended By A Conversation About The Occult", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was offended by talk of the Occult.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was offended by talk of the Occult.", + icon="cultist_no", iconSkin="thoughtIcons.xml", + painting_description = "the holy cog", + duration="medium", priority="low" }, + values = { anger = 5, happiness=-5, despair=4 } +} + +Entity { + name = "Offended By Communist Agitator", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was offended by talk of workers' revolution.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was offended by talk of workers' revolution.", + icon="communism", iconSkin="thoughtIcons.xml", + painting_description = "loyal labourers working", + duration="medium", priority="low" }, + values = { anger = 2, happiness=-2, } +} + +Entity { + name = "A Day Without Sleep", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN hasn't slept for a day and is feeling rather irritable.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN hadn't slept for a day and felt rather irritable.", + icon="need_sleep", + iconSkin="thoughtIcons.xml", + duration="medium", + priority="medium" }, + values = { anger=4, happiness=-5 } +} + +Entity { + name = "Two Days Without Sleep", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN hasn't slept for two days and is starting to lose it.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN started to lose it after not sleeping for two days due to access to a bed.", + icon="need_sleep", + iconSkin="thoughtIcons.xml", + duration="medium", + priority="medium" }, + values = { anger =8, despair=5, happiness=-10 } +} + +Entity { + name = "Three Days Without Sleep", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN can't remember the last time SUBJECTIVE_PERSONAL_PRONOUN slept and feels alternately terrible and enraged.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt alternately terrible and enraged due to extreme sleep deprivation.", + icon="need_sleep", + iconSkin="thoughtIcons.xml", + duration="medium", + priority="medium" }, + values = { anger =12, despair=15, happiness=-15 } +} + + +Entity { + name = "Drank Cult Juice", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN drank some cult juice and now feels really strange.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN drank some cult juice and felt really strange.", + icon="despair3", iconSkin="thoughtIcons.xml", + duration="long",priority="high" }, + values={ despair = 80, }, +} +Entity { + name = "Drank Anger Juice", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN drank some anger juice and now feels really angry.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN drank some anger juice and felt really angry.", + icon="despair3", iconSkin="thoughtIcons.xml", + duration="long",priority="high" }, + values={ anger=100, happiness=-100 }, +} + +Entity { + name = "Drank Happy Juice", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN drank some happy juice and now feels really happy.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN drank some happy juice and felt really happy.", + icon="despair3", iconSkin="thoughtIcons.xml", + duration="long",priority="high" }, + values={ happiness=100 }, +} + +Entity { + name = "Drank Fish Juice", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN drank some fish juice and now feels really fishy.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN drank some fish juice and felt really fishy.", + icon="despair3", iconSkin="thoughtIcons.xml", + duration="long",priority="high" }, + values={ }, +} + +Entity { + name = "Performed an Obeliskian Dissection", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN dissected an Obeliskian and discovered terrible, unnatural secrets.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN dissected an Obeliskian and discovered terrible, unnatural secrets.", + icon="fishperson", iconSkin="thoughtIcons.xml", + duration="long",priority="high" }, + values={ happiness=0, fear=1, despair=5, anger=0}, +} + +Entity { + name = "Performed a Fishperson Dissection", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN dissected a Fishperson and discovered terrible, unnatural secrets.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN dissected a Fishperson and discovered terrible, unnatural secrets.", + icon="fishperson", iconSkin="thoughtIcons.xml", + duration="long",priority="high" }, + values={ happiness=0, fear=1, despair=5, anger=0 }, +} + +Entity { + name = "Destroyed Monstrous Evidence", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN destroyed evidence of a monstrous eldritch being and will try not to think about it ever again.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN destroyed evidence of a monstrous eldritch being and will try not to think about it ever again.", + icon="eldritch", iconSkin="thoughtIcons.xml", + duration="long",priority="high" }, + values={ happiness=0, fear=3, despair=3,anger=0 }, +} + +Entity { + name = "Witnessed Black Magic", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN witnessed a terrifying occult ritual!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN witnessed a terrifying occult ritual!", + icon="eldritch", + iconSkin="thoughtIcons.xml", + duration="long", + priority="medium" }, + values={ fear=5,despair=10}, +} + +Entity { + name = "Witnessed Black Magic and Approved", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN witnessed a delightful occult ritual!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN witnessed a delightful occult ritual!", + icon="eldritch", + iconSkin="thoughtIcons.xml", + duration="long", + priority="medium" }, + values={ happiness=5, despair=10}, +} + +Entity { + name = "Witnessed Eldritch Murder", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN witnessed a terrifying occult ritual used to murder someone!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN witnessed a terrifying occult ritual used to murder someone!", + icon="madness_extreme", + iconSkin="thoughtIcons.xml", + duration="long", + priority="medium" }, + values={ fear=10, happiness=-5, despair=10 }, +} + +Entity { + name = "Performed Black Magic", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN performed a terrifying occult ritual!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN performed a terrifying occult ritual!", + icon="eldritch", + iconSkin="thoughtIcons.xml", + duration="long", + priority="medium" }, + values={ despair=10}, +} + +-- Spectres + +Entity { + name = "Saw a Spectre", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN thought SUBJECTIVE_PERSONAL_PRONOUN saw OTHER_NAME.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN thought SUBJECTIVE_PERSONAL_PRONOUN saw OTHER_NAME.", + priority = "medium", + duration = "medium", + painting_description = "a painting of a shadow cast on a gravestone", + icon="skull", + iconSkin="thoughtIcons.xml"}, + values = {happiness=-1,fear= 5, despair=3} +} + +Entity { + name = "Saw a Spectre (and liked it)", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN thought SUBJECTIVE_PERSONAL_PRONOUN saw the spirit OTHER_NAME. Neat!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN thought SUBJECTIVE_PERSONAL_PRONOUN saw the spirit of OTHER_NAME. Neat!", + priority = "medium", + duration = "medium", + painting_description = "a painting of a shadow cast on a gravestone", + icon="skull", + iconSkin="thoughtIcons.xml"}, + values = {happiness=5,fear= 2, despair=5} +} + +Entity { + name = "Told of Murder (spectre)", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was told by OTHER_NAME of its own terrible murder!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was told by OTHER_NAME of its own terrible murder!", + priority = "high", + duration = "medium", + painting_description = "a painting of a shadow cast on a gravestone", + icon="act_of_murder", + iconSkin="thoughtIcons.xml"}, + values = {despair=3,anger=3,fear=4, happiness=0} +} + +Entity { + name = "Requested Burial (spectre)", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was told by OTHER_NAME that it wants its body to be given a proper burial.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was told by OTHER_NAME that it wanted its body to be given a proper burial.", + priority = "high", + duration = "medium", + painting_description = "a painting of a shadow cast on a gravestone", + icon="skull", + iconSkin="thoughtIcons.xml"}, + values = {despair=3,anger=3,fear=4,happiness=1} +} + +Entity { + name = "Terrified by a Spectre", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was terrified by OTHER_NAME!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was terrified by OTHER_NAME!", + priority = "high", + duration = "medium", + painting_description = "a painting of a shadow cast on a gravestone", + icon="skull", + iconSkin="thoughtIcons.xml"}, + values = {happiness=0,fear= 6} +} + +Entity { + name = "Eldritch: Howling Void", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN heard a howling void, a maw of eldritch origin, speak POSSESSIVE_PERSONAL_PRONOUN name and suggest strange ideas.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN heard a howling void, a maw of eldritch origin, speak POSSESSIVE_PERSONAL_PRONOUN name and suggest strange ideas.", + priority = "medium", + duration = "medium", + painting_description = "a painting of shadows surrounding a lone figure with their hands clamped over their ears", + icon="eldritch", + iconSkin="thoughtIcons.xml"}, + values = {fear= 10,despair=10} +} + +Entity { + name = "Eldritch: Call Of The Sea", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN heard the call of the sea, to a strange atavistic life beneath the waves...", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN heard the call of the sea, to a strange atavistic life beneath the waves...", + priority = "medium", + duration = "medium", + painting_description = "a painting of shadows surrounding a lone figure with their hands clamped over their ears", + icon="eldritch", + iconSkin="thoughtIcons.xml"}, + values = {fear= 10,despair=10} +} + +Entity { + name = "Eldritch: Heard Whispers", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN heard unnatural whispers, but couldn't make sense of anything but POSSESSIVE_PERSONAL_PRONOUN own name.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN heard unnatural whispers, but couldn't make sense of anything but POSSESSIVE_PERSONAL_PRONOUN own name.", + priority = "medium", + duration = "medium", + painting_description = "a painting of shadows surrounding a lone figure with their hands clamped over their ears", + icon="eldritch", + iconSkin="thoughtIcons.xml"}, + values = {fear= 5,despair=10} +} + +Entity { + name = "Eldritch: Rune Visions", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw glowing, inhuman sigils when CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN closed POSSESSIVE_PERSONAL_PRONOUN eyes. They changed with every blink until they were gone.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw glowing, inhuman sigils when CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN closed POSSESSIVE_PERSONAL_PRONOUN eyes. They changed with every blink until they were gone.", + priority = "medium", + duration = "medium", + painting_description = "a painting of shadows surrounding a lone figure with their hands clamped over their ears", + icon="eldritch", + iconSkin="thoughtIcons.xml"}, + values = {fear= 5, despair=10, } +} + +Entity { + name = "Cultist Shrines Ordered Destroyed", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN is extremely angry that cultist shrines have been ordered destroyed!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was extremely angry that cultist shrines were destroyed!", + priority = "medium", + duration = "high", + painting_description = "a painting of shadows surrounding a lone figure with their hands clamped over their ears", + icon="cultist_no", + iconSkin="thoughtIcons.xml"}, + values = {anger=7,happiness=0} +} + + +Entity { + name = "The Stars Are Right", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt the stars calling.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt the stars calling.", + priority = "medium", + duration = "medium", + painting_description = "twinkling, spiralling stars in the night sky", + icon="selenian_polyp_night", + iconSkin="thoughtIcons.xml"}, + values = {happiness=5,fear=-5,despair=10,anger=-5 } +} + + +Entity { + name = "Skilled Up", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN became more skillful in POSSESSIVE_PERSONAL_PRONOUN trade!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN became more skillful in POSSESSIVE_PERSONAL_PRONOUN trade.", + icon="skillup", + iconSkin="thoughtIcons.xml", + duration="long", + priority="medium" }, + values = { happiness=7, anger = -3, fear = -3, despair = -3 } +} + +Entity { + name = "Angered By Meddling With Idol", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was angered and upset that POSSESSIVE_PERSONAL_PRONOUN idol was meddled with!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was angered and upset that POSSESSIVE_PERSONAL_PRONOUN idol was meddled with!", + painting_description = "a human figure in a murky field with the face cut out", + icon="cultist_shrine", iconSkin="thoughtIcons.xml", + duration="medium", priority="medium" }, + values = { anger = 15, despair= 10, happiness=-10, fear=-5} +} +Entity { + name = "Upset At Loss Of Idol", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was upset that POSSESSIVE_PERSONAL_PRONOUN idol was taken away.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was upset that POSSESSIVE_PERSONAL_PRONOUN idol was taken away.", + painting_description = "a portrait of an unhappy-looking criminal in irons", + icon="cultist_shrine", iconSkin="thoughtIcons.xml", duration="medium", priority="low" }, + values = { anger = 5, happiness = -8, despair=5, fear = 5 } +} + + + +-- The Memory Hole + + Entity { + name = "Got Married", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN ", + priority = "high", duration = "long",icon="wedding", painting_description = "a picture of a wedding"}, + values = {happiness = 7, despair = 0, anger = 0} + } + + Entity { + name = "Observed Culturally Acceptable Wedding", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN observed a lovely class-appropriate wedding lately", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN observed a lovely class-appropriate wedding.", + painting_description = "a picture of a class-appropriate wedding", + priority = "medium", duration = "medium",icon="wedding"}, + values = {happiness = 5, despair= 0, anger = 0} + } + + Entity { + name = "Observed Culturally Unacceptable Wedding", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN observed the tawdry mixing of the social classes lately.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN witnessed a tawdry mixing of the social classes at an ill-advised wedding.", + priority = "medium", duration = "medium", + painting_description = "a painting depicting the inappropriate mixing of social classes at a wedding", + icon="wedding_mixed_class_disapprove"}, + values = {happiness = 0, despair= 1, anger = 1} + } + + Entity { + name = "Observed Wedding", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN observed a wedding lately", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN observed a wedding.", + icon="wedding", + painting_description = "a painting of a wedding", + priority = "medium", duration = "medium"}, + values = {happiness = 5, despair= 0, anger = 0} + } + +Entity { + name = "Eldritch: Beckoning Of The Sea", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN hears the crashing of waves, the embrace of the Sea. Beckoning.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN heard the crashing of waves, the embrace of the Sea. Beckoning.", + priority = "medium", + duration = "medium", + painting_description = "a painting of the endless waves of the sea, seen from below", + icon="sea", + iconSkin="thoughtIcons.xml"}, + values = { happiness=-2,despair=15, anger=5 } +} +Entity { + name = "Eldritch: RECEIVED INSTRUCTIONS", + type = "emotion", + info = { + description = "RECEIVING INSTRUCTION/ INSTANTIATION ERROR/ QUERY ARCHITECT RETRY", + journalDescription = "RECEIVED INSTRUCTION/ INSTANTIATION ERROR/ QUERY ARCHITECT RETRY", + priority = "medium", + duration = "medium", + painting_description = "a diagram for the construction of an impossible building - or machine?", + icon="obeliskian", + iconSkin="thoughtIcons.xml"}, + values = {happiness=-5,despair=15} +} +Entity { + name = "cultist_selenian", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN can feel the stars winking and moving, almost aligned... ", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt the stars winking and moving, almost aligned... ", + priority = "medium", + duration = "medium", + painting_description = "a painting of a starry night, all whorls and movement", + icon="selenian_polyp_night", + iconSkin="thoughtIcons.xml"}, + values = {happiness=2} +} +Entity { + name = "Eldritch: Gate of Death", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt the infinite void beyond the gate of death.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt the infinite void beyond the gate of death.", + priority = "medium", + duration = "medium", + painting_description = "a painting of a skull illuminated by shadows", + icon="black_skull", + iconSkin="thoughtIcons.xml"}, + values = {fear=10, despair=15} +} +Entity { + name = "Eldritch: Inhuman Sigils", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw glowing, inhuman sigils. They seem to move without moving.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw glowing, inhuman sigils that seemed to move without moving.", + priority = "medium", + duration = "medium", + painting_description = "a painting of a book, a knife, a goblet, and an orb", + icon="cultist_shrine", + iconSkin="thoughtIcons.xml"}, + values = {fear=10,happiness=-5,despair=15} +} +Entity { + name = "Eldritch: Fell Logic", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt nothing but a pure cascade of logic washing away all humanity.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt nothing but a pure cascade of logic washing away all humanity.", + priority = "medium", + duration = "medium", + painting_description = "a painting of gears within gears within gears", + icon="black_cog", + iconSkin="thoughtIcons.xml"}, + values = {fear=-10,happiness=-5,despair=15,anger=-10} +} +Entity { + name = "Eldritch: Whispering Trees", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN heard the trees whispering POSSESSIVE_PERSONAL_PRONOUN name to each other, and was glad.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN heard the trees whispering POSSESSIVE_PERSONAL_PRONOUN name to each other, and was glad.", + priority = "medium", + duration = "medium", + painting_description = "a painting of trees all huddled around, speaking to one another", + icon="black_tree", + iconSkin="thoughtIcons.xml"}, + values = {happiness= 5, despair=15,} +} +Entity { + name = "Eldritch: The Fell Queen", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt the majesty of the Queen stir in POSSESSIVE_PERSONAL_PRONOUN chest.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt the majesty of the Queen stir in POSSESSIVE_PERSONAL_PRONOUN chest.", + priority = "medium", + duration = "medium", + painting_description = "a painting of the Queen, but done all in black; bit hard to see what's going on, really", + icon="black_crown", + iconSkin="thoughtIcons.xml"}, + values = {happiness=2} +} +Entity { + name = "Eldritch: The Golden City", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw visions of a golden city filled with the dead.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw visions of a golden city filled with the dead.", + priority = "medium", + duration = "medium", + painting_description = "a painting of the Queen, but done all in black; bit hard to see what's going on, really", + icon="black_crown", + iconSkin="thoughtIcons.xml"}, + values = {despair=15, fear=10} +} + +Entity { + name = "Upset By Foreigner", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was upset by the pressence of a Foreigner in the colony. Who knows what they might do?", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was upset by the recent pressence of a Foreigner in the colony.", + priority = "medium", + duration = "medium", + painting_description = "a painting of the Union Cog", + icon="xenophobic", + iconSkin="thoughtIcons.xml"}, + values = {fear=10,happiness=-5,despair=5,anger=8} +} + +Entity { + name = "Upset By Breach Of Tradition", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was upset by a gross breach of proper Clockworkian Tradition. What is the world coming to?", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was upset by the recent breach of proper Clockworkian Tradition.", + priority = "medium", + duration = "medium", + painting_description = "a painting of the Union Cog", + icon="empire_flag", + iconSkin="thoughtIcons.xml"}, + values = {fear=8,happiness=-5,despair=5,anger=10} +} + +Entity { + name = "Sweltered under the Hot Sun", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN worked under the heat of an unusually bright sun and felt rather exhausted.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was exhausted from working under an unusually bright sun.", + priority = "medium", + duration = "medium", + painting_description = "a painting of the almighty sun", + icon="sun", + iconSkin="thoughtIcons.xml"}, + values = {happiness=-5,anger=5} +} + +Entity { + name = "Enjoyed the Warm Sun", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN worked under the pleasant warmth of the sun and felt at ease.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN worked under the pleasant warmth of the sun and felt at ease.", + priority = "medium", + duration = "medium", + painting_description = "a painting of the almighty sun", + icon="sun", + iconSkin="thoughtIcons.xml"}, + values = {happiness=5,anger=-5} +} + +Entity { + name = "Sweltered in the Humid Weather", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt rather sticky due to the humidity of the jungle. Gross.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt rather sticky due to the humidity of the jungle.", + priority = "medium", + duration = "medium", + painting_description = "a painting of a melting tree", + icon="exotic_wilderness", + iconSkin="thoughtIcons.xml"}, + values = {happiness=-5,despair=5} +} + +Entity { + name = "Tormented by Blasting Heat", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN sweltered under an intense desert heat and was miserable.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN sweltered under an intense desert heat and was miserable.", + priority = "medium", + duration = "medium", + painting_description = "a painting of a melting colonist", + icon="spoiled_crops", + iconSkin="thoughtIcons.xml"}, + values = {happiness=-5,anger=5,despair=10} +} + +Entity { + name = "Enjoyed A Respite From Heat", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN enjoyed the coolness of a cloudy desert day.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN enjoyed the coolness of a cloudy desert day.", + priority = "medium", + duration = "medium", + painting_description = "a painting of a beautiful sunset", + icon="cloud_light", + iconSkin="thoughtIcons.xml"}, + values = {happiness=5,anger=-5} +} + +Entity { + name = "Endured the Searing Cold", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN endured terrible chilly winds, and wished desperately for warmth.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN endured terrible chilly winds, and wished desperately for warmth.", + priority = "medium", + duration = "medium", + painting_description = "a painting of a cold peak", + icon="spoiled_crops", + iconSkin="thoughtIcons.xml"}, + values = {happiness=-10,despair=15} +} +Entity { + name = "Felt An Odd Presence", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN worked in strange hazy weather and felt as if SUBJECTIVE_PERSONAL_PRONOUN were part of something bigger than OBJECTIVE_PERSONAL_PRONOUNself.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN worked in strange hazy weather and felt as if SUBJECTIVE_PERSONAL_PRONOUN were part of something bigger than OBJECTIVE_PERSONAL_PRONOUNself.", + priority = "medium", + duration = "medium", + painting_description = "a painting of an eerily smiling face", + icon="spoiled_crops", + iconSkin="thoughtIcons.xml"}, + values = {happiness=30,despair=30} +} + +Entity { + name = "Driven to Despair by Eerie Singing", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was forced to bear the eerie singing of the grass and rocks.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was forced to bear the eerie singing of the grass and rocks.", + priority = "medium", + duration = "medium", + painting_description = "a painting of howling faces in the stone", + icon="sun", + iconSkin="thoughtIcons.xml"}, + values = {happiness=-5,despair=20} +} + +Entity { + name = "Struck By Mind Blast", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was overwhelmed by terrible, painful psychic energies.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was overwhelmed by terrible, painful psychic energies.", + priority = "medium", + duration = "medium", + painting_description = "a painting of howling faces in the stone", + icon="eldritch", + iconSkin="thoughtIcons.xml"}, + values = {happiness=-5,despair=12} +} + +Entity { + name = "Driven to Despair by Eerie Spectres", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was tormented by spectres night and day!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was tormented by malevolent spectres that walked during the day!", + priority = "medium", + duration = "long", + painting_description = "a painting of screaming skulls surrounding the viewer", + icon="sun", + iconSkin="thoughtIcons.xml"}, + values = {happiness=-5,despair=15} +} + +Entity { + name = "Unnerved by Howling in the Night", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN is deeply disturbed by strange visions brought about by the unnatural noises in the night.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was deeply disturbed by strange visions brought about by the unnatural noises in the night.", + priority = "medium", + duration = "medium", + painting_description = "a painting of eyes and teeth", + icon="mad", + iconSkin="thoughtIcons.xml"}, + values = {happiness=-10,despair=10, fear=10} +} + +Entity { + name = "Workbench Is Whispering", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN keeps hearing POSSESSIVE_PERSONAL_PRONOUN workbench whispering cryptic instructions to OBJECTIVE_PERSONAL_PRONOUN.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN heard POSSESSIVE_PERSONAL_PRONOUN workbench whispering cryptic instructions to OBJECTIVE_PERSONAL_PRONOUN.", + priority = "medium", + duration = "medium", + painting_description = "a workbench with a daemonic face, speaking in strange runes", + icon="black_cog", + iconSkin="thoughtIcons.xml"}, + values = {fear=12,despair=15} +} + +Entity { + name = "Summoned Friendly Spectres", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN is proud and a little bit terrified by the process of summoning Dream Spectres to protect the colony.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was proud and a little bit terrified by the process of summoning Dream Spectres to protect the colony.", + priority = "medium", + duration = "medium", + painting_description = "a workbench with a daemonic face, speaking in strange runes", + icon="black_cog", + iconSkin="thoughtIcons.xml"}, + values = {happiness=15,fear=5,despair=10} +} + +Entity { + name = "Aided by Creepy Friendly Spectres", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw the colony being guarded by creepy Dream Spectres.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN saw the colony being guarded by creepy Dream Spectres.", + priority = "medium", + duration = "medium", + painting_description = "a workbench with a daemonic face, speaking in strange runes", + icon="black_cog", + iconSkin="thoughtIcons.xml"}, + values = {happiness=15,fear=5,despair=5} +} + +Entity { + name = "Summoned Nightmare Spectres", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN accidentally summoned Nightmare Spectres and is horrified!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN accidentally summoned Nightmare Spectres and was horrified.", + priority = "medium", + duration = "medium", + painting_description = "a workbench with a daemonic face, speaking in strange runes", + icon="black_cog", + iconSkin="thoughtIcons.xml"}, + values = {fear=25,despair=25} +} + +Entity { + name = "Tormented by Nightmare Spectres", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN has been tormented by horrible Nightmare Spectres.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was tormented by horrible Nightmare Spectres.", + priority = "medium", + duration = "medium", + painting_description = "a workbench with a daemonic face, speaking in strange runes", + icon="black_cog", + iconSkin="thoughtIcons.xml"}, + values = {fear=20,despair=15} +} + +Entity { + name = "Concerned by Spectre Related Death", + type = "emotion", + info = { + description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN is concerned to hear a citizen died in strange spectre-related circumstances.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was concerned to hear a citizen died in strange spectre-related circumstances.", + priority = "medium", + duration = "medium", + painting_description = "a workbench with a daemonic face, speaking in strange runes", + icon="black_cog", + iconSkin="thoughtIcons.xml"}, + values = {fear=5} +} + +Entity { + name = "Upset By Interrogation", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was upset due to being roughly interrogated.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was upset due to being roughly interrogated.", + painting_description = "a picture of a Brutish NCO", + icon="morale3", iconSkin="thoughtIcons.xml", duration="medium", priority="medium" }, + values = { happiness = -6, anger =4, fear=2 } +} + +Entity { + name = "Conspired With A Comrade", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN conspired against the ruling class with a fellow Communist.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN conspired against the ruling class with a fellow Communist.", + painting_description = "workers rising in revolution", + icon="red_communism", + iconSkin="thoughtIcons.xml", + duration="medium", priority="medium" }, + values = { happiness = -5, anger=10 } +} +Entity { + name = "Inspired By A Comrade", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was inspired toward communistic revolt!", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was inspired toward communistic revolt!", + painting_description = "workers rising in revolution", + icon="red_communism", + iconSkin="thoughtIcons.xml", + duration="medium", priority="medium" }, + values = { happiness = -5, anger=10 } +} + + +Entity { + name = "Listened to Agitator", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN listened to the demagoguery of a Communist Agitator.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN listened to the demagoguery of a Communist Agitator.", + painting_description = "labourers oppressed by overseers", + icon="communism", + iconSkin="thoughtIcons.xml", + duration="medium", priority="medium" }, + values = { happiness = -2, anger=5 } +} + +Entity { + name = "Strange Interrogation", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN subject to a strange interrogation - it seemed more in support of The Occult than against.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN subject to a strange interrogation - it seemed more in support of The Occult than against.", + painting_description = "a picture of a Brutish NCO", + icon="cultist_glowing", iconSkin="thoughtIcons.xml", duration="medium", priority="medium" }, + values = { happiness = -6, despair=5, fear=5 } +} + +Entity { + name = "Chilled By The Cold", + type = "emotion", + info = {description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was chilled to the bone by the cold wind.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN was chilled to the bone by the cold wind recently.", + priority = "medium", duration = "medium", + painting_description = "a dire snowscape", + icon="snowflake", iconSkin="thoughtIcons.xml" }, + values = { fear=2, despair=4, anger=4, happiness=-4 } +} + +Entity { + name = "Overheated", + type = "emotion", + info = { description = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN feels the oppressive heat wearing OBJECTIVE_PERSONAL_PRONOUN down.", + journalDescription = "CAPITALIZED_SUBJECTIVE_PERSONAL_PRONOUN felt the oppressive heat wearing OBJECTIVE_PERSONAL_PRONOUN down recently.", + priority = "medium", duration = "medium", + painting_description = "the sun", + icon="sun", iconSkin="thoughtIcons.xml" }, + values = { fear=0, despair=3, anger=3, happiness=-3 } +} \ No newline at end of file diff --git a/scripts/entity/modules.edb b/scripts/entity/modules.edb index 0eef0eb..49f663e 100644 --- a/scripts/entity/modules.edb +++ b/scripts/entity/modules.edb @@ -986,13 +986,13 @@ Entity name = "Upper Class Chair", displayname = "Ornate Chair", type = "chair", - description = "A vertiable throne, used by Our Betters. Made in a Carpentry Workshop. Quality: 0", + description = "A vertiable throne, used by Our Betters. Made in a Carpentry Workshop. Quality: -1", tags = { "upper_class_module", "chair" }, icon_skin = "ui//orderIcons.xml", icon="uc_chair_icon", tier=2, repair_materials = { "planks", "ingot_of_gold" }, - quality=0, + quality=-1, upkeep_type=3, upkeep_quantity=1 } @@ -1691,7 +1691,7 @@ Entity icon="lc_table_icon", tier=1, repair_materials={"planks"}, - quality=0, + quality=-1, upkeep_type=1, upkeep_quantity=1 } @@ -1708,7 +1708,7 @@ Entity icon="uc_table_icon", tier=2, repair_materials = { "planks", "ingot_of_gold" }, - quality=0, + quality=-1, upkeep_type=3, upkeep_quantity=1 } @@ -1737,7 +1737,7 @@ Entity icon_skin = "ui//orderIcons.xml", icon="lc_chair_icon", tier=1, - quality=0, + quality=-1, upkeep_type=-1, upkeep_quantity=-1 } @@ -1752,7 +1752,7 @@ Entity icon_skin = "ui//orderIcons.xml", icon="mc_chair_icon", tier=1, - quality=0, + quality=-1, upkeep_type=1, upkeep_quantity=1 } @@ -1760,7 +1760,7 @@ Entity Entity { name = "Middle Class Table and Chair Set", - displayname = "Practical Tale and Chair Set", + displayname = "Practical Table and Chair Set", type = "table", description = "A practical, well-wrought table and chair. Made in a Carpentry Workshop.", tags = { "middle_class_module", "table", "chair", "sittable" }, @@ -1768,7 +1768,7 @@ Entity icon="mc_table_icon", tier=2, repair_materials={"planks"}, - quality=0, + quality=-1, upkeep_type=1, upkeep_quantity=1 } diff --git a/scripts/entity/objectclusters.edb b/scripts/entity/objectclusters.edb new file mode 100644 index 0000000..ac363e8 --- /dev/null +++ b/scripts/entity/objectclusters.edb @@ -0,0 +1,1507 @@ +-- OBJECTCLUSTERS + +Entity { + name="Starting Building Materials", + type="objectcluster", + magnitude = 0, + pfx = "CeramicsStamperPoof", + clusterSpawnRadius = 3, + clusterContents={ }, + stackItems = true, + player_owned = true, + guaranteedContents={ + [1] = { entityType = "item", entityName = "planks", amount=4}, + [2] = { entityType = "item", entityName = "bricks", amount=3}, + [3] = { entityType = "item", entityName = "rough_stone_block", amount=3}, + }, +} + +Entity { + name="Starting Machine Parts", + type="objectcluster", + magnitude = 0, + clusterSpawnRadius = 3, + clusterContents={ }, + stackItems = true, + player_owned = true, + guaranteedContents={ + [1] = { entityType = "item", entityName = "iron_plates", amount=5}, + [2] = { entityType = "item", entityName = "copper_plates", amount=2}, + [3] = { entityType = "item", entityName = "iron_pipes", amount=2}, + [4] = { entityType = "item", entityName = "copper_pipes", amount=2}, + [5] = { entityType = "item", entityName = "brass_cogs", amount=1}, + }, + pfx = "CeramicsStamperPoof", +} + +-- for testing + +Entity { + name="Starting Food", + type="objectcluster", + magnitude = 0, + clusterSpawnRadius = 3, + clusterContents={ }, + stackItems = true, + player_owned = true, + guaranteedContents={ + [1] = { entityType = "item", entityName = "bushel_of_sausages", amount=12}, + [2] = { entityType = "item", entityName = "loaf_of_bread", amount=12}, + }, + pfx = "DustPuffLarge", +} + +Entity { + name="Starting Defense Armaments", + type="objectcluster", + clusterSpawnRadius = 4, + stackItems = true, + player_owned = true, + guaranteedContents={ + [1] = { entityType = "item", entityName = "landmine", amount=2 }, + [2] = { entityType = "item", entityName = "landmine", amount=1 }, + [3] = { entityType = "item", entityName = "landmine", amount=1 }, + [4] = { entityType = "item", entityName = "landmine", amount=1 }, + [5] = { entityType = "item", entityName = "boxed_musket_locker", amount=1}, + }, + pfx = "DustPuffLarge", +} + +Entity { + name="Starting Materials - Starter", + type="objectcluster", + magnitude = 0, + pfx = "CeramicsStamperPoof", + clusterSpawnRadius = 3, + player_owned = true, + clusterContents={ }, + stackItems = true, + guaranteedContents={ + [1] = { entityType = "item", entityName = "logs", amount=6}, + [2] = { entityType = "item", entityName = "rough_stone_block", amount=6}, + [3] = { entityType = "item", entityName = "planks", amount=7}, + }, +} + +Entity { + name="Starting Materials 2 - Starter", + type="objectcluster", + magnitude = 0, + clusterSpawnRadius = 3, + clusterContents={ }, + stackItems = true, + player_owned = true, + guaranteedContents={ + [1] = { entityType = "item", entityName = "cube_of_clay", amount=3}, + [2] = { entityType = "item", entityName = "bushel_of_sand", amount=2}, + [3] = { entityType = "item", entityName = "ammo1", amount=2}, + }, + pfx = "CeramicsStamperPoof", +} + +Entity { + name="Starting Food - Starter", + type="objectcluster", + magnitude = 0, + clusterSpawnRadius = 3, + clusterContents={ }, + stackItems = true, + player_owned = true, + guaranteedContents={ + [1] = { entityType = "item", entityName = "bushel_of_sausages", amount=30}, --these were 12 each but I upped em for the new tutorial + [2] = { entityType = "item", entityName = "loaf_of_bread", amount=30}, + }, + pfx = "DustPuffLarge", +} + +Entity { + name="Starting Materials - Advanced", + type="objectcluster", + magnitude = 0, + pfx = "CeramicsStamperPoof", + clusterSpawnRadius = 3, + clusterContents={ }, + stackItems = true, + player_owned = true, + guaranteedContents={ + [1] = { entityType = "item", entityName = "planks", amount=6}, + [2] = { entityType = "item", entityName = "bricks", amount=6}, + [3] = { entityType = "item", entityName = "ammo1", amount=2}, + }, +} + +Entity { + name="Starting Materials 2 - Advanced", + type="objectcluster", + magnitude = 0, + clusterSpawnRadius = 3, + clusterContents={ }, + stackItems = true, + player_owned = true, + guaranteedContents={ + [1] = { entityType = "item", entityName = "glass_panes", amount=3}, + }, + pfx = "CeramicsStamperPoof", +} + +Entity { + name="Starting Food - Advanced", + type="objectcluster", + magnitude = 0, + clusterSpawnRadius = 3, + clusterContents={ }, + stackItems = true, + player_owned = true, + guaranteedContents={ + [1] = { entityType = "item", entityName = "bushel_of_sausages", amount=15}, + [2] = { entityType = "item", entityName = "loaf_of_bread", amount=15}, + }, + pfx = "DustPuffLarge", +} + +Entity { + name="Starting Materials - Faststart", + type="objectcluster", + magnitude = 0, + pfx = "CeramicsStamperPoof", + clusterSpawnRadius = 3, + clusterContents={ }, + stackItems = true, + player_owned = true, + guaranteedContents={ + [1] = { entityType = "item", entityName = "logs", amount=10}, + [2] = { entityType = "item", entityName = "rough_stone_block", amount=10}, + }, +} + +Entity { + name="Starting Food - Faststart", + type="objectcluster", + magnitude = 0, + clusterSpawnRadius = 3, + clusterContents={ }, + stackItems = true, + player_owned = true, + guaranteedContents={ + [1] = { entityType = "item", entityName = "bushel_of_sausages", amount=7}, + [2] = { entityType = "item", entityName = "loaf_of_bread", amount=6}, + [3] = { entityType = "item", entityName = "ammo1", amount=2}, + }, + pfx = "DustPuffLarge", +} + +Entity { + name="Starting Materials - Skills", + type="objectcluster", + magnitude = 0, + pfx = "CeramicsStamperPoof", + clusterSpawnRadius = 3, + clusterContents={ }, + stackItems = true, + player_owned = true, + guaranteedContents={ + [1] = { entityType = "item", entityName = "logs", amount=7}, + }, +} + +Entity { + name="Starting Food - Skills", + type="objectcluster", + magnitude = 0, + clusterSpawnRadius = 3, + clusterContents={ }, + stackItems = true, + player_owned = true, + guaranteedContents={ + [1] = { entityType = "item", entityName = "bushel_of_sausages", amount=10}, + [2] = { entityType = "item", entityName = "loaf_of_bread", amount=10}, + }, + pfx = "DustPuffLarge", +} + +Entity { + name="Starting Materials - Metalworking", --this is no longer metalworking but a naturalism build. I don't feel like dealing with renaming it right now. + type="objectcluster", + magnitude = 0, + pfx = "CeramicsStamperPoof", + clusterSpawnRadius = 3, + clusterContents={ }, + stackItems = true, + player_owned = true, + guaranteedContents={ + [1] = { entityType = "item", entityName = "bricks", amount=7}, + [2] = { entityType = "item", entityName = "planks", amount=7}, + [3] = { entityType = "item", entityName = "boxed_workbench", amount=1}, + [4] = { entityType = "item", entityName = "boxed_standing_desk", amount=1}, + [5] = { entityType = "item", entityName = "boxed_mineshaft_module", amount=1}, + }, +} +--[[ +Entity { + name="Starting Materials 2 - Metalworking", + type="objectcluster", + magnitude = 0, + clusterSpawnRadius = 3, + clusterContents={ }, + stackItems = true, + player_owned = true, + guaranteedContents={ + [1] = { entityType = "item", entityName = "hematite", amount=2}, + [2] = { entityType = "item", entityName = "malachite", amount=2}, + [3] = { entityType = "item", entityName = "coal", amount=4}, + }, + pfx = "CeramicsStamperPoof", +} + +Entity { + name="Starting Food - Metalworking", + type="objectcluster", + magnitude = 0, + clusterSpawnRadius = 3, + clusterContents={ }, + stackItems = true, + player_owned = true, + guaranteedContents={ + [1] = { entityType = "item", entityName = "bushel_of_sausages", amount=2}, + [2] = { entityType = "item", entityName = "loaf_of_bread", amount=2}, + }, + pfx = "DustPuffLarge", +} +]] +Entity { + name="Starting Materials - Defense", + type="objectcluster", + magnitude = 0, + pfx = "CeramicsStamperPoof", + clusterSpawnRadius = 3, + clusterContents={ }, + stackItems = true, + player_owned = true, + guaranteedContents={ + [1] = { entityType = "item", entityName = "logs", amount=40}, + [2] = { entityType = "item", entityName = "rough_stone_block", amount=6}, + [3] = { entityType = "item", entityName = "ammo1", amount=4}, + [4] = { entityType = "item", entityName = "ammo2", amount=2}, + }, +} + +Entity { + name="Starting Food - Defense", + type="objectcluster", + magnitude = 0, + clusterSpawnRadius = 3, + clusterContents={ }, + stackItems = true, + player_owned = true, + guaranteedContents={ + [1] = { entityType = "item", entityName = "bushel_of_sausages", amount=7}, + [2] = { entityType = "item", entityName = "loaf_of_bread", amount=7}, + }, + pfx = "DustPuffLarge", +} + +Entity { + name="Starting Food - Food", + type="objectcluster", + magnitude = 0, + clusterSpawnRadius = 3, + clusterContents={ }, + stackItems = true, + player_owned = true, + guaranteedContents={ + [1] = { entityType = "item", entityName = "bushel_of_sausages", amount=70}, + [2] = { entityType = "item", entityName = "loaf_of_bread", amount=70}, + }, + pfx = "DustPuffLarge", +} + +Entity { + name="Starting Materials - Science", + type="objectcluster", + magnitude = 0, + pfx = "CeramicsStamperPoof", + clusterSpawnRadius = 3, + clusterContents={ }, + stackItems = true, + player_owned = true, + guaranteedContents={ + [1] = { entityType = "item", entityName = "planks", amount=6}, + [2] = { entityType = "item", entityName = "bricks", amount=6}, + }, +} + +Entity { + name="Starting Materials 2 - Science", + type="objectcluster", + magnitude = 0, + clusterSpawnRadius = 3, + clusterContents={ }, + stackItems = true, + player_owned = true, + guaranteedContents={ + [1] = { entityType = "item", entityName = "boxed_macroscope", amount=1}, + [2] = { entityType = "item", entityName = "chest_of_science_materials", amount=3}, + }, + pfx = "CeramicsStamperPoof", +} + +Entity { + name="Gabion Gibs", + type="objectcluster", + clusterSpawnRange = { ["min"]=1, ["max"]=2 }, + clusterSpawnRadius = 1, + player_owned = false, + clusterContents={ + clearable = { "Wooden Debris, Small" }, + }, +} + +Entity { + name="Brick Fence Gibs", + type="objectcluster", + clusterSpawnRange = { ["min"]=1, ["max"]=2 }, + clusterSpawnRadius = 1, + player_owned = false, + clusterContents={ + clearable = { "Brick Debris, Small" }, + } +} + +Entity { + name="Wrecked Airdrop Debris Cluster", + type="objectcluster", + clusterSpawnRange = { ["min"]=3, ["max"]=5 }, + clusterSpawnRadius = 3, + player_owned = false, + clusterContents={ + clearable = { "Random Rubbish" , "Wrecked Airdrop Debris" }, + forageSource = { "Salvagable Wrecked Airdrop Crate" }, + } +} + +Entity { + name="Wrecked Airship Mast Cluster", + type="objectcluster", + clusterSpawnRange = { ["min"]=3, ["max"]=5 }, + clusterSpawnRadius = 3, + player_owned = false, + clusterContents={ + clearable = { "Brick Debris, Small" , "Wrecked Airdrop Debris" } + } +} + +Entity { + name="Coconut Palm Cluster", + type="objectcluster", + clusterSpawnRange = { ["min"]=2, ["max"]=3 }, + clusterSpawnRadius = 4, + player_owned = false, + clusterContents={ + forageSource = { "Coconut Palm" }, + } +} + +Entity { + name="Lacquer Plant Cluster", + type="objectcluster", + clusterSpawnRange = { ["min"]=2, ["max"]=5 }, + clusterSpawnRadius = 7, + player_owned = false, + clusterContents={ + forageSource = { "Lacquer Plant" }, + } +} + +Entity { + name="Battlefield Decor", + type="objectcluster", + clusterSpawnRange = { ["min"]=1, ["max"]=2 }, + clusterSpawnRadius = 8, + player_owned = false, + clusterContents={ + clearable = { "Small Crater", --"Smoking Small Crater", + "Medium Crater",-- "Smoking Medium Crater", + "Large Crater", "Random Rubbish", "Random Rubbish", + "Machine Rubbish", "Human Bones", "Human Bones", + "Human Bones", "Gibs", "Gibs", "Gibs" }, + } +} + +Entity { + name="Coal Nodes", + type="objectcluster", + clusterSpawnRange = { ["min"]=1, ["max"]=4 }, + clusterSpawnRadius = 2, + player_owned = false, + + clusterContents={ + oreNode = { "Coal Node" }, + }, +} + +Entity { + name="Hematite Nodes", + type="objectcluster", + clusterSpawnRange = { ["min"]=1, ["max"]=4 }, + clusterSpawnRadius = 2, + player_owned = false, + clusterContents={ + oreNode = { "Hematite Node" }, + }, +} + +Entity { + name="Malachite Nodes", + type="objectcluster", + clusterSpawnRange = { ["min"]=1, ["max"]=4 }, + clusterSpawnRadius = 2, + player_owned = false, + + clusterContents={ + oreNode = { "Malachite Node" }, + }, + +} + +Entity { + name="Chalk Nodes", + type="objectcluster", + clusterSpawnRange = { ["min"]=1, ["max"]=4 }, + clusterSpawnRadius = 2, + player_owned = false, + clusterContents={ + oreNode = { "Chalk Node" }, + }, +} + +Entity { + name="Sulphur Nodes", + type="objectcluster", + clusterSpawnRange = { ["min"]=1, ["max"]=4 }, + clusterSpawnRadius = 2, + player_owned = false, + clusterContents={ + oreNode = { "Sulphur Node" }, + }, +} + +Entity { + name="Leafy Gold Shrubs", + type="objectcluster", + clusterSpawnRange = { ["min"]=2, ["max"]=4 }, + clusterSpawnRadius = 2, + player_owned = false, + clusterContents={ + clearable = { "Leafy Gold Shrub" }, + } +} + +Entity { + name="Leafy Green Shrubs", + type="objectcluster", + player_owned = false, + clusterSpawnRange = { ["min"]=2, ["max"]=4 }, + clusterSpawnRadius = 2, + clusterContents={ + clearable = { "Leafy Green Shrub" }, + } +} + +Entity { + name="Brackens", + type="objectcluster", + player_owned = false, + clusterSpawnRange = { ["min"]=3, ["max"]=5 }, + clusterSpawnRadius = 2, + clusterContents={ + clearable = { "Bracken" }, + } +} + +Entity { + name="Sphalerite Nodes", + type="objectcluster", + clusterSpawnRange = { ["min"]=2, ["max"]=4 }, + clusterSpawnRadius = 2, + player_owned = false, + clusterContents={ + oreNode = { "Sphalerite Node" }, + }, +} + +Entity { + name="Gold Nodes", + type="objectcluster", + clusterSpawnRange = { ["min"]=1, ["max"]=4 }, + clusterSpawnRadius = 2, + player_owned = false, + clusterContents={ + oreNode = { "Gold Node" }, + }, +} + +Entity { + name="Clay Nodes", + type="objectcluster", + clusterSpawnRange = { ["min"]=3, ["max"]=5 }, + clusterSpawnRadius = 3, + player_owned = false, + clusterContents={ + oreNode = { "Clay Node" }, + }, +} + +Entity { + name="Stone Boulders", + type="objectcluster", + clusterSpawnRange = { ["min"]=3, ["max"]=5 }, + clusterSpawnRadius = 3, + player_owned = false, + clusterContents={ + oreNode = { "Rhyolite Boulder" }, + }, +} + +Entity { + name="Stone Outcrops", + type="objectcluster", + clusterSpawnRange = { ["min"]=3, ["max"]=5 }, + clusterSpawnRadius = 3, + player_owned = false, + clusterContents={ + oreNode = { "Rhyolite Outcrop" }, + }, +} + +Entity { + name="Favour Food", + type="objectcluster", + clusterSpawnRange = { ["min"]=4, ["max"]=16 }, + clusterSpawnRadius = 3, + player_owned = true, + clusterContents={ + item = {"bushel_of_sausages", "loaf_of_bread"} + }, +} + +Entity { + name="Random Commodities", + type="objectcluster", + clusterSpawnRange = { ["min"]=10, ["max"]=20 }, + clusterSpawnRadius = 4, + player_owned = true, + clusterContents={ + item = { "planks", "planks", "loaf_of_bread", + "bottle_of_whisky", "bricks", "bricks", + "copper_plates", "iron_plates", "iron_pipes", "copper_pipes", + "brass_cogs", "logs", "logs", "bag_of_wheat_flour", + "crate_of_glass_bottles", + "tin_of_meat", "landmine", "glass_panes", + "native_gold", "sulphur", "keg_of_black_powder", + "brass_ingots", "iron_ingots", "gold_ingots", "copper_ingots", "rough_stone_block", "bushel_of_sand", + "malachite","hematite","sphalerite","native_gold","cut_sugarcane", "coal", "lacquered_planks", "bricabrac", "brass_cogs", "steel_ingots", + "chalk",}, + } +} + +Entity { + name="Construction Materials", + type="objectcluster", + clusterSpawnRange = { ["min"]=10, ["max"]=20 }, + clusterSpawnRadius = 3, + player_owned = true, + clusterContents={ + item = { "planks", "planks", "planks", + "bricks", "bricks", + "copper_plates", "iron_plates", "iron_pipes", "copper_pipes", + "logs", "logs", "glass_panes", + "brass_ingots", "iron_ingots", "gold_ingots", "rough_stone_block", "rough_stone_block", "bushel_of_sand", + "lacquered_planks", "lacquered_planks", "bricabrac", "obeliskian_block", }, + }, + guaranteedContents={ + [1] = { entityType = "item", entityName = "planks", amount=4}, + [2] = { entityType = "item", entityName = "bricks", amount=3}, + [3] = { entityType = "item", entityName = "rough_stone_block", amount=3}, + }, +} + +Entity { + name="Bamboo Shipment", + type="objectcluster", + clusterSpawnRange = { ["min"]=10, ["max"]=20 }, + clusterSpawnRadius = 4, + player_owned = true, + clusterContents={ + item = { "logs", "logs", "logs", }, + } +} + +Entity { + name="Random Food", + type="objectcluster", + clusterSpawnRange = { ["min"]=10, ["max"]=20 }, + clusterSpawnRadius = 4, + player_owned = true, + + clusterContents={ + item = { "raw_beetle_steak", "cooked_beetle_steak", "loaf_of_bread", "tin_of_meat", + "maize_chowder", "crate_of_coconuts", + "stew", "bushel_of_orange_cup_fungus", "loaf_of_bread", "sugar_loaf", + "bushel_of_black_cup_fungus", "bushel_of_chillies", "bushel_of_cabbage", "bag_of_wheat_flour", + "tin_of_meat", "pumpkin", "bushel_of_maize", + "bushel_of_grapes", "bushel_of_saskatoonberries", "jar_of_beer", + "bottle_of_laudanum", "bottle_of_sulphur_tonic", "bucket_of_raw_opium", "cube_of_flesh", + "bottle_of_caninha", "bottle_of_guarapo", "raw_fish_steak", "bushel_of_exotic_caviar", "bucket_of_molasses", "bucket_of_agave_syrup" }, + } +} + +Entity { + name="Random Trade Food", + type="objectcluster", + clusterSpawnRange = { ["min"]=10, ["max"]=20 }, + clusterSpawnRadius = 4, + player_owned = true, + + clusterContents={ + item = { "crate_of_saskatoonberry_preserves", "crate_of_pickled_black_cup_fungus", "crate_of_pickled_white_cup_fungus", "tin_of_meat" }, + } +} + +Entity { + name="Steam Knight Supplies", + type="objectcluster", + clusterSpawnRange = { ["min"]=10, ["max"]=20 }, + clusterSpawnRadius = 4, + player_owned = true, + + clusterContents={ + item = { "construction_frame", "power_core", "steam_compressor", "prototype_steam_knight_chassis", "prototype_steam_knight_oculars", "reactive_catalyst", "reactive_catalyst","reactive_catalyst", "glass_panes", "iron_plates", "steel_ingots", "steel_plates", "brass_cogs", "planks", "bucket_of_ink", + "mk1_steam_knight_chassis", "mk1_steam_knight_oculars", "mk1_machine_gun","ammo_autoloader"}, + } +} + +Entity { + name="Random Cooked Food", + type="objectcluster", + clusterSpawnRange = { ["min"]=10, ["max"]=20 }, + clusterSpawnRadius = 4, + player_owned = true, + + clusterContents={ + item = { "cooked_beetle_steak", "loaf_of_bread", "stew", "loaf_of_bread",}, + } +} + +Entity { + name="Random Quality Food", + type="objectcluster", + clusterSpawnRange = { ["min"]=10, ["max"]=20 }, + clusterSpawnRadius = 4, + player_owned = true, + + clusterContents={ + item = { "berry_medley_stew", "farmers_stew", "bushel_of_sausages",}, + } +} + +Entity { + name="Random Quality Food", + type="objectcluster", + clusterSpawnRange = { ["min"]=10, ["max"]=20 }, + clusterSpawnRadius = 4, + player_owned = true, + + clusterContents={ + item = { "coconut_curry", "lingonberry_pie", "meat_pie", "fish_pie"}, + } +} + +Entity { + name="Butcher Gore", + type="objectcluster", + clusterSpawnRange = { ["min"]=1, ["max"]=2 }, + clusterSpawnRadius = 2, + player_owned = false, + + clusterContents={ + clearable = { "Gibs" }, + } +} + +Entity { + name="Gore Cluster", + type="objectcluster", + player_owned = false, + clusterSpawnRange = { ["min"]=1, ["max"]=2 }, + clusterSpawnRadius = 2, + clusterContents={ + clearable = { "Gibs" }, + } +} + +Entity { + name="Mob of Fishpeople", + type="objectcluster", + clusterSpawnRange = { ["min"]=4, ["max"]=6 }, + clusterSpawnRadius = 3, + player_owned = false, + clusterContents={ + fishperson = { "fishperson" }, + } +} + +Entity { + name="Group of Fishpeople", + type="objectcluster", + clusterSpawnRange = { ["min"]=2, ["max"]=4 }, + clusterSpawnRadius = 5, + player_owned = false, + clusterContents={ + fishperson = { "fishperson" }, + } +} + +Entity { + name="Obeliskian Servitors", + type="objectcluster", + clusterSpawnRange = { ["min"]=1, ["max"]=2 }, + clusterSpawnRadius = 3, + player_owned = false, + clusterContents={ + herd = { "obeliskian_servitor" }, + } +} + +Entity { + name="Flock of Dodos", + type="objectcluster", + clusterSpawnRange = { ["min"]=1, ["max"]=1 }, + clusterSpawnRadius = 1, + player_owned = false, + clusterContents={ + herd = { "Dodo" }, + } +} + + + +Entity { + name="Herd of Aurochs", + type="objectcluster", + clusterSpawnRange = { ["min"]=1, ["max"]=1 }, + clusterSpawnRadius = 1, + player_owned = false, + clusterContents={ + herd = { "Aurochs" }, + } +} + +Entity { + name="Skulk of Foxes", + type="objectcluster", + clusterSpawnRange = { ["min"]=3, ["max"]=6 }, + clusterSpawnRadius = 5, + player_owned = false, + clusterContents={ animal = { "Fox" }, } +} + +Entity { + name="Mans o Wars", + type="objectcluster", + clusterSpawnRange = { ["min"]=3, ["max"]=6 }, + clusterSpawnRadius = 5, + player_owned = false, + clusterContents={ animal = { "Man-o-war" }, } +} + +Entity { + name="beetleCluster", + type="objectcluster", + clusterSpawnRange = { ["min"]=6, ["max"]=10 }, + clusterSpawnRadius = 2, + player_owned = false, + clusterContents={ animal = { "Beetle" }, } +} + +Entity { + name="Vermin Beetle Spawn", + type="objectcluster", + clusterSpawnRange = { ["min"]=8, ["max"]=12 }, + clusterSpawnRadius = 1, + player_owned = false, + clusterContents={ animal = { "Beetle", }, + vermin = { "Tiny Beetle", "Tiny Beetle", + "Tiny Beetle", "Tiny Beetle", }, + }, +} + +Entity { + name="Aspen Cluster", + type="objectcluster", + clusterSpawnRange = { ["min"]=4, ["max"]=8 }, + clusterSpawnRadius = 4, + player_owned = false, + clusterContents={ tree = { "Aspen" }, } +} + +Entity { + name="Joshua Trees", + type="objectcluster", + clusterSpawnRange = { ["min"]=4, ["max"]=8 }, + clusterSpawnRadius = 4, + player_owned = false, + clusterContents={ tree = { "Joshua Tree" }, } +} + +Entity { + name="Mangroves", + type="objectcluster", + clusterSpawnRange = { ["min"]=4, ["max"]=8 }, + clusterSpawnRadius = 4, + player_owned = false, + clusterContents={ tree = { "Mangrove" }, } +} + +Entity { + name="Gutta Perchas", + type="objectcluster", + clusterSpawnRange = { ["min"]=4, ["max"]=8 }, + clusterSpawnRadius = 4, + player_owned = false, + clusterContents={ tree = { "Gutta Percha" }, } +} + +Entity { + name="Weeping Willows", + type="objectcluster", + clusterSpawnRange = { ["min"]=4, ["max"]=8 }, + clusterSpawnRadius = 4, + player_owned = false, + clusterContents={ tree = { "Weeping Willow" }, } +} + +-- EMPIRE AIRSHIP SUPPLIES + +Entity { + name="Construction Materials from Supply Ship", + type="objectcluster", + clusterSpawnRange = { ["min"]=2, ["max"]=5 }, + clusterSpawnRadius = 4, + player_owned = true, + clusterContents={ + item = { "rough_stone_block", "rough_stone_block", "logs", "logs", "cube_of_clay" }, + } +} + +Entity { + name="Food from Supply Ship", + type="objectcluster", + clusterSpawnRange = { min=10, max=16 }, + clusterSpawnRadius = 4, + player_owned = true, + clusterContents={ + item = { "loaf_of_bread", "bushel_of_sausages", "loaf_of_bread" }, + } +} + +Entity { + name="Alcohol Shipment", + type="objectcluster", + clusterSpawnRange = { min=1, max=1 }, + clusterSpawnRadius = 1, + player_owned = true, + clusterContents={ + item = { "bottle_of_whisky" }, + } +} + +Entity { + name="Science Crate Salvage", + type="objectcluster", + clusterSpawnRange = { min=1, max=3 }, + clusterSpawnRadius = 2, + player_owned = true, + tickerString = "Your Science Crate salvaged into the following: ", + clusterContents={ + item = { "hematite", "malachite", "sphalerite", "native_gold", "sulphur", "charcoal", "landmine", "cube_of_flesh", "bricabrac" }, + animal = {"Beetle", "Fox", "obeliskian_servitor" }, + tree = { "Weeping Willow" } + } +} + +Entity { + name="Random Animals", + type="objectcluster", + clusterSpawnRange = { min=1, max=5 }, + clusterSpawnRadius = 2, + player_owned = true, + tickerString = "Your Science Menagerie Crate contains the following: ", + clusterContents={ + animal = {"Beetle", "Fox", "Giant Snail", "Fox", "Land Dragon", "Deathwurm", "Deer", "Beetle", "Capybara", "Scrub Tortoise" } + } +} + +Entity { + name="Construction Materials looted from from Supply Ship", + type="objectcluster", + player_owned = true, + clusterSpawnRange = { ["min"]=2, ["max"]=5 }, + clusterSpawnRadius = 3, + tickerString = "The bandits drop off some goods: ", + clusterContents={ + item = { "bottle_of_laudanum", "saskatoonberry_pie", "bottle_of_sulphur_tonic", "bucket_of_raw_opium", + "lacquer", "sulphur", "chalk", "bricabrac", }, + } +} + +Entity { + name="Construction Materials looted from from Supply Ship (crim)", + type="objectcluster", + player_owned = true, + clusterSpawnRange = { ["min"]=2, ["max"]=5 }, + clusterSpawnRadius = 3, + tickerString = "Your citizen drops off some goods: ", + clusterContents={ + item = { "bottle_of_laudanum", "saskatoonberry_pie", "bottle_of_sulphur_tonic", "bucket_of_raw_opium", + "lacquer", "sulphur", "chalk", "bricabrac", }, + } +} + +Entity { + name="Church Supplies", + type="objectcluster", + player_owned = true, + clusterSpawnRange = { ["min"]=2, ["max"]=3 }, + clusterSpawnRadius = 3, + clusterContents={ + item = { "iron_cogs", "iron_cogs", "iron_cogs", "iron_cogs" }, + } +} + +Entity { + name="Construction Materials found by Colonist", + type="objectcluster", + player_owned = true, + clusterSpawnRange = { ["min"]=2, ["max"]=5 }, + clusterSpawnRadius = 3, + tickerString = "The un-accounted-for goods are as follows: ", + clusterContents={ + item = { "bottle_of_laudanum", "saskatoonberry_pie", "bottle_of_sulphur_tonic", "bucket_of_raw_opium", + "lacquer", "sulphur", "chalk", "bricabrac", }, + } +} + +Entity { + name="Guns and Ammo from Supply Ship", + type="objectcluster", + player_owned = true, + clusterSpawnRange = { min=2, max=5 }, + clusterSpawnRadius = 4, + clusterContents={ + item = { "boxed_musket_locker", "boxed_blunderbuss_locker","ammo1", "ammo2", "ammo1", "ammo2", "landmine", "landmine" },}, + guaranteedContents={ [1] = { entityType = "item", entityName = "ammo1", amount=2}, + [2] = { entityType = "item", entityName = "ammo2", amount=1}, }, +} + +Entity { + name="Armaments Colonial Ministry", + type="objectcluster", + player_owned = true, + clusterSpawnRange = { min=6, max=8 }, + clusterSpawnRadius = 4, + clusterContents={ + item = { "boxed_musket_locker", "boxed_blunderbuss_locker", "landmine","landmine","landmine","landmine", }, + }, + guaranteedContents={ [1] = { entityType = "item", entityName = "boxed_musket_locker", amount=1}, + [2] = { entityType = "item", entityName = "landmine", amount=1}, }, +} + +Entity { + name="Obeliskian Cluster", + type="objectcluster", + player_owned = false, + --guaranteedContents={ + -- [1] = { entityType="obeliskian_group", + -- entityName="Obeliskian Group", + -- amount=1}, }, + clusterSpawnRange = { min=8, max=10 }, + clusterSpawnRadius = 6, + clusterContents={ clearable = { "Dark Stone Monolith", + "Dark Stone Block", "Dark Stone Block", "Dark Stone Block", + "Dark Stone Block", "Dark Stone Block", "Dark Stone Block", }, + }, + setpieceContents={ + [1] = { objectType="objectcluster", objectName="Coal Nodes", spawnChance=20, relativePosition = { x=0, y=0 }, rotation="0" }, + [2] = { objectType="objectcluster", objectName="Hematite Nodes", spawnChance=20, relativePosition = { x=1, y=1 }, rotation="0" }, + [3] = { objectType="objectcluster", objectName="Malachite Nodes", spawnChance=20, relativePosition = { x=-1, y=1 }, rotation="0" }, + [4] = { objectType="objectcluster", objectName="Gold Nodes", spawnChance=20, relativePosition = { x=1, y=-1 }, rotation="0" }, + [5] = { objectType="objectcluster", objectName="Sulphur Nodes", spawnChance=20, relativePosition = { x=-1, y=-1 }, rotation="0" }, + [6] = { objectType="obeliskian_group", objectName="Obeliskian Group", spawnChance=50, relativePosition = { x=0, y=0 }, rotation="0" }, + [7] = { objectType="obeliskian", objectName="Obeliskian Servitor", spawnChance=50, relativePosition = { x=0, y=0 }, rotation="0" }, + [8] = { objectType="obeliskian", objectName="Obeliskian Servitor", spawnChance=50, relativePosition = { x=0, y=0 }, rotation="0" }, + [9] = { objectType="obeliskian", objectName="Obeliskian Guardian", spawnChance=50, relativePosition = { x=0, y=0 }, rotation="0" }, + }, +} + +Entity { + name="Obeliskian Ruins 00", + type="objectcluster", + player_owned = false, + setpieceContents={ + [1] = { objectType="clearable", objectName="Dark Stone Monolith", spawnChance=100, relativePosition = { x=0, y=0 }, rotation="90" }, + [2] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=100, relativePosition = { x=1, y=1 }, rotation="90" }, + [3] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=100, relativePosition = { x=-1, y=1 }, rotation="90" }, + [4] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=100, relativePosition = { x=1, y=-1 }, rotation="90" }, + [5] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=100, relativePosition = { x=-1, y=-1 }, rotation="90" }, + } +} + +Entity { + name="Obeliskian Ruins 01", + type="objectcluster", + player_owned = false, + setpieceContents={ + [1] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=0, y=0 }, rotation="90" }, + [2] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=0, y=1 }, rotation="90" }, + [3] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=0, y=2 }, rotation="90" }, + [4] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=0, y=3 }, rotation="90" }, + [5] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=0, y=4 }, rotation="90" }, + [6] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=0, y=5 }, rotation="90" }, + [7] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=0, y=6 }, rotation="90" }, + [8] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=0, y=7 }, rotation="90" }, + [9] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=0, y=8 }, rotation="90" }, + [10] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=1, y=0 }, rotation="90" }, + [11] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=1, y=4 }, rotation="90" }, + [12] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=1, y=8 }, rotation="90" }, + [13] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=2, y=0 }, rotation="90" }, + [14] = { objectType="clearable", objectName="Dark Stone Monolith", spawnChance=100, relativePosition = { x=2, y=2 }, rotation="90" }, + [15] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=2, y=4 }, rotation="90" }, + [16] = { objectType="clearable", objectName="Dark Stone Monolith", spawnChance=100, relativePosition = { x=2, y=6 }, rotation="90" }, + [17] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=2, y=8 }, rotation="90" }, + [18] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=3, y=0 }, rotation="90" }, + [19] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=3, y=4 }, rotation="90" }, + [20] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=3, y=8 }, rotation="90" }, + [21] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=4, y=0 }, rotation="90" }, + [22] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=4, y=1 }, rotation="90" }, + [23] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=4, y=2 }, rotation="90" }, + [24] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=4, y=3 }, rotation="90" }, + [25] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=4, y=4 }, rotation="90" }, + [26] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=4, y=5 }, rotation="90" }, + [27] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=4, y=6 }, rotation="90" }, + [28] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=4, y=7 }, rotation="90" }, + [29] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=4, y=8 }, rotation="90" }, + [30] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=5, y=0 }, rotation="90" }, + [31] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=5, y=4 }, rotation="90" }, + [32] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=5, y=8 }, rotation="90" }, + [33] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=6, y=0 }, rotation="90" }, + [34] = { objectType="clearable", objectName="Dark Stone Monolith", spawnChance=100, relativePosition = { x=6, y=2 }, rotation="90" }, + [35] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=6, y=4 }, rotation="90" }, + [36] = { objectType="clearable", objectName="Dark Stone Monolith", spawnChance=100, relativePosition = { x=6, y=6 }, rotation="90" }, + [37] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=6, y=8 }, rotation="90" }, + [38] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=7, y=0 }, rotation="90" }, + [39] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=7, y=4 }, rotation="90" }, + [40] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=7, y=8 }, rotation="90" }, + [41] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=8, y=0 }, rotation="90" }, + [42] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=8, y=1 }, rotation="90" }, + [43] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=8, y=2 }, rotation="90" }, + [44] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=8, y=3 }, rotation="90" }, + [45] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=8, y=4 }, rotation="90" }, + [46] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=8, y=5 }, rotation="90" }, + [47] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=8, y=6 }, rotation="90" }, + [48] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=8, y=7 }, rotation="90" }, + [49] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=75, relativePosition = { x=8, y=8 }, rotation="90" }, + } +} + +Entity { + name="Obeliskian Ruins 02", + type="objectcluster", + player_owned = false, + setpieceContents={ + [1] = { objectType="clearable", objectName="Giant Dark Stone Monolith", spawnChance=100, relativePosition = { x=0, y=0 }, rotation="90" }, + [2] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=90, relativePosition = { x=-2, y=-2 }, rotation="90" }, + [3] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=90, relativePosition = { x=-3, y=-3 }, rotation="90" }, + [4] = { objectType="clearable", objectName="Dark Stone Monolith", spawnChance=95, relativePosition = { x=-4, y=-4 }, rotation="0" }, + [5] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=90, relativePosition = { x=2, y=2 }, rotation="90" }, + [6] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=90, relativePosition = { x=3, y=3 }, rotation="90" }, + [7] = { objectType="clearable", objectName="Dark Stone Monolith", spawnChance=95, relativePosition = { x=4, y=4 }, rotation="90" }, + [8] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=90, relativePosition = { x=-2, y=2 }, rotation="90" }, + [9] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=90, relativePosition = { x=-3, y=3 }, rotation="90" }, + [10] = { objectType="clearable", objectName="Dark Stone Monolith", spawnChance=95, relativePosition = { x=-4, y=4 }, rotation="180" }, + [11] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=90, relativePosition = { x=2, y=-2 }, rotation="90" }, + [12] = { objectType="clearable", objectName="Dark Stone Block", spawnChance=90, relativePosition = { x=3, y=-3 }, rotation="90" }, + [13] = { objectType="clearable", objectName="Dark Stone Monolith", spawnChance=95, relativePosition = { x=4, y=-4 }, rotation="270" }, + } +} + +Entity { + name="Artifact Dig Site", + type="objectcluster", + player_owned = true, + magnitude = 1, + clusterSpawnRadius = 0, + clusterContents={ + item = { "fishy_idol", "geometer_canopic_jar", "obeliskian_seal", "idol_of_quaggaroth" }, }, + guaranteedContents={ + [1] = { entityType = "clearable", entityName = "Large Crater" }, }, +} + +Entity { + name="Machine Debris", + type="objectcluster", + player_owned = false, + setpieceContents={ + [1] = { objectType="forageSource", objectName="Salvagable Machine Debris", spawnChance=100, relativePosition = { x=0, y=0 }, rotation="0" }, + [2] = { objectType="forageSource", objectName="Salvagable Machine Debris", spawnChance=90, relativePosition = { x=-1, y=0 }, rotation="0" }, + [3] = { objectType="forageSource", objectName="Salvagable Machine Debris", spawnChance=90, relativePosition = { x=-1, y=1 }, rotation="0" }, + [4] = { objectType="forageSource", objectName="Salvagable Machine Debris", spawnChance=95, relativePosition = { x=-2, y=0 }, rotation="0" }, + } +} + + +Entity { + name="Random Ores", + type="objectcluster", + clusterSpawnRange = { ["min"]=4, ["max"]=7 }, + clusterSpawnRadius = 2, + player_owned = true, + + clusterContents={ + item = { "malachite","hematite","sphalerite","native_gold","sulphur" }, + }, +} + +Entity { + name="Random Ingots", + type="objectcluster", + clusterSpawnRange = { ["min"]=2, ["max"]=4 }, + clusterSpawnRadius = 2, + player_owned = true, + + clusterContents={ + item = { "iron_ingots","copper_ingots","zinc_ingots","gold_ingots", }, + }, +} + +Entity { + name="Random Stone Blocks", + type="objectcluster", + clusterSpawnRange = { ["min"]=2, ["max"]=4 }, + clusterSpawnRadius = 2, + player_owned = true, + + clusterContents={ + item = { "rough_stone_block", }, + }, +} + +Entity { + name="Obeliskian Gibs", + clusterSpawnRange = { ["min"]=1, ["max"]=2 }, + clusterSpawnRadius = 1, + type="objectcluster", + player_owned = false, + clusterContents={ + clearable = { "Basalt Debris", }, + } +} + +Entity { + name="Obeliskian Harvest", + clusterSpawnRange = { ["min"]=1, ["max"]=3 }, + clusterSpawnRadius = 2, + type="objectcluster", + player_owned = true, + clusterContents={ + clearable = { "Basalt Debris", }, + item = { "idol_of_quaggaroth", + "hematite","hematite", + "malachite","malachite", + "sphalerite", "native_gold", + "chalk", "sulphur", "iron_ingots", + "copper_ingots", "zinc_ingots", "brass_ingots", "gold_ingots", + "coal","coal", "cube_of_clay","cube_of_clay", + "bushel_of_sand","bushel_of_sand", + "obeliskian_seal", }, + } +} + +Entity { + name="Landmine Supply Drop", + type="objectcluster", + clusterSpawnRange = { min=4, max=6 }, + clusterSpawnRadius = 3, + stackItems = false, + player_owned = true, + clusterContents={ item = { "landmine", "landmine", "landmine" }, }, + pfx = "DustPuffLarge", +} + + +Entity { + name="Module Crates", + type="objectcluster", + magnitude = 0, + clusterSpawnRadius = 5, + clusterContents={ }, + stackItems = true, + player_owned = true, + guaranteedContents={ + { entityType = "item", entityName = "boxed_workbench", amount=3}, + { entityType = "item", entityName = "boxed_brick_ceramics_kiln", amount=3}, + { entityType = "item", entityName = "boxed_iron_ceramics_kiln", amount=3}, + { entityType = "item", entityName = "boxed_workbench", amount=3}, + { entityType = "item", entityName = "boxed_stone_charcoal_kiln", amount=3}, + { entityType = "item", entityName = "boxed_brick_charcoal_kiln", amount=3}, + { entityType = "item", entityName = "boxed_iron_charcoal_kiln", amount=3}, + { entityType = "item", entityName = "boxed_small_iron_oven", amount=3}, + { entityType = "item", entityName = "boxed_workbench", amount=3}, + { entityType = "item", entityName = "boxed_power_lathe", amount=3}, + { entityType = "item", entityName = "boxed_iron_smelting_crucible", amount=3}, + { entityType = "item", entityName = "boxed_power_saw", amount=3}, + { entityType = "item", entityName = "boxed_mixing_tank", amount=3}, + { entityType = "item", entityName = "boxed_brewing_vat", amount=3}, + { entityType = "item", entityName = "boxed_still", amount=3}, + { entityType = "item", entityName = "boxed_workbench", amount=3}, + { entityType = "item", entityName = "boxed_workbench", amount=3}, + { entityType = "item", entityName = "boxed_chemistry_workbench", amount=3}, + { entityType = "item", entityName = "boxed_smithing_forge", amount=3}, + { entityType = "item", entityName = "boxed_booze_vat", amount=3}, + { entityType = "item", entityName = "boxed_ceramics_workbench", amount = 2}, + { entityType = "item", entityName = "boxed_wooden_altar", amount=3}, + { entityType = "item", entityName = "boxed_stone_altar", amount=3}, + { entityType = "item", entityName = "boxed_large_stone_altar", amount=3}, + { entityType = "item", entityName = "boxed_macroscope", amount=3}, + { entityType = "item", entityName = "boxed_candelabra", amount=3}, + { entityType = "item", entityName = "boxed_church_banner", amount=3}, + { entityType = "item", entityName = "boxed_church_pews", amount=3}, + { entityType = "item", entityName = "boxed_cot", amount=3}, + { entityType = "item", entityName = "boxed_cot", amount=3}, + { entityType = "item", entityName = "boxed_cot", amount=3}, + { entityType = "item", entityName = "boxed_middle_class_single_bed", amount=3}, + { entityType = "item", entityName = "boxed_upper_class_bed", amount=3}, + { entityType = "item", entityName = "boxed_upper_class_chair", amount=3}, + { entityType = "item", entityName = "boxed_upper_class_table", amount=3}, + { entityType = "item", entityName = "boxed_fancy_bookshelf", amount=3}, + { entityType = "item", entityName = "boxed_bookshelf", amount=3}, + { entityType = "item", entityName = "boxed_lc_cabinet", amount=3}, + { entityType = "item", entityName = "boxed_mc_cabinet", amount=3}, + { entityType = "item", entityName = "boxed_uc_cabinet", amount=3}, + { entityType = "item", entityName = "boxed_bureaucrats_cabinet", amount=3}, + { entityType = "item", entityName = "boxed_bureaucrats_desk", amount=3}, + { entityType = "item", entityName = "boxed_standing_desk", amount=3}, + { entityType = "item", entityName = "boxed_mineshaft_module", amount=3}, + { entityType = "item", entityName = "boxed_chalkboard", amount=3}, + { entityType = "item", entityName = "boxed_vacuum_chamber", amount=3}, + { entityType = "item", entityName = "boxed_lower_class_chair", amount=6}, + { entityType = "item", entityName = "boxed_stone_charcoal_kiln", amount = 2}, + { entityType = "item", entityName = "boxed_stone_smelting_crucible", amount = 2}, + { entityType = "item", entityName = "boxed_hanging_pots", amount = 2}, + { entityType = "item", entityName = "boxed_musket_locker", amount = 2}, + { entityType = "item", entityName = "boxed_carbine_locker", amount = 2}, + { entityType = "item", entityName = "boxed_blunderbuss_locker", amount = 2}, + { entityType = "item", entityName = "boxed_jezail_rifle_locker", amount = 2}, + { entityType = "item", entityName = "boxed_tripistol_locker", amount = 2}, + { entityType = "item", entityName = "boxed_revolver_locker", amount = 2}, + { entityType = "item", entityName = "boxed_grenade_launcher_locker", amount = 2}, + { entityType = "item", entityName = "boxed_leyden_pistol_locker", amount = 2}, + { entityType = "item", entityName = "boxed_leyden_rifle_locker", amount = 2}, + { entityType = "item", entityName = "boxed_rare_painting", amount = 2}, + { entityType = "item", entityName = "boxed_mineshaft_module", amount = 2}, + { entityType = "item", entityName = "boxed_dewatering_pump", amount = 2}, + { entityType = "item", entityName = "boxed_ventilation_unit", amount = 2}, + { entityType = "item", entityName = "boxed_steam_distributor", amount = 2}, + { entityType = "item", entityName = "boxed_power_core_dynamo", amount = 2}, + { entityType = "item", entityName = "boxed_steam_knight_forge", amount = 2}, + { entityType = "item", entityName = "boxed_rug", amount = 2}, + { entityType = "item", entityName = "boxed_carpet", amount = 2}, + { entityType = "item", entityName = "boxed_wood_plinth", amount = 2}, + { entityType = "item", entityName = "boxed_stone_plinth", amount = 2}, + { entityType = "item", entityName = "boxed_stained_glass_window", amount = 2}, + }, + pfx = "CeramicsStamperPoof", +} + +Entity { + name="Strange Meteor Contents", + type="objectcluster", + clusterSpawnRange = { ["min"]=8, ["max"]=12 }, + clusterSpawnRadius = 6, + player_owned = true, + clusterContents={ + selenian = { "0" }, + item = { "dormant_spore" }, + clearable = { "Basalt Debris" } + }, + pfx = "CeramicsStamperPoof", +} + +Entity { + name="Selenian Goodies", + type="objectcluster", + clusterSpawnRange = { ["min"]=1, ["max"]=1 }, + clusterSpawnRadius = 1, + player_owned = true, + clusterContents={ + item = { "dormant_spore","dormant_spore","dormant_spore","glowing_spore" }, + } +} + +Entity { + name="Paper Gibs", + type="objectcluster", + clusterSpawnRange = { ["min"]=4, ["max"]=6 }, + clusterSpawnRadius = 3, + player_owned = false, + clusterContents={ + clearable = { "Paper Rubbish" }, + }, +} + +Entity { + name="Stahlmark Supply Drop", + type="objectcluster", + clusterSpawnRange = { ["min"]=8, ["max"]=12 }, + clusterSpawnRadius = 4, + player_owned = true, + clusterContents={ + item = { + "bushel_of_cabbage", "bushel_of_cabbage", "bushel_of_cabbage", "bushel_of_cabbage", + "loaf_of_bread", "loaf_of_bread", + "bushel_of_sausages", "bushel_of_sausages", + "jar_of_beer", "jar_of_beer", "jar_of_beer", + "planks", "planks", + "bricks", "bricks", + "bushel_of_cabbage", "bushel_of_cabbage", "bushel_of_cabbage", "bushel_of_cabbage", + "loaf_of_bread", "loaf_of_bread", + "bushel_of_sausages", "bushel_of_sausages", + "jar_of_beer", "jar_of_beer", "jar_of_beer", + "planks", "planks", + "bricks", "bricks", + "boxed_carbine_locker", + }, + }, + guaranteedContents={ + [1] = { entityType = "item", entityName = "bushel_of_cabbage", amount=1}, + }, +} + +Entity { + name="Office Supply Drop", + type="objectcluster", + clusterSpawnRadius = 4, + player_owned = true, + clusterContents={ }, + guaranteedContents={ + { entityType = "item", entityName = "ammo1", amount=6}, + { entityType = "item", entityName = "ammo2", amount=3}, + { entityType = "item", entityName = "ammo3", amount=3}, + { entityType = "item", entityName = "crate_of_grenades", amount=3}, + { entityType = "item", entityName = "keg_of_black_powder", amount=3}, + { entityType = "item", entityName = "stack_of_paper", amount=6}, + { entityType = "item", entityName = "bucket_of_ink", amount=3}, + { entityType = "item", entityName = "mine_shorings", amount=3}, + { entityType = "item", entityName = "leyden_jar", amount=3}, + { entityType = "item", entityName = "iron_cogs", amount=3}, + { entityType = "item", entityName = "medical_bag", amount=3}, + { entityType = "item", entityName = "bottle_of_sulphur_tonic", amount=3}, + --{ entityType = "item", entityName = "brass_cogs", amount=3}, + { entityType = "item", entityName = "chest_of_science_materials", amount=3}, + }, +} + +Entity { + name="Science Supply Drop", + type="objectcluster", + clusterSpawnRadius = 4, + player_owned = true, + clusterContents={ }, + guaranteedContents={ + { entityType = "item", entityName = "chest_of_science_materials", amount=1}, + { entityType = "item", entityName = "chest_of_science_materials", amount=1}, + { entityType = "item", entityName = "chest_of_science_materials", amount=1}, + { entityType = "item", entityName = "chest_of_science_materials", amount=1}, + { entityType = "item", entityName = "chest_of_science_materials", amount=1}, + { entityType = "item", entityName = "chest_of_science_materials", amount=1}, + }, +} + +Entity { + name="Republique Supply Drop", + type="objectcluster", + clusterSpawnRange = { ["min"]=8, ["max"]=12 }, + clusterSpawnRadius = 4, + player_owned = true, + clusterContents={ + item = { + "bushel_of_grapes", "bushel_of_grapes", + "loaf_of_bread", "loaf_of_bread", "loaf_of_bread", + "tin_of_meat", "tin_of_meat", + "bottle_of_wine", "bottle_of_wine", "bottle_of_wine", "bottle_of_wine", + "planks", "planks", + "bricks", "bricks", + "bushel_of_grapes", "bushel_of_grapes", + "loaf_of_bread", "loaf_of_bread", "loaf_of_bread", + "tin_of_meat", "tin_of_meat", + "bottle_of_wine", "bottle_of_wine", "bottle_of_wine", "bottle_of_wine", + "planks", "planks", + "bricks", "bricks", + "boxed_blunderbuss_locker", + }, + }, + guaranteedContents={ + [1] = { entityType = "item", entityName = "bottle_of_wine", amount=1}, + }, +} + +Entity { + name="Republique Pitchblende", + type="objectcluster", + clusterSpawnRange = { ["min"]=4, ["max"]=4 }, + clusterSpawnRadius = 4, + player_owned = true, + clusterContents={ + item = { + "pitchblende", + }, + }, +} + +Entity { + name="Novorus Supply Drop", + type="objectcluster", + clusterSpawnRange = { ["min"]=8, ["max"]=12 }, + clusterSpawnRadius = 4, + player_owned = true, + clusterContents={ + item = { + "loaf_of_bread", "loaf_of_bread", + "tin_of_meat", "tin_of_meat", + "bottle_of_vodka", "bottle_of_vodka", "bottle_of_vodka", + "planks", "planks", + "bricks", "bricks", + "logs", "logs", + "rough_stone_block", + "loaf_of_bread", "loaf_of_bread", + "tin_of_meat", "tin_of_meat", + "bottle_of_vodka", "bottle_of_vodka", "bottle_of_vodka", + "planks", "planks", + "bricks", "bricks", + "logs", "logs", + "rough_stone_block", + "boxed_blunderbuss_locker", + }, + }, + guaranteedContents={ + [1] = { entityType = "item", entityName = "bottle_of_vodka", amount=1}, + }, +} + +Entity { + name="Rare Painting Drop", + type="objectcluster", + player_owned = true, + clusterSpawnRadius = 4, + clusterContents={}, + guaranteedContents={ [1] = { entityType = "item", entityName = "boxed_rare_painting", amount=1}, }, +} \ No newline at end of file diff --git a/scripts/entity/trees.edb b/scripts/entity/trees.edb new file mode 100644 index 0000000..38267ae --- /dev/null +++ b/scripts/entity/trees.edb @@ -0,0 +1,494 @@ +Entity { + name = "Conifer", + type = "tree", + description = "Tending to grow in colder climes, this resinous tree is a good source of timber.", + growthStagesTime = { 500, 500, 500, 500 }, + growthStagesHarvestOutput = { 0, 3, 4, 5 }, + chopLoopsToHarvest = 10, + commodityOutput = "logs", + treeModels = { + { "models\\nature\\trees\\saplingPine00.upm", + "models\\nature\\trees\\saplingPine01.upm", + "models\\nature\\trees\\saplingPine02.upm", }, + { "models\\nature\\trees\\coniferSmall.upm", }, + { "models\\nature\\trees\\coniferMedium.upm", }, + { "models\\nature\\trees\\coniferLarge.upm", }, + }, + stumpModels = { + { false, }, + { "models\\nature\\trees\\coniferStump.upm", }, + { "models\\nature\\trees\\coniferStump.upm", }, + { "models\\nature\\trees\\coniferStump.upm", }, + }, + animLoopsToClear=2, + tags = {"tree", "pine"}, + ambientSoundNameDay = "Ambient Forest Wind", + ambientSoundNameDayFitness = 4, + ambientSoundNameNight = "Ambient Forest Wind", + ambientSoundNameNightFitness = 4, +} + +Entity { + name = "Snowy Conifer", + type = "tree", + description = "Tending to grow in colder climes, this resinous tree is a good source of timber.", + growthStagesTime = { 500, 500, 500, 500 }, + growthStagesHarvestOutput = { 0, 3, 4, 5 }, + chopLoopsToHarvest = 10, + commodityOutput = "logs", + treeModels = { + { "models\\nature\\trees\\saplingPine00.upm", + "models\\nature\\trees\\saplingPine01.upm", + "models\\nature\\trees\\saplingPine02.upm", }, + { "models\\nature\\trees\\coniferSmallCold.upm", }, + { "models\\nature\\trees\\coniferMediumCold.upm", }, + { "models\\nature\\trees\\coniferLargeCold.upm", }, + }, + stumpModels = { + { false, }, + { "models\\nature\\trees\\coniferStump.upm", }, + { "models\\nature\\trees\\coniferStump.upm", }, + { "models\\nature\\trees\\coniferStump.upm", }, + }, + animLoopsToClear=2, + tags = {"tree", "pine"}, + ambientSoundNameDay = "Ambient Forest Wind", + ambientSoundNameDayFitness = 4, + ambientSoundNameNight = "Ambient Forest Wind", + ambientSoundNameNightFitness = 4, +} + +Entity { + name = "Joshua Tree", + type = "tree", + description = "Thriving in open grasslands and deserts, this spiny tree is a good source of timber.", + growthStagesTime = { 500, 500, 500, 500 }, + growthStagesHarvestOutput = { 0, 3, 4, 5 }, + chopLoopsToHarvest = 10, + commodityOutput = "logs", + treeModels = { + { "models\\nature\\trees\\joshuaTreeSapling00.upm", }, + { "models\\nature\\trees\\joshuaTreeSmall00.upm", }, + { "models\\nature\\trees\\joshuaTreeMedium00.upm", }, + { "models\\nature\\trees\\joshuaTreeLarge00.upm", "models\\nature\\trees\\joshuaTreeLarge01.upm", }, + }, + stumpModels = { + { false, }, + { "models\\nature\\trees\\joshuaTreeSmallStump00.upm", }, + { "models\\nature\\trees\\joshuaTreeMediumStump00.upm", }, + { "models\\nature\\trees\\joshuaTreeLargeStump00.upm", "models\\nature\\trees\\joshuaTreeLargeStump01.upm", }, + }, + animLoopsToClear=2, + tags = {"tree", "yucca"}, + ambientSoundNameDay = "Ambient Forest Wind", + ambientSoundNameDayFitness = 4, + ambientSoundNameNight = "Ambient Forest Wind", + ambientSoundNameNightFitness = 4, +} + +Entity { + name = "Mangrove", + type = "tree", + description = "At home in swamps and coastal beaches, this hardy tree is a good source of lumber.", + growthStagesTime = { 500, 500, 500, 500 }, + growthStagesHarvestOutput = { 0, 3, 4, 5 }, + chopLoopsToHarvest = 10, + commodityOutput = "logs", + treeModels = { + { "models\\nature\\trees\\mangroveTreeSmall00.upm", }, + { "models\\nature\\trees\\mangroveTreeSmall00.upm", }, + { "models\\nature\\trees\\mangroveTreeMedium00.upm", }, + { "models\\nature\\trees\\mangroveTreeLarge00.upm", }, + }, + stumpModels = { + { false, }, + { "models\\nature\\trees\\mangroveTreeSmallStump00.upm", }, + { "models\\nature\\trees\\mangroveTreeMediumStump00.upm", }, + { "models\\nature\\trees\\mangroveTreeLargeStump00.upm", }, + }, + animLoopsToClear=2, + tags = {"tree", "yucca"}, + ambientSoundNameDay = "Ambient Forest Wind", + ambientSoundNameDayFitness = 4, + ambientSoundNameNight = "Ambient Forest Wind", + ambientSoundNameNightFitness = 4, +} + +Entity { + name = "Gutta Percha", + type = "tree", + description = "This leafy lowland tree is known for its sap, which is used to produce rubber.", + growthStagesTime = { 500, 500, 500, 500 }, + growthStagesHarvestOutput = { 0, 3, 4, 5 }, + chopLoopsToHarvest = 10, + commodityOutput = "logs", + treeModels = { + { "models\\nature\\trees\\guttaSappling00.upm", }, + { "models\\nature\\trees\\guttaTreeJuvenile00.upm", }, + { "models\\nature\\trees\\guttaTree00.upm", }, + { "models\\nature\\trees\\guttaTree00.upm", }, + }, + stumpModels = { + { false, }, + { "models\\nature\\trees\\guttaTreeStrump00.upm", }, + { "models\\nature\\trees\\guttaTreeStrump00.upm", }, + { "models\\nature\\trees\\guttaTreeStrump00.upm", }, + }, + animLoopsToClear=2, + tags = {"tree", "yucca"}, + ambientSoundNameDay = "Ambient Forest Wind", + ambientSoundNameDayFitness = 4, + ambientSoundNameNight = "Ambient Forest Wind", + ambientSoundNameNightFitness = 4, +} + +Entity { + name = "Pine", + type = "tree", + description = "Tending to grow in colder climes, this resinous tree is a good source of timber.", + growthStagesTime = { 500, 500, 500, 500 }, + growthStagesHarvestOutput = { 0, 3, 5, 7 }, + commodityOutput = "logs", + chopLoopsToHarvest = 10, + treeModels = { + { "models\\nature\\trees\\saplingPine00.upm", + "models\\nature\\trees\\saplingPine01.upm", + "models\\nature\\trees\\saplingPine02.upm" }, + { "models\\nature\\trees\\pineTreeSml00.upm" }, + { "models\\nature\\trees\\pineTreeMed00.upm" }, + { "models\\nature\\trees\\pineTreeLrg00.upm" }, + }, + stumpModels = { + { false }, + { "models\\nature\\trees\\stumpPineTreeSml00.upm", + "models\\nature\\trees\\stumpPineTreeSml01.upm" }, + { "models\\nature\\trees\\stumpPineTreeMed00.upm", + "models\\nature\\trees\\stumpPineTreeMed01.upm" }, + { "models\\nature\\trees\\stumpPineTreeLrg00.upm", + "models\\nature\\trees\\stumpPineTreeLrg01.upm" }, + }, + animLoopsToClear=2, + tags = {"tree", "pine"}, + ambientSoundNameDay = "Ambient Forest Wind", + ambientSoundNameDayFitness = 4, + ambientSoundNameNight = "Ambient Forest Wind", + ambientSoundNameNightFitness = 4, +} + +Entity { + name = "Snowy Pine", + type = "tree", + description = "Tending to grow in colder climes, this resinous tree is a good source of timber.", + growthStagesTime = { 500, 500, 500, 500 }, + growthStagesHarvestOutput = { 0, 3, 5, 7 }, + commodityOutput = "logs", + chopLoopsToHarvest = 10, + treeModels = { + { "models\\nature\\trees\\saplingPine00.upm", + "models\\nature\\trees\\saplingPine01.upm", + "models\\nature\\trees\\saplingPine02.upm" }, + { "models\\nature\\trees\\pineTreeSml00Cold.upm" }, + { "models\\nature\\trees\\pineTreeMed00Cold.upm" }, + { "models\\nature\\trees\\pineTreeLrg00Cold.upm" }, + }, + stumpModels = { + { false }, + { "models\\nature\\trees\\stumpPineTreeSml00.upm", + "models\\nature\\trees\\stumpPineTreeSml01.upm" }, + { "models\\nature\\trees\\stumpPineTreeMed00.upm", + "models\\nature\\trees\\stumpPineTreeMed01.upm" }, + { "models\\nature\\trees\\stumpPineTreeLrg00.upm", + "models\\nature\\trees\\stumpPineTreeLrg01.upm" }, + }, + animLoopsToClear=2, + tags = {"tree", "pine"}, + ambientSoundNameDay = "Ambient Forest Wind", + ambientSoundNameDayFitness = 4, + ambientSoundNameNight = "Ambient Forest Wind", + ambientSoundNameNightFitness = 4, +} + +Entity { + name = "Tropical Broadleaf", + type = "tree", + description = "A verdant, odorous tree of tropical climes.", + growthStagesTime = { 500, 500, 500, 500 }, + growthStagesHarvestOutput = { 0, 2, 4, 6 }, + commodityOutput = "logs", + chopLoopsToHarvest = 10, + treeModels = { + {"models\\nature\\trees\\tropicalBroadLeafSapling00.upm" }, + { "models\\nature\\trees\\tropicalBroadLeafTreeSmall00.upm" }, + { "models\\nature\\trees\\tropicalBroadLeafTreeMedium00.upm" }, + { "models\\nature\\trees\\tropicalBroadLeafTreeLarge00.upm" }, + }, + stumpModels = { + { false }, + { "models\\nature\\trees\\tropicalBroadLeafStumpSmall00.upm" }, + { "models\\nature\\trees\\tropicalBroadLeafStumpMedium00.upm" }, + { "models\\nature\\trees\\tropicalBroadLeafStumpLarge00.upm" }, + }, + animLoopsToClear=2, + tags = {"tree", "tropical", "broadleaf"}, + ambientSoundNameDay = "Ambient Forest Wind", + ambientSoundNameDayFitness = 4, + ambientSoundNameNight = "Ambient Forest Wind", + ambientSoundNameNightFitness = 4, +} + +Entity { + name = "Aspen", + type = "tree", + description = "It is the noble aspen tree in all its colour and splendour.", + growthStagesTime = { 500, 500, 500, 500 }, + growthStagesHarvestOutput = { 0, 3, 5, 7 }, + commodityOutput = "logs", + chopLoopsToHarvest = 10, + treeModels = { + { "models\\nature\\trees\\aspenSapling.upm" }, + { "models\\nature\\trees\\aspenSmall.upm" }, + { "models\\nature\\trees\\aspenMedium.upm" }, + { "models\\nature\\trees\\aspenLarge.upm" }, + }, + stumpModels = { + { false, }, + { "models\\nature\\trees\\aspenStump.upm" }, + { "models\\nature\\trees\\aspenStump.upm" }, + { "models\\nature\\trees\\aspenStump.upm" }, + }, + animLoopsToClear=2, + tags = {"tree", "broadleaf"}, + ambientSoundNameDay = "Ambient Forest Wind", + ambientSoundNameDayFitness = 4, + ambientSoundNameNight = "Ambient Forest Wind", + ambientSoundNameNightFitness = 4, +} + +Entity { + name = "Weeping Willow", + type = "tree", + description = "This is the saddest tree.", + growthStagesTime = { 500, 500, 500, 500 }, + growthStagesHarvestOutput = { 0, 3, 5, 7 }, + commodityOutput = "logs", + chopLoopsToHarvest = 10, + treeModels = { + { "models\\nature\\trees\\weepingWillowSapling00.upm", + "models\\nature\\trees\\weepingWillowSapling00.upm", + "models\\nature\\trees\\weepingWillowSapling00.upm"}, + { "models\\nature\\trees\\weepingWillowSml00.upm" }, + { "models\\nature\\trees\\weepingWillowMed00.upm" }, + { "models\\nature\\trees\\weepingWillowLrg00.upm" }, + }, + stumpModels = { + { false }, + { "models\\nature\\trees\\weepingWillowStumpSml00.upm" }, + { "models\\nature\\trees\\weepingWillowStumpMed00.upm" }, + { "models\\nature\\trees\\weepingWillowStumpLrg00.upm" }, + }, + animLoopsToClear=2, + tags = {"tree", "broadleaf"}, + ambientSoundNameDay = "Ambient Forest Wind", + ambientSoundNameDayFitness = 4, + ambientSoundNameNight = "Ambient Forest Wind", + ambientSoundNameNightFitness = 4, +} + +Entity { + name = "Giant Horsetail", + type = "tree", + growthStagesTime = { 300, 300, 300, 300 }, + growthStagesHarvestOutput = { 0, 1, 2, 3 }, + commodityOutput = "logs", + chopLoopsToHarvest = 5, + description="A strange-looking tree native to swamplands.", + treeModels = { + { "models\\nature\\trees\\giantHorsetailSapling.upm" }, + { "models\\nature\\trees\\giantHorsetailSmall.upm" }, + { "models\\nature\\trees\\giantHorsetailMed.upm"}, + { "models\\nature\\trees\\giantHorsetailLarge.upm"}, + }, + stumpModels = { + { false }, + { "models\\nature\\trees\\giantHorsetailSmallStump.upm" }, + { "models\\nature\\trees\\giantHorsetailMedStump.upm" }, + { "models\\nature\\trees\\giantHorsetailLargeStump.upm" }, + }, + animLoopsToClear=1, + tags = {"tree", "horsetail" } +} + +Entity { + name = "Palm", + type = "tree", + growthStagesTime = { 500, 500, 500, 500 }, + growthStagesHarvestOutput = { 0, 2, 3, 4 }, + commodityOutput = "logs", + description="An ill-formed tree from the tropics, it's not much good for timber.", + chopLoopsToHarvest = 8, + treeModels = { + { "models\\nature\\trees\\saplingPalm00.upm", + "models\\nature\\trees\\saplingPalm01.upm", + "models\\nature\\trees\\saplingPalm02.upm" }, + { "models\\nature\\trees\\palmTreeSmall.upm" }, + { "models\\nature\\trees\\palmTreeMedium.upm" }, + { "models\\nature\\trees\\palmTreeLarge.upm" }, + }, + stumpModels = { + { false, }, + { "models\\nature\\trees\\palmTreeSmallStump.upm", }, + { "models\\nature\\trees\\palmTreeMediumStump.upm", }, + { "models\\nature\\trees\\palmTreeLargeStump.upm", }, + }, + animLoopsToClear=2, + tags = {"tree", "palm" }, +} + +Entity { + name = "Green Bamboo", + type = "tree", + growthStagesTime = { 200, 200, 200, 200 }, + growthStagesHarvestOutput = { 0, 1, 3, 4 }, + commodityOutput = "logs", + chopLoopsToHarvest = 8, + description = "Hardly a tree at all, this is fast-growing source of timber nonetheless.", + treeModels = { + { "models\\nature\\crops\\wheatSproutGreen00.upm", + "models\\nature\\crops\\wheatSproutGreen00.upm", }, + { "models\\nature\\trees\\bambooGreenSml00.upm", + "models\\nature\\trees\\bambooGreenSml01.upm", }, + { "models\\nature\\trees\\bambooGreenMed00.upm", + "models\\nature\\trees\\bambooGreenMed01.upm", }, + { "models\\nature\\trees\\bambooGreenLrg00.upm", + "models\\nature\\trees\\bambooGreenLrg01.upm", }, + }, + stumpModels = { + { false, }, + { "models\\nature\\trees\\bambooGreenMedStump00.upm", + "models\\nature\\trees\\bambooGreenMedStump01.upm", }, + { "models\\nature\\trees\\bambooGreenMedStump00.upm", + "models\\nature\\trees\\bambooGreenMedStump01.upm", }, + { "models\\nature\\trees\\bambooGreenLrgStump00.upm", + "models\\nature\\trees\\bambooGreenLrgStump01.upm", }, + }, + animLoopsToClear=2, + tags = {"tree", "bamboo" }, +} + +Entity { + name = "Black Bamboo", + type = "tree", + growthStagesTime = { 200, 200, 200, 200 }, + growthStagesHarvestOutput = { 0, 1, 3, 4 }, + commodityOutput = "logs", + chopLoopsToHarvest = 8, + description = "Hardly a tree at all, this is fast-growing source of timber nonetheless.", + treeModels = { + { "models\\nature\\crops\\wheatSproutGreen00.upm", + "models\\nature\\crops\\wheatSproutGreen00.upm", }, + { "models\\nature\\trees\\bambooBlackSml00.upm", + "models\\nature\\trees\\bambooBlackSml01.upm", }, + { "models\\nature\\trees\\bambooBlackMed00.upm", + "models\\nature\\trees\\bambooBlackMed01.upm", }, + { "models\\nature\\trees\\bambooBlackLrg00.upm", + "models\\nature\\trees\\bambooBlackLrg01.upm", }, + }, + stumpModels = { + { false, }, + { "models\\nature\\trees\\bambooBlackMedStump00.upm", + "models\\nature\\trees\\bambooBlackMedStump01.upm", }, + { "models\\nature\\trees\\bambooBlackMedStump00.upm", + "models\\nature\\trees\\bambooBlackMedStump01.upm", }, + { "models\\nature\\trees\\bambooBlackLrgStump00.upm", + "models\\nature\\trees\\bambooBlackLrgStump01.upm", }, + }, + animLoopsToClear=2, + tags = {"tree", "bamboo" }, +} + +Entity { + name = "Yellow Bamboo", + type = "tree", + growthStagesTime = { 200, 200, 200, 200 }, + growthStagesHarvestOutput = { 0, 1, 3, 4 }, + commodityOutput = "logs", + chopLoopsToHarvest = 8, + description = "Hardly a tree at all, this is fast-growing source of timber nonetheless.", + treeModels = { + { "models\\nature\\crops\\wheatSproutGreen00.upm", + "models\\nature\\crops\\wheatSproutGreen00.upm", }, + { "models\\nature\\trees\\bambooYellowSmall00.upm", + "models\\nature\\trees\\bambooYellowSmall01.upm", }, + { "models\\nature\\trees\\bambooYellowMedium00.upm", + "models\\nature\\trees\\bambooYellowMedium01.upm", }, + { "models\\nature\\trees\\bambooYellowLarge00.upm", + "models\\nature\\trees\\bambooYellowLarge01.upm", }, + }, + stumpModels = { + { false, }, + { "models\\nature\\trees\\bambooYellowMediumStump00.upm", + "models\\nature\\trees\\bambooYellowMediumStump01.upm", }, + { "models\\nature\\trees\\bambooYellowMediumStump00.upm", + "models\\nature\\trees\\bambooYellowMediumStump01.upm", }, + { "models\\nature\\trees\\bambooYellowLargeStump00.upm", + "models\\nature\\trees\\bambooYellowLargeStump01.upm", }, + }, + animLoopsToClear=2, + tags = {"tree", "bamboo" }, +} + + + +Entity { + name = "Baobab", + type = "tree", + description = "Voluminous and native to tropical climes, this tree is a rich source of timber.", + growthStagesTime = { 500, 500, 500, 500 }, + growthStagesHarvestOutput = { 0, 4, 6, 8 }, + chopLoopsToHarvest = 12, + commodityOutput = "logs", + treeModels = { + { "models\\nature\\trees\\saplingBroadleaf00.upm", + "models\\nature\\trees\\saplingBroadleaf01.upm", + "models\\nature\\trees\\saplingBroadleaf02.upm"}, + { "models\\nature\\trees\\baobabTreeSmall.upm", }, + { "models\\nature\\trees\\baobabTreeMedium.upm", }, + { "models\\nature\\trees\\baobabTreeLarge.upm", }, + }, + stumpModels = { + { false, }, + { "models\\nature\\trees\\baobabTreeTrunkSmall.upm", }, + { "models\\nature\\trees\\baobabTreeTrunkMedium.upm", }, + { "models\\nature\\trees\\baobabTreeTrunkLarge.upm", }, + }, + animLoopsToClear=2, + tags = {"tree", }, + ambientSoundNameDay = "Ambient Forest Wind", + ambientSoundNameDayFitness = 4, + ambientSoundNameNight = "Ambient Forest Wind", + ambientSoundNameNightFitness = 4, +} + +Entity { + name = "Saguaro", + type = "tree", + growthStagesTime = { 1000, 1000, 1000, 1000 }, + growthStagesHarvestOutput = { 0, 1, 3, 4 }, + commodityOutput = "logs", + chopLoopsToHarvest = 10, + description = "This prickly thing is barely a tree at all but may be used as timber.", + treeModels = { + { "models\\nature\\trees\\saguaroCactusSmall.upm" }, + { "models\\nature\\trees\\saguaroCactusMedium.upm" }, + { "models\\nature\\trees\\saguaroCactusLarge.upm" }, + { "models\\nature\\trees\\saguaroCactusLargest.upm" }, + }, + stumpModels = { + { false, }, + { "models\\nature\\trees\\saguaroCactusStump.upm", }, + { "models\\nature\\trees\\saguaroCactusMediumLargeStump.upm", }, + { "models\\nature\\trees\\saguaroCactusLargestStump.upm", }, + }, + animLoopsToClear=2, + tags = {"tree", "cactus" } +} diff --git a/scripts/gameobjects/FSM/citizen/house_drink_tea_in_chair.fsm b/scripts/gameobjects/FSM/citizen/house_drink_tea_in_chair.fsm new file mode 100644 index 0000000..1a80a07 --- /dev/null +++ b/scripts/gameobjects/FSM/citizen/house_drink_tea_in_chair.fsm @@ -0,0 +1,190 @@ +house_drink_tea_in_chair = { + ["start"] = function(state,tag,name) + + if tag == nil or tag.target == nil then + return "abort", true + end + + if VALUE_STORE["showFSMDebugConsole"] then printl("FSM", "FSM: " .. FSMName() ) end + + state.AI.bools["pathToObject"] = true + state.AI.bools["pathToPosition"] = false + state.AI.objs["pathingObject"] = tag.target + state.AI.bools["walkToAdjacent"] = false + state.AI.bools["pathingFollowObject"] = false + state.AI.bools["pathingWeakFollow"] = false + state.AI.bools["pathingMajorAxisFacing"] = true + state.AI.strs["pathfindingOriginFSM"] = "walk_to_module" + + return "pathing_start", true + + end, + + ["pathing_start"] = pathing_base["pathing_start"], + ["pathing_wait"] = pathing_base["pathing_wait"], + ["pathing_repath"] = pathing_base["pathing_repath"], + ["pathing_walking"] = pathing_base["pathing_walking"], + ["on_pathing_changecell"] = pathing_base["on_pathing_changecell"], + ["pathing_changecell"] = pathing_base["pathing_changecell"], + ["pathing_changecellresult"] = pathing_base["pathing_changecellresult"], + ["pathing_final"] = pathing_base["pathing_final"], + ["pathing_abort"] = pathing_base["pathing_abort"], + + ["after_pathing"] = function(state,tag,name) + state.AI.bools["canBeSocial"] = false + -- move to chair position + if tag.target == nil then + return "abort" + end + + local pos = query( tag.target, "gridReportPosition" )[1] + + if tag.target.tags["occupied"] == true then + state.AI.abortJobMessage = "Chair already occupied." + return "abort" + end + + if query(tag.target,"getTags")[1].table then + + -- flip sign to get my ass into the chair + if pos.orientationX ~= 0 then + send("rendOdinCharacterClassHandler", + "odinRendererTeleportCharacterMessage", + state.renderHandle, + pos.x + (pos.orientationY *-1), + pos.y + (pos.orientationX *-1) ) + + send("rendOdinCharacterClassHandler", + "odinRendererFaceCharacter", + state.renderHandle, + pos.orientationY , + pos.orientationX ) + else + send("rendOdinCharacterClassHandler", + "odinRendererTeleportCharacterMessage", + state.renderHandle, + pos.x + (pos.orientationY), + pos.y + (pos.orientationX) ) + + send("rendOdinCharacterClassHandler", + "odinRendererFaceCharacter", + state.renderHandle, + pos.orientationY *-1 , + pos.orientationX )-- *-1 ) + + end + else + send("rendOdinCharacterClassHandler", + "odinRendererTeleportCharacterMessage", + state.renderHandle, + pos.x, + pos.y ) + + send("rendOdinCharacterClassHandler", + "odinRendererFaceCharacter", + state.renderHandle, + pos.orientationX , + pos.orientationY ) + end + + -- get your tea out. + + local drinkModel = "models\\props\\teaCupH.upm" + + send("rendOdinCharacterClassHandler", + "odinRendererCharacterWieldTemporaryToolMessage", + state.renderHandle, + drinkModel) + + -- play sit animation + send("rendOdinCharacterClassHandler", + "odinRendererSetCharacterAnimationMessage", + state.renderHandle, + "sitting_chair_idleLC", + false) + + state.AI.boolAttributes["sitting"] = true + send(tag.target, "SetSittingIn", SELF) + state.AI.gOHAttributes["occupied_chair"] = tag.target + + state.AI.bools["canBeSocial"] = false + + state.AI.animationTickCount = 0 + + send("rendOdinCharacterClassHandler", + "odinRendererSetCharacterAnimationMessage", + state.renderHandle, + "sitting_chair_drink_hand", + false) + + state.AI.animationTickCount = animationLength(state.animSet, "sitting_chair_drink_hand") + + return "animating", true + end, + + ["animating"] = function(state,tag,name) + state.AI.animationTickCount = state.AI.animationTickCount - 1 + + if state.AI.animationTickCount <= 0 then + + state.lastDrinkDay = query("gameSession","getSessionInt","dayCount")[1] + + --local pb = query(tag.target,"getParentBuilding")[1] + --local drinktype = query(pb,"getPubDrinkType")[1] + + send(SELF,"makeMemory","Had a Cuppa",nil,nil,nil,nil) + + -- add new record + table.insert(state.drinkrecord, 1, 1 ) + -- and kill last record. + table.remove(state.drinkrecord, #state.drinkrecord) + SELF.tags.drank_today = true + + send("rendOdinCharacterClassHandler", + "odinRendererCharacterDropTemporaryToolMessage", + state.renderHandle) + + local animName = "sitting_chair_idleLC" + if SELF.tags.middle_class then + animName = "sitting_chair_idleMC" + elseif SELF.tags.upper_class then + animName = "sitting_chair_idleUC" + end + + state.AI.animationTickCount = animationLength(state.animSet, animName) + send("rendOdinCharacterClassHandler", + "odinRendererQueueCharacterAnimationMessage", + state.renderHandle, + animName) + + return "animating2" + end + + return "animating" + end, + + ["animating2"] = function(state,tag,name) + state.AI.animationTickCount = state.AI.animationTickCount - 1 + + if state.AI.animationTickCount <= 0 then + return "final", true + end + + return "animating2" + end, + + ["final"] = function(state,tag,name) + state.AI.bools["canBeSocial"] = true + state.AI.animationTickCount = 0 + return + end, + + ["abort"] = function(state, tag,name) + state.AI.bools["canBeSocial"] = true + send("rendOdinCharacterClassHandler", + "odinRendererCharacterDropTemporaryToolMessage", + state.renderHandle) + + return + end +} \ No newline at end of file diff --git a/scripts/gameobjects/FSM/citizen/perform_last_rites_on_grave.fsm b/scripts/gameobjects/FSM/citizen/perform_last_rites_on_grave.fsm new file mode 100644 index 0000000..748f42a --- /dev/null +++ b/scripts/gameobjects/FSM/citizen/perform_last_rites_on_grave.fsm @@ -0,0 +1,94 @@ +perform_last_rites_on_grave = { + ["start"] = function(state,tag,name) + + -- check if building has supplies at all AGAIN; abort if not. Consume if yes. + local overseer = false + if state.AI.strs["socialClass"] == "lower" then + overseer = query("gameBlackboard","gameObjectGetOverseerMessage",state.AI.currentWorkParty)[1] + else + overseer = SELF + end + + if not overseer then + return "abort", true + end + + local building = query(overseer,"getClaimedWorkBuilding")[1] + if building then + local building_tags = query(building,"getTags")[1] + if building_tags.no_supplies1 == true then + printl("ai_agent", "WARNING 2: " .. state.AI.name .. " attempted to do preaching but office was out of supplies") + return "abort", true + else + send(building,"consumeSupplies",1,1) -- tier / count + end + else + printl("ai_agent", "WARNING 2: " .. state.AI.name .. " attempted to do preaching but office was out of supplies") + return "abort", true + end + + + state.AI.bools["canBeSocial"] = false + + local animName = "bless" + send("rendOdinCharacterClassHandler", + "odinRendererSetCharacterAnimationMessage", + state.renderHandle, + animName, + true) + -- true) -- for idling at the end of anim + + state.AI.animationTickCount = animationLength(state.animSet, animName) + + return "animating1" + end, + + ["animating1"] = function(state,tag,name) + state.AI.animationTickCount = state.AI.animationTickCount - 1 + if state.AI.animationTickCount <= 0 then + + send(tag.target,"addTag","last_rites_performed") + send(tag.target,"tagOwner") + + local bodyname = "a buried colonist" --query(tag.target,"getName")[1] + + send(SELF, + "makeMemory", + "Performed Last Rites", + nil, + bodyname, + nil, + nil ) + + local results = query("gameSpatialDictionary", + "allObjectsInRadiusWithTagRequest", + state.AI.position, + 8, + "citizen", + true) + if results then + send(results[1], + "makeMemory", + "Witnessed Last Rites Performed", + nil, + bodyname, + nil, + nil ) + end + + return "final" + end + + return "animating1" + end, + + ["final"] = function(state,tag,name) + state.AI.bools["canBeSocial"] = true + + end, + + ["abort"] = function(state, tag ) + state.AI.bools["canBeSocial"] = true + return + end +} \ No newline at end of file diff --git a/scripts/gameobjects/FSM/citizen/waste_time.fsm b/scripts/gameobjects/FSM/citizen/waste_time.fsm new file mode 100644 index 0000000..2c06be2 --- /dev/null +++ b/scripts/gameobjects/FSM/citizen/waste_time.fsm @@ -0,0 +1,80 @@ +waste_time = { + ["start"] = function(state,tag,name) + + if not state.AI.bools["sitting"] and + (SELF.tags["human"] or SELF.tags["fishperson"] or SELF.tags["spectre"]) then + + if rand(1,100) == 1 and not SELF.tags["spectre"] then + send("rendOdinCharacterClassHandler", + "odinRendererSetCharacterAnimationMessage", + state.renderHandle, + "stretch", + true) + + state.AI.animationTickCount = animationLength(state.animSet,"stretch") + else + + local animName = query(SELF, "getIdleAnimQueryRequest")[1] + if not animName then -- default value + animName = "idle" + end + + -- add some spectre flavor.. they shouldn't just be scratching their asses, after all + if SELF.tags["spectre"] then + local spectre_anim = rand(1,3) + + if spectre_anim == 1 then + animName = "cry" + elseif spectre_anim == 2 then + animName = "freak_out" + else + animName = "anger" + end + end + + local animLength = animationLength(state.animSet,animName) + + send("rendOdinCharacterClassHandler", + "odinRendererSetCharacterAnimationMessage", + state.renderHandle, + animName, + true) + + --send("rendOdinCharacterClassHandler", + -- "odinRendererIdleCharacterMessage", + -- state.renderHandle) + + state.AI.animationTickCount = animLength + end + else + -- chair already put me in the correct animation state + -- UPDATE: ah, it didn't actually. + state.AI.animationTickCount = rand(30,50) + end + + return "animating" + end, + + ["animating"] = function(state,tag,name) + state.AI.animationTickCount = state.AI.animationTickCount - 1 + + if state.AI.animationTickCount <= 0 then + return "final" + end + + return "animating" + end, + + ["final"] = function(state,tag,name) + if not state.AI.bools["sitting"] then + send("rendOdinCharacterClassHandler", + "odinRendererIdleCharacterMessage", + state.renderHandle); + end + end, + + ["abort"] = function(state, tag, name) + printl("Aborting") + return + end +} \ No newline at end of file diff --git a/scripts/gameobjects/FSM/fishperson/fishperson_remove_fishperson.fsm b/scripts/gameobjects/FSM/fishperson/fishperson_remove_fishperson.fsm new file mode 100644 index 0000000..6ebb269 --- /dev/null +++ b/scripts/gameobjects/FSM/fishperson/fishperson_remove_fishperson.fsm @@ -0,0 +1,93 @@ +fishperson_remove_fishperson = { + ["start"] = function(state,tag,name) + state.AI.bools["canBeSocial"] = false + local animName = "worshipping_start" + -- better hope we have animName in animSet! + -- TODO add check here. + + -- Face target! + + local pos = query(tag.target, "gridReportPosition") + -- make very, very sure that's a valid pos + if not pos then + return "abort", true + end + if not pos[1] then + return "abort", true + end + + send("rendOdinCharacterClassHandler", + "odinRendererSetCharacterAnimationMessage", + state.renderHandle, + animName, + false) + + state.AI.animationTickCount = animationLength(state.animSet, animName) + + return "animating" + end, + + ["animating"] = function(state,tag,name) + state.AI.animationTickCount = state.AI.animationTickCount - 1 + + if state.AI.animationTickCount <= 0 then + animName = "worshipping_loop" + send("rendOdinCharacterClassHandler", + "odinRendererSetCharacterAnimationMessage", + state.renderHandle, + animName, + false) + + state.AI.animationTickCount = animationLength(state.animSet, animName) + state.AI.animationTickCount = state.AI.animationTickCount * 5 + return "animating2" + end + return "animating" + end, + + ["animating2"] = function(state,tag,name) + state.AI.animationTickCount = state.AI.animationTickCount - 1 + + if state.AI.animationTickCount <= 0 then + animName = "worshipping_end" + send("rendOdinCharacterClassHandler", + "odinRendererSetCharacterAnimationMessage", + state.renderHandle, + animName, + false) + + state.AI.animationTickCount = animationLength(state.animSet, animName) + return "animating3" + end + return "animating2" + end, + + ["animating3"] = function(state,tag,name) + state.AI.animationTickCount = state.AI.animationTickCount - 1 + + if state.AI.animationTickCount <= 0 then + local tpos = query(tag.target,"gridGetPosition")[1] + send("rendCommandManager", + "odinRendererCreateParticleSystemMessage", + "MiasmaBurst", + tpos.x, + tpos.y) + + send(tag.target,"despawn") + + return "final" + end + return "animating3" + end, + + ["final"] = function(state,tag,name) + send("rendOdinCharacterClassHandler", + "odinRendererIdleCharacterMessage", + state.renderHandle) + end, + + ["abort"] = function(state, tag ) + state.AI.bools["canBeSocial"] = true + return + end +} \ No newline at end of file diff --git a/scripts/gameobjects/FSM/fishperson/geometer_exit_map.fsm b/scripts/gameobjects/FSM/fishperson/geometer_exit_map.fsm new file mode 100644 index 0000000..ea42ac5 --- /dev/null +++ b/scripts/gameobjects/FSM/fishperson/geometer_exit_map.fsm @@ -0,0 +1,69 @@ +geometer_exit_map = { + ["start"] = function(state,tag,name) + + local animName = "look_up" + if SELF.tags.geometer_observator then + animName = "fold" + end + + send("rendOdinCharacterClassHandler", + "odinRendererSetCharacterAnimationMessage", + state.renderHandle, + animName, + true) + + state.AI.animationTickCount = math.floor( animationLength(state.animSet, animName) *0.6) + + send("rendCommandManager", + "odinRendererCreateParticleSystemMessage", + "DustPuffMassiveSlow", --"DustPuffMassive", + state.AI.position.x, + state.AI.position.y) + + return "animating" + end, + + ["animating"] = function(state,tag,name) + state.AI.animationTickCount = state.AI.animationTickCount - 1 + if state.AI.animationTickCount == 8 then + + send("rendCommandManager", + "odinRendererCreateParticleSystemMessage", + "TransformPouf", + state.AI.position.x, + state.AI.position.y ) + + send("rendInteractiveObjectClassHandler", + "odinRendererPlaySFXOnInteractive", + SELF.id, + "Slipgate Open") + + elseif state.AI.animationTickCount <= 1 then + + send("rendOdinCharacterClassHandler", + "odinRendererHideCharacterMessage", + state.renderHandle, + true) + + return "final" + + end + return "animating" + end, + + ["final"] = function(state,tag,name) + --[[send("rendOdinCharacterClassHandler", + "odinRendererSetCharacterAnimationMessage", + state.renderHandle, + "stand", + false)]] + + --send(SELF,"beDestroyed") + SELF.tags["exited_map"] = true + return + end, + + ["abort"] = function(state, tag,name) + return + end +} \ No newline at end of file diff --git a/scripts/gameobjects/ai_damage.go b/scripts/gameobjects/ai_damage.go index b1ebfa0..4d18b75 100644 --- a/scripts/gameobjects/ai_damage.go +++ b/scripts/gameobjects/ai_damage.go @@ -737,7 +737,7 @@ gameobject "ai_damage" receive IgniteMessage() << -- CECOMMPATCH bugfix. Spores that die while on fire cause a crash, so do nothing if ignite attempted - if SELF.tags["selenian_spore"] or SELF.tags["obeliskian"] then + if SELF.tags["selenian_spore"] or SELF.tags["obeliskian"] or SELF.tags["geometer"] then send(SELF,"invisFire") return end diff --git a/scripts/gameobjects/airship_mast.go b/scripts/gameobjects/airship_mast.go new file mode 100644 index 0000000..493eb13 --- /dev/null +++ b/scripts/gameobjects/airship_mast.go @@ -0,0 +1,491 @@ +gameobject "airship_mast" inherit "object_damage" inherit "spatialobject" +<< + local + << + function airship_mast_reset_controls() + + send("rendInteractiveObjectClassHandler", + "odinRendererClearInteractions", + state.renderHandle) + + if not SELF.tags["under_construction"] then + if SELF.tags["active_airship_mast"] then + + send("rendInteractiveObjectClassHandler", + "odinRendererAddInteractions", + state.renderHandle, + "De-activate Airship Signaling", + "De-activate Airship Signaling", + "", --"De-activate Airship Signaling", + "", --"De-activate Airship Signaling", + "", + "", + "click01", + false,true) + + else + -- if not active_airship_mast + + send("rendInteractiveObjectClassHandler", + "odinRendererAddInteractions", + state.renderHandle, + "Re-activate Airship Signaling Mast", + "Re-activate Airship Signaling Mast", + "", --"Re-activate Airship Signaling Mast", + "", --"Re-activate Airship Signaling Mast", + "", + "", + "click01", + false,true) + end + + send("rendInteractiveObjectClassHandler", + "odinRendererAddInteractions", + state.renderHandle, + "Dismantle Airship Mast", + "Dismantle Objects", + "", --"Dismantle Airship Masts", + "", --"Dismantle Objects", + "hammer_icon", + "construction", + "Hammer Wood E", + false,true) + end + end + + function airship_mast_reset_tooltip() + local tooltipTitle = "Airship Mast" + local tooltipDescription = "This airship mast is under construction." + + if not SELF.tags["under_construction"] then + if SELF.tags["active_airship_mast"] then + tooltipDescription = "This airship mast will signal to passing airships where they ought to drop off goods & immigrants." + else -- if not active_airship_mast + tooltipDescription = "This airship mast is currently disabled. If activated, goods and immigrants will be dropped nearby." + end + else + + end + + send("rendInteractiveObjectClassHandler", + "odinRendererBindTooltip", + state.renderHandle, + "ui//tooltips//groundItemTooltipDetailed.xml", + tooltipTitle, + tooltipDescription) + end + >> + + state + << + int renderHandle + int health + int timer + bool addedJob + gameSimAssignmentHandle assignment + >> + + receive Create(stringstringMapHandle init) + << + printl("buildings", "airship_mast got Create") + state.position.x = -1 + state.position.y = -1 + SELF.tags = { "under_construction" } + state.health = 100 + state.addedJob = false + state.assignment = nil + state.timer = 100 + ready() + sleep() + >> + + receive GameObjectPlace( int x, int y ) + << + printl("buildings", "airship_mast got GameObjectPlace; " .. x .. " / " .. y ) + state.renderHandle = SELF.id + + local occupancyMap = + "..@..\\".. + ".---.\\".. + "@-c-@\\".. + ".---.\\".. + "..@..\\" + local occupancyMapRotate45 = + "..@..\\".. + ".---.\\".. + "@-c-@\\".. + ".---.\\".. + "..@..\\" + + send("gameSpatialDictionary", "registerSpatialMapString", SELF, occupancyMap, occupancyMapRotate45, false ) + send("gameSpatialDictionary", "gridAddObjectTo", SELF, state.position) + send("gameSpatialDictionary", "toggleBuildingOnSquares", state.position.x, state.position.y, 1, 1, true) + >> + + receive CompleteConstruction() + << + printl("buildings", "airshipmast got CompleteConstruction") + + local tickerstring = "An airship signalling mast has been completed!" + + send("rendCommandManager", + "odinRendererTickerMessage", + tickerstring, + "icon_airshiptower1", + "ui\\orderIcons.xml") + + --[[send("rendCommandManager", + "odinRendererStubMessage", --"odinRendererStubMessage", + "ui\\orderIcons.xml", -- iconskin + "icon_airshiptower1", -- icon + "Airship Mast Constructed", -- header text + tickerstring, -- text description + "Right-click to dismiss.", -- action string + "airshipMast", -- alert type (for stacking) + "ui\\eventart\\cult_ritual.png", -- imagename for bg + "low", -- importance: low / high / critical + nil, -- object ID + 60 * 1000, -- duration in ms + 0, -- snooze + nil)]] + + send("rendCommandManager", + "odinRendererStubMessage", + "ui\\orderIcons.xml", -- iconskin + "icon_airshiptower1", -- icon + "Airship Mast built", -- header text + "Airship signalling mast completed! Airdrops will be sent to this location.", -- text description + "Left-click to zoom. Right-click to dismiss.", -- action string + "airshipMastComplete", -- alert type (for stacking) + "", -- imagename for bg + "low", -- importance: low / high / critical + state.renderHandle, -- object ID + 30 * 1000, -- duration in ms + 0, -- "snooze" time if triggered multiple times in rapid succession + nil) -- gameobjecthandle of director, null if none + + local collection = query("gameObjectManager", "gameObjectCollectionRequest", "airdropMasts")[1] + for k, otherMast in pairs(collection) do + -- tell 'em to shut off. because swag + send(otherMast, "turnOff", "another airship mast was built") + end + + send("gameSession", "setSessionBool", "airdropOverride", true) + send("gameSession", "setSessionBool", "airshipMastBuilt", true) + send("gameSession", "setSessionInt", "airdropX", state.position.x) + send("gameSession", "setSessionInt", "airdropY", state.position.y) + + collection[ #collection +1 ] = SELF + + SELF.tags = {"airship_mast", "destructible_wall", "active_airship_mast",} + + state.health = 40 + + send("rendStaticPropClassHandler", + "odinRendererCreateStaticPropRequest", + SELF, + "models/constructions/airshipMooringTower.upm", + state.position.x, + state.position.y) + + --[[send("rendStaticPropClassHandler", + "odinRendererRotateStaticProp", + state.renderHandle, rand(1,359), 0.25)--]] + + send("rendCommandManager", + "odinRendererCreateParticleSystemMessage", + "CeramicsStamperPoof", + state.position.x, + state.position.y ) + + local occupancyMap = + "..@..\\".. + ".ppp.\\".. + "@p#p@\\".. + ".ppp.\\".. + "..@..\\" + + local occupancyMapRotate45 = + "..@..\\".. + ".ppp.\\".. + "@p#p@\\".. + ".ppp.\\".. + "..@..\\" + + send( "gameSpatialDictionary", "registerSpatialMapString", SELF, occupancyMap, occupancyMapRotate45, false ) + + airship_mast_reset_controls() + airship_mast_reset_tooltip() + >> + + receive turnOff( string reason) + << + if not SELF.tags["under_construction"] then + if SELF.tags["active_airship_mast"] then + send("gameSession", "setSessionBool", "airdropOverride", false) + + SELF.tags["active_airship_mast"] = nil + + send("rendCommandManager", + "odinRendererTickerMessage", + "Airship signalling mast disabled because " .. reason .. ". Airdrops will be deployed to a roughly central location.", + "icon_airshiptower1", + "ui\\orderIcons.xml") + + airship_mast_reset_controls() + airship_mast_reset_tooltip() + end + end + >> + + receive turnOn() + << + if not SELF.tags["under_construction"] then + if not SELF.tags["active_airship_mast"] then + + send("rendCommandManager", + "odinRendererTickerMessage", + "Airship signalling mast re-activated, airdrops will be sent to this position.", + "icon_airshiptower1", + "ui\\orderIcons.xml") + + SELF.tags["active_airship_mast"] = true + send("gameSession", "setSessionBool", "airdropOverride", true) + send("gameSession", "setSessionInt", "airdropX", state.position.x) + send("gameSession", "setSessionInt", "airdropY", state.position.y) + + local collection = query("gameObjectManager", "gameObjectCollectionRequest", "airdropMasts")[1] + for k, otherMast in pairs(collection) do + if otherMast ~= SELF then + send(otherMast, "turnOff", "another airship mast was enabled") + end + end + + airship_mast_reset_controls() + airship_mast_reset_tooltip() + end + end + >> + + receive InteractiveMessage( string messagereceived ) + << + printl("buildings", "airship mast got InteractiveMessage: " .. messagereceived ) + if not state.addedJob then + if messagereceived == "Dismantle Objects" then + + send(SELF,"turnOff", "this airship mast was ordered to be dismantled") + + send("rendCommandManager", + "odinRendererCreateParticleSystemMessage", + "Small Beacon", + state.position.x, + state.position.y) + + results = query("gameBlackboard", + "gameObjectNewAssignmentMessage", + SELF, + "Dismantle Objects", + "construction", + "construction") + + state.assignment = results[1] + state.addedJob = true + send( "gameBlackboard", + "gameObjectNewJobToAssignment", + state.assignment, + SELF, + "Dismantle Objects", + "object", + true ) + + send("rendStaticPropClassHandler", + "odinRendererStaticPropExpressionMessage", + state.renderHandle, + "machine_thought64", + "jobaxe", false) + + send("rendInteractiveObjectClassHandler", + "odinRendererClearInteractions", + state.renderHandle) + end + end + + if messagereceived == "De-activate Airship Signaling" then + send(SELF,"turnOff", "this mast was deactivated") + elseif messagereceived == "Re-activate Airship Signaling Mast" then + send(SELF,"turnOn") + end + >> + + receive InteractiveMessageWithAssignment( string messagereceived, gameSimAssignmentHandle assignment ) + << + printl("buildings", "airship mast got InteractiveMessageWithAssignment: " .. messagereceived ) + if not state.addedJob then + if messagereceived == "Dismantle Objects" then + + send(SELF,"turnOff", "this airship mast was ordered to be dismantled") + + send("rendCommandManager", + "odinRendererCreateParticleSystemMessage", + "Small Beacon", + state.position.x, + state.position.y) + + state.assignment = assignment + state.addedJob = true + send( "gameBlackboard", + "gameObjectNewJobToAssignment", + state.assignment, + SELF, + "Dismantle Objects", + "object", + true ) + + send("rendStaticPropClassHandler", + "odinRendererStaticPropExpressionMessage", + state.renderHandle, + "machine_thought64", + "jobaxe", false) + + send("rendInteractiveObjectClassHandler", + "odinRendererClearInteractions", + state.renderHandle) + end + end + + if messagereceived == "Cancel Construction" then + send(SELF, "Clear", nil) + end + + if messagereceived == "De-activate Airship Signaling" then + send(SELF,"turnOff", "this airship mast was ordered to be deactivated") + elseif messagereceived == "Re-activate Airship Signaling Mast" then + send(SELF,"turnOn") + end + >> + + receive Update() + << + + >> + + respond isObstruction() + << + return "obstructionResult", true + >> + + receive JobCancelledMessage(gameSimJobInstanceHandle job) + << + state.assignment = nil + state.addedJob = false; + >> + + receive ClearViolently( gameSimJobInstanceHandle ji, gameObjectHandle damagingObject ) + << + -- thunder & noise + --[[ + send("rendCommandManager", + "odinRendererCreateParticleSystemMessage", + "DustPuffXtraLarge", + state.position.x, + state.position.y ) + ]]-- + + send("rendInteractiveObjectClassHandler", + "odinRendererPlaySFXOnInteractive", + state.renderHandle, + "Break (Dredmor)" ) + + local handle = query( "scriptManager", + "scriptCreateGameObjectRequest", + "objectcluster", + {legacyString = "Wrecked Airship Mast Cluster"} )[1] + + send(handle, "GameObjectPlace", state.position.x, state.position.y ) + + send(SELF,"Clear", ji) + >> + + receive Dismantle( gameSimJobInstanceHandle ji ) + << + -- spawn material, then delete self. + local results = query("scriptManager", + "scriptCreateGameObjectRequest", + "item", + {legacyString = "bricks"} )[1] + + send( results, "GameObjectPlace", state.position.x, state.position.y ) + + send("rendCommandManager", + "odinRendererCreateParticleSystemMessage", + "CeramicsStamperPoof", + state.position.x, + state.position.y ) + + send(SELF,"Clear", ji) + >> + + receive Clear( gameSimJobInstanceHandle ji ) + << + if SELF.tags["active_airship_mast"] then + send("gameSession", "setSessionBool", "airdropOverride", false) + else + -- not the active mast, so whatevs. + end + + local collection = query("gameObjectManager", "gameObjectCollectionRequest", "airdropMasts")[1] + for k, otherMast in pairs(collection) do + if otherMast == SELF then + collection[k] = nil + break + end + end + + -- are all masts destroyed? + local num = 0 + for k, otherMast in pairs(collection) do + num = num +1 + end + if num == 0 then + send("gameSession", "setSessionBool", "airshipMastBuilt", false) + end + + send("gameSpatialDictionary", "toggleBuildingOnSquares", state.position.x, state.position.y, 1, 1, false); + send("gameBlackboard", "gameObjectRemoveTargetingJobs", SELF, ji) + send("rendStaticPropClassHandler", "odinRendererDeleteStaticProp", SELF.id) + send("gameSpatialDictionary", "gridRemoveObject", SELF) + + send("rendCommandManager", + "odinRendererCreateParticleSystemMessage", + "DustPuffMassive", + state.position.x, + state.position.y) + + destroyfromjob(SELF,ji) + >> + + receive JobCancelledMessage( gameSimJobInstanceHandle ji ) + << + if SELF.tags["under_construction"] then + send(SELF,"Clear", ji) + else + send("rendInteractiveObjectClassHandler", + "odinRendererClearInteractions", + state.renderHandle) + + send("rendInteractiveObjectClassHandler", + "odinRendererAddInteractions", + state.renderHandle, + "Dismantle Object", + "Dismantle Objects", + "", --"Dismantle Object", + "", --"Dismantle Objects", + "hammer_icon", + "construction", + "Hammer Wood E", + false, + true) + end + >> + +>> \ No newline at end of file diff --git a/scripts/gameobjects/citizen.go b/scripts/gameobjects/citizen.go index a448acb..aa3579a 100644 --- a/scripts/gameobjects/citizen.go +++ b/scripts/gameobjects/citizen.go @@ -554,7 +554,7 @@ gameobject "citizen" inherit "ai_agent" --tmEnter("character three second update") -- let's try doing spectres here instead - if SELF.tags.dead and not SELF.tags.last_rights_performed then + if SELF.tags.dead and not SELF.tags.last_rites_performed then if is_it_nighttime and not SELF.tags.did_spectre_check then SELF.tags.did_spectre_check = true @@ -568,10 +568,10 @@ gameobject "citizen" inherit "ai_agent" if not SELF.tags.buried or SELF.tags.occult_mark_death then - ghostChance = ghostChance + 5 + ghostChance = ghostChance + 10 end - if rand(1,100) < ghostChance then -- rand(1,100) + if rand(1,75) < ghostChance then -- rand(1,100) -- maybe spawn a ghost. -- ghostgoals @@ -5862,6 +5862,7 @@ gameobject "citizen" inherit "ai_agent" receive Nightfall() << + --[[ moved elsewhere -- It's transitioning to nighttime! Do stuff you'd do at night. if SELF.tags.dead and not SELF.tags.last_rites_performed then local ghostChance = 2 @@ -5916,7 +5917,7 @@ gameobject "citizen" inherit "ai_agent" end return end - + ]]-- -- lose invulnerability upon night. if SELF.tags.temp_hostiles_dont_target then SELF.tags.temp_hostiles_dont_target = nil diff --git a/scripts/gameobjects/fishperson.go b/scripts/gameobjects/fishperson.go index 773be16..284f30d 100644 --- a/scripts/gameobjects/fishperson.go +++ b/scripts/gameobjects/fishperson.go @@ -770,7 +770,13 @@ gameobject "fishperson" inherit "ai_agent" "none", "biped", "idle_dead") - + + send("rendCommandManager", + "odinRendererCreateParticleSystemMessage", + "DustPuffXtraLarge", + state.AI.position.x, + state.AI.position.y) + --[[ send("rendCommandManager", "odinRendererCreateParticleSystemMessage", "MiasmaBurst", @@ -783,6 +789,7 @@ gameobject "fishperson" inherit "ai_agent" send("gameSpatialDictionary", "gridRemoveObject", SELF) destroy(SELF) + ]]-- end end >> @@ -953,12 +960,20 @@ gameobject "fishperson" inherit "ai_agent" --destroyfromjob(SELF, ji) else -- disappear in a poof of smoke. + --[[ send("rendCommandManager", "odinRendererCreateParticleSystemMessage", "CeramicsStamperPoof", state.AI.position.x, state.AI.position.y) - + ]]-- + + send("rendCommandManager", + "odinRendererCreateParticleSystemMessage", + "MiasmaBurst", + state.AI.position.x, + state.AI.position.y) + -- remove me from world, take carried objects with me. -- if carrying a body (for some reason), leave it behind. diff --git a/scripts/gameobjects/flatten_zone.go b/scripts/gameobjects/flatten_zone.go new file mode 100644 index 0000000..000ae91 --- /dev/null +++ b/scripts/gameobjects/flatten_zone.go @@ -0,0 +1,244 @@ +gameobject "flatten_zone" +<< + local + << + + >> + + state + << + table flattenSquares + int x + int y + int w + int h + int renderHandle + int targetHeight + bool addedJob + gameSimAssignmentHandle assignment + gameGridPosition position + >> + + receive Create( stringstringMapHandle init ) + << + state.assignment = nil + ready() + >> + + receive Update() + << + >> + + receive odinCreateZoneMessage(string myName, string createString, int x, int y, int w, int h, int originX, int originY, bool fillSquares) + << + state.x = x + state.y = y + state.w = w + state.h = h + state.position.x = originX + state.position.y = originY + + -- CECOMMPATCH + -- this block fixes crashes from flattening terrain on the edge of the map by preventing flattening jobs from occurring there + -- some intelligent resizing of the job occurs so that only valid areas are selected (rather than just refusing the job entirely) + + local l_min = 5 + local l_max = 250 + + local newsx = state.x + local newsy = state.y + local newx = x + local newy = y + local neww = w + local newh = h + + -- change x if needed + if state.x < l_min then + newsx = l_min + newx = l_min + elseif state.x > l_max then + newsx = l_max + newx = l_max + end + + neww = w - (math.abs(state.x - newsx)) + + if newsx + neww > l_max then + neww = l_max - newsx + end + + -- now do the same for y + if state.y < l_min then + newsy = l_min + newy = l_min + elseif state.y > l_max then + newsy = l_max + newy = l_max + end + + newh = h - (math.abs(state.y - newsy)) + + if newsy + newh > l_max then + newh = l_max - newsy + end + + + if (newsx > state.x + w) or + (newsx + neww > state.x + w) or + (neww < 1) then + neww = 0 -- no valid spots + end + + if (newsy > state.y + h) or + (newsy + newh > state.y + h) or + (newh < 1) then + newh = 0 -- no valid spots + end + + state.x = newsx + state.y = newsy + x = newx + y = newy + w = neww + h = newh + -- /CECOMMPATCH FIX + if neww > 0 and newh > 0 then + + state.targetHeight = query("gameSpatialDictionary", "gridGetHeight", state.position)[1]; + + state.flattenSquares = {}; + + local results = query("gameBlackboard", + "gameObjectNewAssignmentMessage", + SELF, + "Flatten Terrain", + "flattening", + "construction") + + state.assignment = results[1] + state.renderHandle = SELF.id; + send("gameBlackboard", "SetAssignmentFlatteningInformation", state.assignment, x, y, w, h, state.targetHeight); + + send("rendBeaconClassHandler", + "CreateAssignmentBeacon", + state.assignment, + "flatten_icon", + "ui\\thoughtIcons.xml", + "ui\\thoughtIconsGray.xml", + 4) + + for i = 0,w do + for j = 0,h do + gp = gameGridPosition:new() + gp.x = state.x + i + gp.y = state.y + j + + send("rendBeaconClassHandler", + "AddPositionToAssignmentBeacon", + state.assignment, + gp.x,gp.y) + end + end + end + >> + + receive InteractiveMessage( string messagereceived ) + << + printl ("Message Received: " .. messagereceived ); + + if messagereceived == "Cancel Job" then + send("gameBlackboard", "cancelAssignment", state.assignment) + end + + >> + respond gridReportPosition() + << + return "gridReportedPosition", state.position + >> + + respond gridGetPosition() + << + return "reportedPosition", state.position + >> + + respond zoneCheckSpace(gameGridPosition pos) + << + local height = query("gameSpatialDictionary", "gridGetHeight", pos)[1]; + + return "zoneCheckSpaceResponse", height ~= state.targetHeight; + >> + + respond ZoneGetTargetSquare() + << + if (#state.flattenSquares < 1) then + return "ZoneTargetSquare", -1, -1 + else + return "ZoneTargetSquare", state.flattenSquares[1].x, state.flattenSquares[1].y + end + >> + + respond ZoneGetParams () + << + return "ZoneParams", state.x, state.y, state.w, state.h, SELF + >> + + receive ZoneRemoveSquare ( int x, int y ) + << + printl("trying to remove square " .. tostring(x) .. "," .. tostring(y)) + for i = 1,#state.flattenSquares do + if (state.flattenSquares[i].x == x and state.flattenSquares[i].y == y) then + table.remove(state.flattenSquares,i) + printl("removing square " .. tostring(x) .. "," .. tostring(y)) + break + end + end + >> + + receive AssignmentSuspendedMessage(gameSimAssignmentHandle a) + << + local done = true; + + gp = gameGridPosition:new() + for i = 0,state.w do + for j = 0,state.h do + gp.x = state.x + i + gp.y = state.y + j + + local height = query("gameSpatialDictionary", "gridGetHeight", gp)[1]; + if height ~= state.targetHeight then + done = false; + end + end + end + + if done then + send("gameBlackboard", "cancelAssignment", a) + + -- delete self + send("rendOdinZoneClassHandler", "odinRendererDeleteZoneRequest", SELF); + send("gameSpatialDictionary", "gridRemoveObject", SELF); + destroy(SELF); + end + >> + + receive AssignmentCancelledMessage(gameSimAssignmentHandle a) + << + send("rendOdinZoneClassHandler", "odinRendererDeleteZoneRequest", SELF); + send("gameSpatialDictionary", "gridRemoveObject", SELF); + + destroy(SELF); + >> + + respond GetTargetHeight() + << + return "TargetHeightResponse", state.targetHeight + >> + + receive SquareAvailable ( int x, int y ) + << + gp = gameGridPosition:new() + gp.x = x + gp.y = y + state.empty_squares[#state.flattenSquares+1] = gp + >> +>> \ No newline at end of file diff --git a/scripts/gameobjects/geometer.go b/scripts/gameobjects/geometer.go new file mode 100644 index 0000000..3ca8d5c --- /dev/null +++ b/scripts/gameobjects/geometer.go @@ -0,0 +1,515 @@ +gameobject "geometer" inherit "ai_agent" +<< + local + << + function geometer_doOneSecondUpdate() + --state.AI.ints["emoteTimer"] = state.AI.ints["emoteTimer"] + 1 + state.AI.ints.secondsCount = state.AI.ints.secondsCount + 1 + if state.AI.ints.secondsCount > 200 then + SELF.tags.exit_map = true + end + end + >> + + state + << + gameObjectHandle group + gameAIAttributes AI + gameGridPosition homeLocation + gameGridPosition wanderDestination + table entityData + table traits + string entityName + string animSet + int renderHandle + int growthTimer + bool asleep + >> + + receive Create( stringstringMapHandle init ) + << + --local entityName = init["legacyString"] + + local entityName = "Geometer" + state.entityName = entityName + + local entityData = EntityDB[ entityName ] + if not entityData then + printl("ai_agent", "geometer type not found") + return + end + + state.displayName = entityName + + printl("ai_agent", "placing " .. state.displayName) + + state.AI.strs["mood"] = "otherworldly" + state.AI.strs["firstName"] = state.displayName + state.AI.strs["lastName"] = "" + state.AI.name = state.displayName -- state.AI.strs.firstName .. " " .. state.AI.strs.lastName + state.AI.strs["gender"] = "none" + state.AI.strs["citizenClass"] = entityName + + state.AI.ints.secondsCount = 0 + + state.AI.ints["num_afflictions"] = 0 + state.AI.ints["max_afflictions"] = 1 + state.AI.ints["health"] = 15 + state.AI.ints["healthMax"] = 15 + state.AI.ints["healthTimer"] = -1 + state.AI.ints["health"] = state.AI.ints["healthMax"] + state.corpseTimer = 0 + + state.group = false + state.renderHandle = SELF.id + + SELF.tags = {} + for k,v in pairs(entityData.tags ) do + SELF.tags[v] = true + end + + local models = {} + models.torsoModel = entityData.model + models.headModel = entityData.headModel + models.animationSet = entityData.animationSet + + state.models = models + state.animSet = models["animationSet"] + + send("rendOdinCharacterClassHandler", + "odinRendererCreateCitizen", + SELF, + models["torsoModel"], + models["headModel"], + "", + "", + models["animationSet"], + 0, + 0 ) + + send("rendOdinCharacterClassHandler", + "odinRendererFaceCharacter", + state.renderHandle, + state.AI.position.orientationX, + state.AI.position.orientationY ) + + state.AI.walkTicks = entityData.walkTicks + state.AI.ints["subGridWalkTicks"] = state.AI.walkTicks + setposition(0,0) + + send("rendOdinCharacterClassHandler", + "odinRendererSetCharacterWalkTicks", + state.renderHandle, + state.AI.walkTicks) + + local occupancyMap = entityData.occupancyMap + local occupancyMapRotate45 = entityData.occupancyMapRotate45 + + send("gameSpatialDictionary", + "registerSpatialMapString", + SELF, + occupancyMap, + occupancyMapRotate45, + true ) + + + + -- don't flag as a geometer until hostile + if query("gameSession","getSessionBool","geometer_hostile")[1] then + send("gameSpatialDictionary", "gameObjectAddBit", SELF, 13) -- Geometers + + send("gameSpatialDictionary", "gameObjectAddHostileBit", SELF, 0) + send("gameSpatialDictionary", "gameObjectAddHostileBit", SELF, 1) + send("gameSpatialDictionary", "gameObjectAddHostileBit", SELF, 2) + send("gameSpatialDictionary", "gameObjectAddHostileBit", SELF, 3) + send("gameSpatialDictionary", "gameObjectAddHostileBit", SELF, 4) + + SELF.tags.hostile_agent = true + end + + --send("gameSpatialDictionary", "gameObjectClearBitfield", SELF) + --send("gameSpatialDictionary", "gameObjectClearHostileBit", SELF) + + --[[ doing these will crash the game btw. + send("rendOdinCharacterClassHandler", + "odinRendererSetCharacterAttributeMessage", + state.renderHandle, + "name", + state.entityName) + + send("rendOdinCharacterClassHandler", + "odinRendererSetCharacterCustomTooltipMessage", + SELF.id, + "ui\\tooltips\\spectreTooltip.xml")]] + + ready() + >> + + receive makeHostile() + << + --[[send("rendOdinCharacterClassHandler", + "odinRendererSetCharacterAttributeMessage", + state.renderHandle, + "name", + state.AI.name) + + send("rendOdinCharacterClassHandler", + "odinRendererSetCharacterCustomTooltipMessage", + SELF.id, + "ui\\tooltips\\banditHostileTooltip.xml") + + send("gameSpatialDictionary","gameObjectAddBit",SELF,14)--]] + send("gameSpatialDictionary", "gameObjectAddBit", SELF, 13) -- Geometers + + SELF.tags.hostile_agent = true + + send("gameSpatialDictionary", "gameObjectAddHostileBit", SELF, 0) + send("gameSpatialDictionary", "gameObjectAddHostileBit", SELF, 1) + send("gameSpatialDictionary", "gameObjectAddHostileBit", SELF, 2) + send("gameSpatialDictionary", "gameObjectAddHostileBit", SELF, 3) + send("gameSpatialDictionary", "gameObjectAddHostileBit", SELF, 4) + >> + + receive makeFriendly() + << + --[[send("rendOdinCharacterClassHandler", + "odinRendererSetCharacterAttributeMessage", + state.renderHandle, + "name", + state.AI.name) + + send("rendOdinCharacterClassHandler", + "odinRendererSetCharacterCustomTooltipMessage", + SELF.id, + "ui\\tooltips\\banditFriendlyTooltip.xml") + + send("gameSpatialDictionary","gameObjectRemoveBit",SELF,14)--]] + send("gameSpatialDictionary", "gameObjectClearBitfield", SELF) + >> + + receive makeNeutral() + << + --[[send("rendOdinCharacterClassHandler", + "odinRendererSetCharacterAttributeMessage", + state.renderHandle, + "name", + state.AI.name) + + send("rendOdinCharacterClassHandler", + "odinRendererSetCharacterCustomTooltipMessage", + SELF.id, + "ui\\tooltips\\banditTooltip.xml") + + send("gameSpatialDictionary","gameObjectRemoveBit",SELF,14)--]] + send("gameSpatialDictionary", "gameObjectClearBitfield", SELF) + >> + + receive SleepMessage() + << + --state.asleep = true + >> + + receive Update() + << + if SELF.tags["exited_map"] then + send(SELF,"beDestroyed") + return + end + + if not state.AI or SELF.deleted then + return + end + + if SELF.tags.dead then + state.corpseTimer = state.corpseTimer + 1 + if state.corpseTimer == 300 then + send("rendCommandManager", + "odinRendererCreateParticleSystemMessage", + "QuagSmokePuff", + state.AI.position.x, + state.AI.position.y ) + + send(SELF,"beDestroyed") + end + + return + elseif state.AI.thinkLocked then + return + end + + if state.AI.curJobInstance == nil then + state.AI.canTestForInterrupts = true -- reset testing for interrupts + local results = query("gameBlackboard", + "gameAgentNeedsJobMessage", + state.AI, + SELF) + + if results.name == "gameAgentAssignedJobMessage" then + state.AI.curJobInstance = results[ 1 ] + state.AI.curJobInstance.assignedCitizen = SELF + send("rendOdinCharacterClassHandler", + "odinRendererSetCharacterAttributeMessage", + state.renderHandle, + "currentJob", + state.AI.curJobInstance.displayName) + + end + else + -- interrupt only at 1s intervals because enemies getting stuff right isn't as important as humans + local do_check = false + if state.AI.ints.updateTimer % 3 == 0 then + do_check = true + end + + if do_check then + local results = query("gameBlackboard","gameAgentTestForInterruptsMessage", state.AI, SELF ) + if results.name == "gameAgentAssignedJobMessage" then + results[1].assignedCitizen = SELF + if state.AI.curJobInstance then + + if state.AI.FSMindex > 0 then + -- run the abort state + local tag = state.AI.curJobInstance:findTag( state.AI.curJobInstance:FSMAtIndex( state.AI.FSMindex ) ) + local name = state.AI.curJobInstance:findName ( state.AI.curJobInstance:FSMAtIndex( state.AI.FSMindex ) ) + -- load up our fsm + local FSMRef = state.AI.curJobInstance:FSMAtIndex(state.AI.FSMindex) + + local targetFSM + if FSMRef:isFSMDisabled() then + targetFSM = ErrorFSMs[ FSMRef:getErrorFSM() ] + else + targetFSM = FSMs[ FSMRef:getFSM() ] + end + + local ok + local nextState + ok, errorState = pcall( function() targetFSM[ "abort" ](state, tag, name) end ) + + if not ok then + print("ERROR: " .. errorState ) + FSM.stateError( state ) + end + end + + state.AI.curJobInstance:abort( "Interrupt hit." ) + state.AI.curJobInstance = nil + end + + state.AI.abortJob = true + if reason ~= nil and reason ~= "" then + state.AI.abortJobMessage = reason + end + if state.AI.abortJobMessage == nil then + state.AI.abortJobMessage = "" + end + + -- Reset the counter for next time + state.AI.FSMindex = 0 + state.AI.curJobInstance = results[ 1 ] + --[[send("rendOdinCharacterClassHandler", + "odinRendererSetCharacterAttributeMessage", + state.renderHandle, + "currentJob", + state.AI.curJobInstance.displayName)]] + else + -- slightly awkward, but we need to do this on the one second tick too. + local keepStepping = true + while keepStepping do + keepStepping = FSM.step( state ) + end + end + else + local keepStepping = true + while keepStepping do + keepStepping = FSM.step( state ) + end + end + end + + if not state.AI or SELF.deleted then + return + end + + if state.AI.ints.updateTimer % 10 == 0 then + geometer_doOneSecondUpdate() + end + >> + + receive setHomeLocation(int x, int y) + << + local newLoc = gameGridPosition:new() + newLoc.x = x + newLoc.y = y + state.homeLocation = newLoc + >> + + respond getHomeLocation() + << + if SELF.tags["idle"] then + state.wanderDestination.x = state.homeLocation.x + rand(-8, 8) + state.wanderDestination.y = state.homeLocation.y + rand(-8, 8) + return "getHomeLocationResponse", state.wanderDestination + else + return "getHomeLocationResponse", state.homeLocation + end + >> + + receive resetInteractions() + << + printl("ai_agent", state.AI.name .. " received resetInteractions") + >> + + receive InteractiveMessage( string messagereceived ) + << + send(SELF,"HandleInteractiveMessage",messagereceived,nil) + >> + + receive InteractiveMessageWithAssignment( string messagereceived, gameSimAssignmentHandle assignment ) + << + send(SELF,"HandleInteractiveMessage",messagereceived,assignment) + >> + + receive HandleInteractiveMessage(string messagereceived, gameSimAssignmentHandle assignment) + << + printl("ai_agent", state.AI.name .. " receive HandleInteractiveMessage: " .. messagereceived) + >> + + receive AssignmentCancelledMessage( gameSimAssignmentHandle assignment ) + << + printl("ai_agent", state.AI.name .. " received AssignmentCancelledMessage") + send("rendInteractiveObjectClassHandler", + "odinRendererRemoveInteraction", + state.renderHandle, + "Cancel Assignment") + + state.assignment = nil + send(SELF,"resetInteractions") + >> + + receive JobCancelledMessage(gameSimJobInstanceHandle job) + << + printl("ai_agent", state.AI.name .. " received JobCancelledMessage") + state.assignment = nil + send(SELF,"resetInteractions") + >> + + receive resetEmoteTimer() + << + state.AI.ints["emoteTimer"] = 0 + >> + + respond getIdleAnimQueryRequest() + << + local animName = "idle" + return "idleAnimResponse", animName + >> + + receive beDestroyed() + << + send("rendOdinCharacterClassHandler", + "odinRendererDeleteCharacterMessage", + state.renderHandle) + + send("gameSpatialDictionary", + "gridRemoveObject", + SELF) + + send("gameBlackboard", + "gameObjectRemoveTargetingJobs", + SELF, + ji) + + destroyfromjob(SELF, nil) + >> + + receive deathBy( gameObjectHandle damagingObject, string damageType ) + << + send("rendCommandManager", + "odinRendererCreateParticleSystemMessage", + "QuagSmokePuff", + state.AI.position.x, + state.AI.position.y ) + + local handle = query("scriptManager", + "scriptCreateGameObjectRequest", + "explosion", + { legacyString = "Small Eldritch Explosion" })[1] + send(handle, + "GameObjectPlace", + state.AI.position.x, + state.AI.position.y) + + send(SELF,"beDestroyed") + >> + + receive damageMessage( gameObjectHandle attacker, string damageType, int damageAmount, string onhit_effect ) + << + if not state.AI or SELF.deleted then + return + end + + if SELF.tags.dead then + return + end + + local distX = rand(-3,3) + local distY = rand(-3,3) + + -- teleport! + local newLoc = gameGridPosition:new() + local result = false + local count = 0 + repeat + local dX = rand(-4,4) + local dY = rand(-4,4) + distX = distX + dX + distY = distY + dY + + newLoc.x = state.AI.position.x + distX + newLoc.y = state.AI.position.y + distY + result = query("gameSpatialDictionary", "gridCanPathTo", SELF, newLoc, false) + count = count + 1 + until (result == true) or (count >= 10) + + if (result == false) then + return + end + + send("rendCommandManager", + "odinRendererCreateParticleSystemMessage", + "QuagSmokePuffLarge", + state.AI.position.x, + state.AI.position.y ) + + send(SELF, "GameObjectPlace",newLoc.x, newLoc.y) + + send("rendCommandManager", + "odinRendererCreateParticleSystemMessage", + "TransformPouf", + state.AI.position.x, + state.AI.position.y ) + + send("rendInteractiveObjectClassHandler", + "odinRendererPlaySFXOnInteractive", + SELF.id, + "Slipgate Return") + + if attacker then + local tags = query(attacker,"getTags")[1] + if tags then + if tags.citizen then + if not query("gameSession","getSessionBool","geometer_hostile")[1] then + send("gameSpatialDictionary", "gameObjectAddBit", SELF, 13) -- Geometers + end + end + end + end + >> + + receive hearExclamation( string name, gameObjectHandle exclaimer, gameObjectHandle subject ) + << + if name == "geometer_go_hostile" then + send(SELF,"makeHostile") + end + >> +>> \ No newline at end of file diff --git a/scripts/gameobjects/geometer_observator.go b/scripts/gameobjects/geometer_observator.go new file mode 100644 index 0000000..47d2422 --- /dev/null +++ b/scripts/gameobjects/geometer_observator.go @@ -0,0 +1,472 @@ +gameobject "geometer_observator" inherit "ai_agent" +<< + local + << + function geometer_observator_doOneSecondUpdate() + state.AI.ints.secondsCount = state.AI.ints.secondsCount + 1 + if state.AI.ints.secondsCount > 100 then + SELF.tags.exit_map = true + end + end + >> + + state + << + gameObjectHandle group + gameAIAttributes AI + gameGridPosition homeLocation + gameGridPosition wanderDestination + table entityData + table traits + string entityName + string animSet + int renderHandle + int growthTimer + bool asleep + >> + + receive Create( stringstringMapHandle init ) + << + --local entityName = init["legacyString"] + + local entityName = "Geometer Observator" + state.entityName = entityName + + local entityData = EntityDB[ entityName ] + if not entityData then + printl("ai_agent", "geometer_observator type not found") + return + end + + state.displayName = entityName + + printl("ai_agent", "placing " .. state.displayName) + + state.AI.strs["mood"] = "otherworldly" + state.AI.strs["firstName"] = state.displayName + state.AI.strs["lastName"] = "" + state.AI.name = state.displayName -- state.AI.strs.firstName .. " " .. state.AI.strs.lastName + state.AI.strs["gender"] = "none" + state.AI.strs["citizenClass"] = entityName + state.AI.ints.secondsCount = 0 + state.AI.ints["num_afflictions"] = 0 + state.AI.ints["max_afflictions"] = 1 + state.AI.ints["numAfflictions"] = 0 + state.AI.ints["health"] = 15 + state.AI.ints["healthMax"] = 15 + state.AI.ints["healthTimer"] = -1 + state.AI.ints["health"] = state.AI.ints["healthMax"] + state.AI.ints.spores = entityData.spores_per_fruit + state.corpseTimer = 0 + + state.group = false + state.renderHandle = SELF.id + + SELF.tags = {} + for k,v in pairs(entityData.tags ) do + SELF.tags[v] = true + end + + state.model = entityData.model + state.animSet = entityData.animationSet + + send("rendOdinCharacterClassHandler", + "odinRendererCreateCharacter", + SELF, + state.model, + state.animSet, + 0, + 0 ) + + send("rendOdinCharacterClassHandler", + "odinRendererFaceCharacter", + state.renderHandle, + state.AI.position.orientationX, + state.AI.position.orientationY ) + + state.AI.walkTicks = 3 + state.AI.ints["subGridWalkTicks"] = state.AI.walkTicks + setposition(0,0) + + send("rendOdinCharacterClassHandler", + "odinRendererSetCharacterWalkTicks", + state.renderHandle, + state.AI.walkTicks) + + local occupancyMap = entityData.occupancyMap + local occupancyMapRotate45 = entityData.occupancyMapRotate45 + + send("gameSpatialDictionary", + "registerSpatialMapString", + SELF, + occupancyMap, + occupancyMapRotate45, + true ) + + send("gameSpatialDictionary", "gameObjectAddHostileBit", SELF, 0) + send("gameSpatialDictionary", "gameObjectAddHostileBit", SELF, 1) + send("gameSpatialDictionary", "gameObjectAddHostileBit", SELF, 2) + send("gameSpatialDictionary", "gameObjectAddHostileBit", SELF, 3) + send("gameSpatialDictionary", "gameObjectAddHostileBit", SELF, 4) + + send("gameSpatialDictionary", "gameObjectAddBit", SELF, 13) -- Geometers + + --send("gameSpatialDictionary", "gameObjectClearBitfield", SELF) + --send("gameSpatialDictionary", "gameObjectClearHostileBit", SELF) + + --[[ doing these will crash the game btw. + send("rendOdinCharacterClassHandler", + "odinRendererSetCharacterAttributeMessage", + state.renderHandle, + "name", + state.entityName) + + send("rendOdinCharacterClassHandler", + "odinRendererSetCharacterCustomTooltipMessage", + SELF.id, + "ui\\tooltips\\spectreTooltip.xml")]] + + + + --send(SELF,"makeHostile") + ready() + >> + + receive makeHostile() + << + --[[send("rendOdinCharacterClassHandler", + "odinRendererSetCharacterAttributeMessage", + state.renderHandle, + "name", + state.AI.name) + + send("rendOdinCharacterClassHandler", + "odinRendererSetCharacterCustomTooltipMessage", + SELF.id, + "ui\\tooltips\\banditHostileTooltip.xml") + + send("gameSpatialDictionary","gameObjectAddBit",SELF,14)--]] + >> + + receive makeFriendly() + << + --[[send("rendOdinCharacterClassHandler", + "odinRendererSetCharacterAttributeMessage", + state.renderHandle, + "name", + state.AI.name) + + send("rendOdinCharacterClassHandler", + "odinRendererSetCharacterCustomTooltipMessage", + SELF.id, + "ui\\tooltips\\banditFriendlyTooltip.xml") + + send("gameSpatialDictionary","gameObjectRemoveBit",SELF,14)--]] + >> + + receive makeNeutral() + << + --[[send("rendOdinCharacterClassHandler", + "odinRendererSetCharacterAttributeMessage", + state.renderHandle, + "name", + state.AI.name) + + send("rendOdinCharacterClassHandler", + "odinRendererSetCharacterCustomTooltipMessage", + SELF.id, + "ui\\tooltips\\banditTooltip.xml") + + send("gameSpatialDictionary","gameObjectRemoveBit",SELF,14)--]] + >> + + receive SleepMessage() + << + --state.asleep = true + >> + + receive Update() + << + if SELF.tags["exited_map"] then + send(SELF,"beDestroyed") + return + end + + if not state.AI or SELF.deleted then + return + end + + if SELF.tags.dead then + state.corpseTimer = state.corpseTimer + 1 + if state.corpseTimer == 100 then + send("rendCommandManager", + "odinRendererCreateParticleSystemMessage", + "QuagSmokePuff", + state.AI.position.x, + state.AI.position.y ) + + send(SELF,"beDestroyed") + end + + return + elseif state.AI.thinkLocked then + return + end + + if state.AI.curJobInstance == nil then + state.AI.canTestForInterrupts = true -- reset testing for interrupts + local results = query("gameBlackboard", + "gameAgentNeedsJobMessage", + state.AI, + SELF) + + if results.name == "gameAgentAssignedJobMessage" then + state.AI.curJobInstance = results[ 1 ] + state.AI.curJobInstance.assignedCitizen = SELF + send("rendOdinCharacterClassHandler", + "odinRendererSetCharacterAttributeMessage", + state.renderHandle, + "currentJob", + state.AI.curJobInstance.displayName) + + end + else + -- interrupt only at 1s intervals because enemies getting stuff right isn't as important as humans + local oneSecond = false + if state.AI.ints.updateTimer % 10 == 0 then + oneSecond = true + end + + if oneSecond then + local results = query("gameBlackboard","gameAgentTestForInterruptsMessage", state.AI, SELF ) + if results.name == "gameAgentAssignedJobMessage" then + results[1].assignedCitizen = SELF + if state.AI.curJobInstance then + + if state.AI.FSMindex > 0 then + -- run the abort state + local tag = state.AI.curJobInstance:findTag( state.AI.curJobInstance:FSMAtIndex( state.AI.FSMindex ) ) + local name = state.AI.curJobInstance:findName ( state.AI.curJobInstance:FSMAtIndex( state.AI.FSMindex ) ) + -- load up our fsm + local FSMRef = state.AI.curJobInstance:FSMAtIndex(state.AI.FSMindex) + + local targetFSM + if FSMRef:isFSMDisabled() then + targetFSM = ErrorFSMs[ FSMRef:getErrorFSM() ] + else + targetFSM = FSMs[ FSMRef:getFSM() ] + end + + local ok + local nextState + ok, errorState = pcall( function() targetFSM[ "abort" ](state, tag, name) end ) + + if not ok then + print("ERROR: " .. errorState ) + FSM.stateError( state ) + end + end + + state.AI.curJobInstance:abort( "Interrupt hit." ) + state.AI.curJobInstance = nil + end + + state.AI.abortJob = true + if reason ~= nil and reason ~= "" then + state.AI.abortJobMessage = reason + end + if state.AI.abortJobMessage == nil then + state.AI.abortJobMessage = "" + end + + -- Reset the counter for next time + state.AI.FSMindex = 0 + state.AI.curJobInstance = results[ 1 ] + --[[send("rendOdinCharacterClassHandler", + "odinRendererSetCharacterAttributeMessage", + state.renderHandle, + "currentJob", + state.AI.curJobInstance.displayName)]] + else + -- slightly awkward, but we need to do this on the one second tick too. + local keepStepping = true + while keepStepping do + keepStepping = FSM.step( state ) + end + end + else + local keepStepping = true + while keepStepping do + keepStepping = FSM.step( state ) + end + end + end + + if state.AI.ints.updateTimer % 10 == 0 then + geometer_observator_doOneSecondUpdate() + end + >> + + receive setHomeLocation(int x, int y) + << + local newLoc = gameGridPosition:new() + newLoc.x = x + newLoc.y = y + state.homeLocation = newLoc + >> + + respond getHomeLocation() + << + if SELF.tags["idle"] then + state.wanderDestination.x = state.homeLocation.x + rand(-8, 8) + state.wanderDestination.y = state.homeLocation.y + rand(-8, 8) + return "getHomeLocationResponse", state.wanderDestination + else + return "getHomeLocationResponse", state.homeLocation + end + >> + + receive resetInteractions() + << + printl("ai_agent", state.AI.name .. " received resetInteractions") + >> + + receive InteractiveMessage( string messagereceived ) + << + send(SELF,"HandleInteractiveMessage",messagereceived,nil) + >> + + receive InteractiveMessageWithAssignment( string messagereceived, gameSimAssignmentHandle assignment ) + << + send(SELF,"HandleInteractiveMessage",messagereceived,assignment) + >> + + receive HandleInteractiveMessage(string messagereceived, gameSimAssignmentHandle assignment) + << + printl("ai_agent", state.AI.name .. " receive HandleInteractiveMessage: " .. messagereceived) + >> + + receive AssignmentCancelledMessage( gameSimAssignmentHandle assignment ) + << + printl("ai_agent", state.AI.name .. " received AssignmentCancelledMessage") + send("rendInteractiveObjectClassHandler", + "odinRendererRemoveInteraction", + state.renderHandle, + "Cancel Assignment") + + state.assignment = nil + send(SELF,"resetInteractions") + >> + + receive JobCancelledMessage(gameSimJobInstanceHandle job) + << + printl("ai_agent", state.AI.name .. " received JobCancelledMessage") + state.assignment = nil + send(SELF,"resetInteractions") + >> + + receive resetEmoteTimer() + << + state.AI.ints["emoteTimer"] = 0 + >> + + respond getIdleAnimQueryRequest() + << + local animName = "idle" + return "idleAnimResponse", animName + >> + + receive beDestroyed() + << + send("rendOdinCharacterClassHandler", + "odinRendererDeleteCharacterMessage", + state.renderHandle) + + send("gameSpatialDictionary", + "gridRemoveObject", + SELF) + + send("gameBlackboard", + "gameObjectRemoveTargetingJobs", + SELF, + ji) + + destroyfromjob(SELF, nil) + >> + + receive deathBy( gameObjectHandle damagingObject, string damageType ) + << + send("rendCommandManager", + "odinRendererCreateParticleSystemMessage", + "QuagSmokePuff", + state.AI.position.x, + state.AI.position.y ) + + local handle = query("scriptManager", + "scriptCreateGameObjectRequest", + "explosion", + { legacyString = "Small Eldritch Explosion" })[1] + send(handle, + "GameObjectPlace", + state.AI.position.x, + state.AI.position.y) + + send(SELF,"beDestroyed") + + >> + + receive damageMessage( gameObjectHandle attacker, string damageType, int damageAmount, string onhit_effect ) + << + SELF.tags.agitated = true + + if not state.AI or SELF.deleted then + return + end + + if SELF.tags.dead then + return + end + + local distX = rand(-3,3) + local distY = rand(-3,3) + + -- teleport! + local newLoc = gameGridPosition:new() + local result = false + local count = 0 + repeat + local dX = rand(-4,4) + local dY = rand(-4,4) + distX = distX + dX + distY = distY + dY + + newLoc.x = state.AI.position.x + distX + newLoc.y = state.AI.position.y + distY + result = query("gameSpatialDictionary", "gridCanPathTo", SELF, newLoc, false) + count = count + 1 + until (result == true) or (count >= 10) + + if (result == false) then + return + end + + send("rendCommandManager", + "odinRendererCreateParticleSystemMessage", + "QuagSmokePuffLarge", + state.AI.position.x, + state.AI.position.y ) + + send(SELF, "GameObjectPlace",newLoc.x, newLoc.y) + + send("rendCommandManager", + "odinRendererCreateParticleSystemMessage", + "TransformPouf", + state.AI.position.x, + state.AI.position.y ) + + send("rendInteractiveObjectClassHandler", + "odinRendererPlaySFXOnInteractive", + SELF.id, + "Slipgate Return") + >> +>> \ No newline at end of file diff --git a/scripts/gameobjects/grave.go b/scripts/gameobjects/grave.go index 1c30451..f8d52b5 100644 --- a/scripts/gameobjects/grave.go +++ b/scripts/gameobjects/grave.go @@ -283,7 +283,16 @@ gameobject "grave" "ui//tooltips//groundItemTooltipDetailed.xml", tooltipTitle, tooltipDescription) - + + if results then + state.owner = results[1] + if grave_who_tags["citizen"] then + SELF.tags["citizen_grave"] = true + end + if grave_who_tags["last_rites_performed"] then + SELF.tags["last_rites_performed"] = true + end + end >> receive Update() @@ -313,4 +322,20 @@ gameobject "grave" return "gridReportedPosition", state.position >> + receive registerOwner( gameObjectHandle owner) + << + state.owner = owner + >> + + receive addTag( string name ) + << + SELF.tags[name] = true + >> + + receive tagOwner() + << + if state.owner then + send(state.owner,"addTag", "last_rites_performed") + end + >> >> \ No newline at end of file diff --git a/scripts/gameobjects/steamknight.go b/scripts/gameobjects/steamknight.go index 54e6810..25af13f 100644 --- a/scripts/gameobjects/steamknight.go +++ b/scripts/gameobjects/steamknight.go @@ -468,7 +468,7 @@ gameobject "steamknight" inherit "ai_agent" SELF.tags["sk_exploded"] = true - --send(SELF,"despawn") -- disabling for now... can't figure out how to get rid of the weapon + send(SELF,"despawn") -- disabling for now... can't figure out how to get rid of the weapon end else state.AI.ints["corpse_timer"] = 20 @@ -804,6 +804,9 @@ gameobject "steamknight" inherit "ai_agent" -- remove me from world, take carried objects with me. -- if carrying a body (for some reason), leave it behind. + send("rendOdinCharacterClassHandler", + "odinRendererCharacterDropTemporaryToolMessage", + state.renderHandle) send("gameBlackboard", "gameObjectRemoveTargetingJobs", SELF, nil) send("rendOdinCharacterClassHandler", "odinRendererDeleteCharacterMessage", state.renderHandle) send("gameSpatialDictionary", "gridRemoveObject", SELF) diff --git a/scripts/gamestart.lua b/scripts/gamestart.lua new file mode 100644 index 0000000..376ee24 --- /dev/null +++ b/scripts/gamestart.lua @@ -0,0 +1,629 @@ +--send("rendCommandManager", "odinRendererSetLighting", 255, 245, 235, 55, 60, 65) -- this is done in embarks now + +--send("rendCommandManager", "SetSysBool", "desert_unlocked", true) + +-- are traders on the map? No! +send("gameSession","setSessionBool","tradersOnMap",false) + +-- this is used to generate on-map ore veins but not used thereafter (yet) +local oremap = query("scriptManager", + "scriptCreateGameObjectRequest", + "oreMap", + {legacyString = "oremap"} )[1] + +send("gameSession","setSessiongOH","oremap",oremap) + +local analytics = query("scriptManager", + "scriptCreateGameObjectRequest", + "analytics", + {legacyString = "analytics"} )[1] + +send("gameSession","setSessiongOH","analytics",analytics) + +send("gameSession","setSessionInt","buildingCount",0) +send("gameSession","setSessionInt","disturbancePoints",0) + +send("gameSession","setSessionInt","x_max", 255) +send("gameSession","setSessionInt","y_max", 255) + +-- for overworld integration controls +-- this is an example and this whole block should be treated as debug +--[[local overworld_tag_list = { + more_stahlmark = true, + more_novorus = false, + more_republique = false, + bandits = true, + more_bandits = true, + obeliskians = false, + more_obeliskians = false, + fishpeople = true, + more_fishpeople = true, + mineral_poor = false, + poor_farming = true, } + +for k,v in pairs(overworld_tag_list) do + send("gameSession","setSessionBool",k,v) +end]] + +send("gameSession","setSessionBool","bandits",true) +send("gameSession","setSessionBool","fishpeople",true) +send("gameSession","setSessionBool","obeliskians",true) + +send("gameSession","setSessionBool","more_stahlmark",false) +send("gameSession","setSessionBool","more_novorus",false) +send("gameSession","setSessionBool","more_republique",false) + +--send("gameSession", "setSteamStatValue", "cannibalism", 50); +--send("gameSession", "setSteamAchievement", "cannibalismHasOccurred") +-- for endgame screen. +for i=1,20 do + send("gameSession","setSessionString","endGameString" .. i ,"0") +end + +--[[ +for i=1,150 do + send("gameSession", "incSteamStat", "stat_dodo_kill_count", 1) +end +--]] + +send("gameSession","setSessionInt","militaryDeaths",0) +send("gameSession","setSessionInt","colonyDeaths",0) + +send("gameSession","setSessionInt","highestPopulation",0) -- 1 DONE +send("gameSession","setSessionInt","totalImmigrantCount",0) -- 2 DONE +send("gameSession","setSessionInt","highestBuildingCount",0) -- 3 DONE +send("gameSession","setSessionInt","totalGoodsProduced",0) -- 4 DONE +send("gameSession","setSessionInt","totalAgriculturalOutput",0) -- 5 DONE +send("gameSession","setSessionInt","treesChoppedCount", 0) -- 6 DONE +send("gameSession","setSessionInt","actsOfCannibalism", 0) -- 7 DONE +send("gameSession","setSessionInt","highestCultistPopulation", 0) -- 8 DONE +send("gameSession","setSessionInt","majorEldritchEvents", 0) -- 9 DONE +send("gameSession","setSessionInt","eldritchArtifactsFound", 0) -- 10 DONE + +send("gameSession", "setSessionInt", "tipTopCaviarCount", 0) +send("gameSession", "setSessionBool", "cannibalismHasOccurred", false) +send("gameSession", "setSessionInt", "oreNodesMinedCount", 0) + +send("gameSession", "setSessionInt", "workplaceCount", 0) +local overseerCount = 7 -- for now this is what it starts at. +local workplaceCap = overseerCount - 1 +send("gameSession", "setSessionInt", "workplaceCap", workplaceCap) + + +local x_max = query("gameSession","getSessionInt","x_max")[1] +local y_max = query("gameSession","getSessionInt","y_max")[1] + +send("rendCommandManager", + "odinRendererTickerMessage", + "Beginning Day 1", + "sun", + "ui\\thoughtIcons.xml") + +-- do factions setup. +for k,v in pairs(EntitiesByType["faction"]) do + local create_results = query( "scriptManager", + "scriptCreateGameObjectRequest", + "faction", + {legacyString = k} ) + + local handle = create_results[1] +end + +-- do fishpeople faction object. +local create_results = query( "scriptManager", + "scriptCreateGameObjectRequest", + "faction", + {legacyString = "FishInfo" } ) + +--send("gameSession", "setSessionInt", "upkeep_trunks1", 0) +--send("gameSession", "setSessionInt", "upkeep_trunks2", 0) +--send("gameSession", "setSessionInt", "upkeep_trunks3", 0) +--send("gameSession", "setSessionInt", "upkeep_trunks4", 0) + + +-- science stats to be changed by Science! Research! + --[[ + industry modifiers: consider them like skills that apply to the entire colony + int should be treated as a percentage, so 100 is baseline. + to INCREASE efficiency SUBTRACT from the modifier. 95 = 95% of time to do a job. + Tread lightly here because they modify skill times, which can go very low. + ]] + + send("gameSession", "setSessionInt", "agricultureTechModifier", 100) + send("gameSession", "setSessionInt", "miningTechModifier", 100) + send("gameSession", "setSessionInt", "carpentryTechModifier", 100) + send("gameSession", "setSessionInt", "cookingTechModifier", 100) + send("gameSession", "setSessionInt", "chemistryTechModifier", 100) + send("gameSession", "setSessionInt", "stoneworkingTechModifier", 100) + send("gameSession", "setSessionInt", "smeltingTechModifier", 100) + send("gameSession", "setSessionInt", "metalworkingTechModifier", 100) + send("gameSession", "setSessionInt", "researchTechModifier", 100) + send("gameSession", "setSessionInt", "diplomacyTechModifier", 100) + send("gameSession", "setSessionInt", "militaryTrainingTechModifier", 100) + send("gameSession", "setSessionInt", "militaryDamageTechBonus", 0) + send("gameSession", "setSessionInt", "militaryDefenseTechBonus", 0) + send("gameSession", "setSessionInt", "gatheringSpeedModifier", 100) + send("gameSession", "setSessionInt", "militaryHealthBonus", 0) + send("gameSession", "setSessionInt", "civilianHealthBonus", 0) + send("gameSession", "setSessionInt", "militaryReloadModifier", 100) + + --send("gameSession", "setSessionInt", "medicalTechModifier", 100) -- not done + --send("gameSession", "setSessionInt", "constructionTechModifier", 100) -- not done, might who cares + + -- science unlocks + --[[ format for crop modifiers/unlocks: + + send("gameSession", "setSessionBool", "cropUnlocked=" .. cropName, BOOL ) + send("gameSession", "setSessionInt", "cropGrowthModifier=" .. cropName, INT ) + + note: these are set up automatically per-embark type using info from + WorldStats.climeInfoPerBiome[biomeName].cropTable + ]] + + -- Science study counters. + + send("gameSession","setSessionInt","naturalistMineNodesStudied",0) + +-- day/night cycle + send("gameSession","setSessionString","eventLighting", "default") --used to toggle on event lighting if set to something other than default. + send("gameSession","setSessionString","lastLightingType", "default") --used to tell the lighting transition system what the current lighting type is. + send("gameSession", "setSessionBool", "refreshLighting", false) --If true, frameupdate will instantly reload the lighting on the current zone. Use for activating event lighting. + send("gameSession", "setSessionInt", "dayCount", 1) + send("gameSession", "setSessionInt", "dayNightCounter", 0) + send("gameSession", "setSessionBool", "transitioning", false) + send("gameSession", "setSessionInt", "transitionCounter", 0) + send("gameSession", "setSessionInt", "currentShift", 1) + send("gameSession", "setSessionString", "lightingTransitionFrom", "sunrise") + send("gameSession", "setSessionString", "lightingTransitionTo", "sunrise") + send("gameSession", "setSessionBool", "isNight", false) + send("gameSession", "setSessionBool", "isDay", true) + send("gameSession", "setSessionBool", "isDawn", false) + send("gameSession", "setSessionBool", "isDusk", false) + send("gameSession", "setSessionBool", "isNoon", false) + + send("gameSession", "setSessionBool", "shiftTimer", 0) + + +-- There was a prestige here. It's gone now. + +send("gameSession", "setSessionInt", "airdropX", 127) +send("gameSession", "setSessionInt", "airdropY", 127) +send("gameSession", "setSessionBool", "airshipMastBuilt", false) +send("gameSession", "setSessionBool", "airdropOverride", false) + +-- foreign relations + -- -100 to 100 scale relations + -- bools for allied & war + + send("gameSession", "setSessionInt", "NovorusRelations", 0) + send("gameSession", "setSessionInt", "NovorusNeutralHostile", -33) + send("gameSession", "setSessionInt", "NovorusNeutralFriendly", 33) + send("gameSession", "setSessionInt", "NovorusRelationsMin", -100) + send("gameSession", "setSessionInt", "NovorusRelationsMax", 100) + send("gameSession", "setSessionBool", "novorus_max", false) + send("gameSession", "setSessionInt", "NovorusLoggingBan", 0) + + send("gameSession", "setSessionInt", "RepubliqueRelations", 0) + send("gameSession", "setSessionInt", "RepubliqueNeutralHostile", -33) + send("gameSession", "setSessionInt", "RepubliqueNeutralFriendly", 33) + send("gameSession", "setSessionInt", "RepubliqueRelationsMin", -100) + send("gameSession", "setSessionInt", "RepubliqueRelationsMax", 100) + send("gameSession", "setSessionBool", "republique_max", false) + send("gameSession", "setSessionInt", "RepubliqueCrafting", 0) + send("gameSession", "setSessionBool", "AllowUraniumCrafting", false) + + send("gameSession", "setSessionInt", "StahlmarkRelations", 0) + send("gameSession", "setSessionInt", "StahlmarkNeutralHostile", -33) + send("gameSession", "setSessionInt", "StahlmarkNeutralFriendly", 33) + send("gameSession", "setSessionInt", "StahlmarkRelationsMin", -100) + send("gameSession", "setSessionInt", "StahlmarkRelationsMax", 100) + send("gameSession", "setSessionBool", "stahlmark_max", false) + send("gameSession", "setSessionInt", "StahlmarkCrafting", 0) + + send("gameSession", "setSessionInt", "EmpireRelations", 0) + send("gameSession", "setSessionInt", "EmpireRelationsMin", -100) + send("gameSession", "setSessionInt", "EmpireRelationsMax", 100) + send("gameSession", "setSessionBool", "invasionInProgress", false) + + --send("gameSession","setSessiongOH", "cult_shrine", nil) + + -- TEST: at gamestart, make one hostile, one neutral, one allied. + + local nations = { "Stahlmark", "Novorus", "Republique" } + local r = rand(1,3) + local hostileNation = nations[r] + table.remove(nations, r) + r = rand(1,2) + local alliedNation = nations[r] + table.remove(nations, r) + local neutralNation = nations[1] + + printl("events", "making hostile nation out of: " .. hostileNation) + + send("gameSession", "setSessionInt", hostileNation .. "Relations", -75) + send( query("gameSession","getSessiongOH", hostileNation)[1], "makeHostile") + + printl("events", "making potentially allied nation out of: " .. alliedNation) + --send("gameSession", "setSessionInt", alliedNation .. "Relations", 75) + --send( query("gameSession","getSessiongOH", alliedNation)[1], "makeFriendly") + send( query("gameSession","getSessiongOH", alliedNation)[1], "makeNeutral") + + send( query("gameSession","getSessiongOH", neutralNation)[1], "makeNeutral") + + send("gameSession", "setSessionString", "defaultFriendly", alliedNation) + send("gameSession", "setSessionString", "defaultHostile", hostileNation) + send("gameSession", "setSessionString", "defaultNeutral", neutralNation) + +-- just #fishpeoplething + + -- this is used to set delays between fishpeople reaction/policy events. + send("gameSession", "setSessionBool", "fishpeopleEventActive", false) + + send("gameSession", "setSessionBool", "fishpeopleFirstContact", false) + send("gameSession","setSessionBool","fishpeopleShotOnSight",false) + + send("gameSession", "setSessionBool", "fishpeoplePolicyHostile", false) + send("gameSession", "setSessionBool", "fishpeoplePolicyDenial", false) + send("gameSession", "setSessionBool", "fishpeoplePolicyFriendly", false) + + send("gameSession", "setSessionInt", "fishpeoplePolicyLastSetDay", 0) + + send("gameSession", "setSessionInt", "fishpeopleConversations", 0) + send("gameSession", "setSessionInt", "fishpeopleAnger", 0) + send("gameSession", "setSessionInt", "fishpeopleDeaths", 0) + send("gameSession", "setSessionInt", "lastFishpeopleRaidDay", 0) + send("gameSession", "setSessionInt", "fishpeoplePopulation", 0) -- on map + + send("gameSession","setSessionBool","fishpeopleVandalismPolicyEventActive",false) + send("gameSession","setSessionBool","fishpeopleVandalismExecution",false) + send("gameSession", "setSessionBool","fishpeopleVandalismDiscouraged",false) + + send("gameSession", "setSessionBool", "fishpeopleButcherHumanPolicySet", false) + send("gameSession", "setSessionBool", "fishpeopleButcherHumanPolicyDeath", false) + send("gameSession", "setSessionBool", "fishpeopleButcherHumanPolicyBeatings", false) + + send("gameSession", "setSessionBool", "fishpeopleHasslePolicySet", false) + send("gameSession", "setSessionBool", "fishpeopleHassleAll", true) + send("gameSession", "setSessionBool", "fishpeopleHassleTroublemakers", true) + +-- Obeliskians + send("gameSession", "setSessionInt", "obeliskiansOnMap", 0) + send("gameSession", "setSessionBool", "obeliskiansFirstContact", false) + send("gameSession", "setSessionInt", "obeliskianDeaths", 0) + +-- Selenians + send("gameSession", "setSessionInt", "seleniansOnMap", 0) + +-- bandits + send("gameSession", "setSessionInt", "banditRegionPool", 100) + send("gameSession", "setSessionInt", "banditsLastSpawnDay",0) + send("gameSession", "setSessionInt", "banditsOnMap", 0) + send("gameSession", "setSessionInt", "banditDeaths", 0) + + send("gameSession", "setSessionInt", "timesCapitulatedToBandits", 0) + send("gameSession", "setSessionBool", "banditTruceEventFired", false) + + send("gameSession", "setSessionBool", "banditPlunderDone", false) + send("gameSession", "setSessionBool", "banditPlunderDenied", false) + send("gameSession", "setSessionInt", "plunderAcceptanceDay", 0) + + -- new bandit control variables. DGB to clean up everything above. + -- Bandits will start at fairly hostile. + send("gameSession", "setSessionBool", "BanditsHostile", true) + send("gameSession", "setSessionBool", "BanditsNeutral", false) + send("gameSession", "setSessionBool", "BanditsFriendly", false) + send("gameSession", "setSessionInt", "BanditsRelations", -50) + send("gameSession", "setSessionInt", "BanditsNeutralHostile", -33) + send("gameSession", "setSessionInt", "BanditsNeutralFriendly", 33) + send("gameSession", "setSessionInt", "BanditsRelationsMin", -100) + send("gameSession", "setSessionInt", "BanditsRelationsMax", 100) + + send("rendCommandManager","SetFactionPolicyString", "Bandits", "Hostile") + + + send("gameSession","setSessionInt","BanditsLastSpawnDay", 0) + send("gameSession","setSessionInt","BanditsLastPlunderDay", 0) + send("gameSession","setSessionBool","BanditsFirstContact", false) + send("gameSession", "setSessionBool", "BanditsForcedHostility", false) + + -- burial. + send("gameSession","setSessionBool","BanditsBuryCorpses",false) + send("gameSession","setSessionBool","BanditsDumpCorpses",false) + send("gameSession","setSessionBool","BanditsBuryCorpsesPolicySet",false) + send("gameSession","setSessionInt","BanditsCorpsePolicyDay",0) + + -- for testing + send("gameSession", "setSessionBool", "testingPlaceholder", false) + + +send("gameSession","setSessionInt","steamKnightsActive",0) + +-- random horrors + +send("gameSession", "setSessionInt", "spectreLastReportDay", 0) +send("gameSession", "setSessionInt", "lastPopulationEventDay", -1) + +--event arc stuff +send("gameSession", "setSessionBool", "trackClearables", false) + +-- LC/MC/HC population counts are initialized in the loadout scripts because those are executed first & contain the pop spawn scripts. +-- The session ints, if you're here looking for them, are named lowerClassPopulation, middleClassPopulation. +send("gameSession", "setSessionInt", "LcPopulationCap", 112) +send("gameSession", "setSessionInt", "McPopulationCap", 38) +--send("gameSession", "setSessionInt", "LcPopulationAllowed", 2) these are done in loadout now +--send("gameSession", "setSessionInt", "McPopulationAllowed", 7) +--send("gameSession", "setSessionInt", "totalPopulationAllowed", 7) +send("gameSession", "setSessionBool", "immigrationStatus", true) +send("gameSession", "setSessionBool", "mcImmigrationStatus", true) +send("gameSession", "setSessionBool", "crisisStatus", false) +send("gameSession", "setSessionInt", "immigrationTimes", 0) --this is for the new immigration sliding timer + +send("gameSession", "setSessionInt", "tempCharacterPopulation", 0) +send("gameSession", "setSessionInt", "permCitizensDead", 0) +send("gameSession", "setSessionInt", "tempCitizensDead", 0) +send("gameSession", "setSessionInt", "deadOverseers", 0) +send("gameSession", "setSessionInt", "replacedOverseers", 0) + +send("gameSession", "setSessionInt", "militaryCount", 0) -- how many soldiers are in the colony? + + +-- cult vars -- probably deprecated well before 52B +send("gameSession", "setSessionInt", "cultPower", 0) +send("gameSession", "setSessionInt", "cultEvents", 0) +send("gameSession", "setSessionBool", "cultShrineDecisionMade", false) +send("gameSession", "setSessionBool", "cultShrineDecisionInProgress", false) +send("gameSession", "setSessionBool", "cultShrineDecisionWaffle", false) +send("gameSession", "setSessionBool", "tolerateCultShrines", false) +send("gameSession", "setSessionBool", "persecuteCultShrines", false) +send("gameSession", "setSessionInt", "numberOfCultShrines", 0) +send("gameSession", "setSessionInt", "lastMinistryCultInvestigation", 0) +send("gameSession", "setSessionBool", "creepyCultEventSeen", false) + +send("gameSession", "setSessionInt", "starvingCount", 0) +send("gameSession", "setSessionBool", "starvationBailout", false) + +--[[send("gameSession", "setSessionInt", "dodoCount", 0) +send("gameSession", "setSessionBool", "dodoExtinction", false) +send("gameSession", "setSessionInt", "aurochsCount", 0) +send("gameSession", "setSessionBool", "aurochsExtinction", false)--]] + + +-- tutorial + --[[ old tutorial stuff + send("gameSession", "setSessionBool", "tutorialCurrentlyActive", false) + send("gameSession", "setSessionBool", "enableContextualTutorials", false) + send("gameSession", "setSessionBool", "farmTutorialDone", false) + send("gameSession", "setSessionBool", "jobFilterTutorialDone", false) + send("gameSession", "setSessionBool", "standingorderTutorialDone", false) + send("gameSession", "setSessionBool", "moduleTutorialDone", false) + send("gameSession", "setSessionBool", "stockpileTutorialDone", false) + send("gameSession", "setSessionBool", "refiningTutorialDone", false) + send("gameSession", "setSessionBool", "tutorialCultsDone", false) + send("gameSession", "setSessionBool", "workshopTutorialDone", false) + send("gameSession", "setSessionBool", "qualityTutorialDone", false) + send("gameSession", "setSessionBool", "starterEventFired", false) + ]] + send("gameSession", "setSessionInt", "jumpToTutorial", 0) + + send("gameSession", "setSessionBool", "caseTutorialActive", false) + send("gameSession", "setSessionBool", "bedTutorialDone", false) + + send("gameSession", "setSessionBool", "barracksWarned1", false) + send("gameSession", "setSessionBool", "barracksWarned2", false) + send("gameSession", "setSessionBool", "townhallPromptWarned", false) + +-- other events +send("gameSession", "setSessionBool", "30charEventOver", false) +send("gameSession", "setSessionBool", "50charEventOver", false) +send("gameSession", "setSessionBool", "70charEventOver", false) +send("gameSession", "setSessionBool", "100charEventOver", false) +send("gameSession", "setSessionBool", "ncoReplacementEvent", false) +send("gameSession", "setSessionInt", "vicarCount", 0) +send("gameSession", "setSessionBool", "vicarReplacementEvent", false) +send("gameSession", "setSessionBool", "chapelBuilt", false) +send("gameSession", "setSessionBool", "triggeredChapel", false) +send("gameSession", "setSessionBool", "macroscopeBuilt", false) +send("gameSession", "setSessionBool", "Immigration_MC_FirstTime", false) +send("gameSession", "setSessionBool", "MC_Bailout_Done", false) +send("gameSession", "setSessionBool", "noBedsWarningDone", false) +send("gameSession", "setSessionBool", "blockWeatherMemories", false) +--send("gameSession", "setSessionBool", "Immigration_MC_GetNCO", false) + +-- ECONOMY +send("gameSession", "setSessionInt", "workshopsBuilt", 0) +send("gameSession", "setSessionInt", "barracksBuilt", 0) +send("gameSession", "setSessionInt", "townHallsBuilt", 0) +send("gameSession", "setSessionInt", "tier0produced", 0) +send("gameSession", "setSessionInt", "tier1produced", 0) +send("gameSession", "setSessionInt", "tier2produced", 0) +send("gameSession", "setSessionInt", "tier3produced", 0) +send("gameSession", "setSessionInt", "tier4produced", 0) +send("gameSession", "setSessionInt", "tier5produced", 0) +send("gameSession", "setSessionInt", "tier6produced", 0) +send("gameSession", "setSessionInt", "tier7produced", 0) +send("gameSession", "setSessionInt", "nextEconomyGoal", 1) +send("gameSession", "setSessionInt", "foodTier0produced", 0) +send("gameSession", "setSessionInt", "foodTier1produced", 0) +send("gameSession", "setSessionInt", "UCHousesProduced", 0) + + +--ACHIEVEMENT STORAGE + + --Buildings the player can build: + send("gameSession","setSessionBool","builtTraining Academy", "false") + send("gameSession","setSessionBool","builtBarracks", "false") + send("gameSession","setSessionBool","builtTrade Office", "false") + send("gameSession","setSessionBool","builtForeign Office", "false") + send("gameSession","setSessionBool","builtNaturalist's Office", "false") + send("gameSession","setSessionBool","builtLaboratory", "false") + send("gameSession","setSessionBool","builtChemical Works", "false") + send("gameSession","setSessionBool","builtKitchen", "false") + send("gameSession","setSessionBool","builtPublic House", "false") + send("gameSession","setSessionBool","builtUpper Class House", "false") + send("gameSession","setSessionBool","builtMiddle Class House", "false") + send("gameSession","setSessionBool","builtLower Class House", "false") + send("gameSession","setSessionBool","builtMine", "false") + send("gameSession","setSessionBool","builtCeramics Workshop", "false") + send("gameSession","setSessionBool","builtMetalworks", "false") + send("gameSession","setSessionBool","builtCarpentry Workshop", "false") + + send("gameSession","setSessionInt","foodFarmCount", 0) + + + +function spawnGameobject( x, y, objectType, objectTable ) + + if x > x_max - 20 then x = x_max - 20 end + if x < 20 then x = 20 end + + if y > y_max - 20 then y = y_max - 20 end + if y < 20 then y = 20 end + + local createResults = query("scriptManager", + "scriptCreateGameObjectRequest", + objectType, + objectTable ) + + local handle = createResults[1] + + send(handle, + "GameObjectPlace", + x, + y ) + + --local radius = 2 + --if handle ~= nil then + + -- local added = false + --[[while not added do + + local new_location = gameGridPosition:new() + new_location.x = x + rand(-radius, radius) + new_location.y = y + rand(-radius, radius) + + printl("DAVID", "trying: " .. tostring(new_location.x) .. " / " .. tostring(new_location.y) ) + local gSD_results = query("gameSpatialDictionary", + "gridCanAddObjectTo", + handle, + new_location ) + + local iswater = query( "gameSpatialDictionary", + "gridHasSpatialTag", + new_location, + "water" )[1] + + if gSD_results[1] then + if not iswater then + send( handle, + "GameObjectPlace", + new_location.x, + new_location.y ) + + added = true + end + end + radius = radius + 1 + end]] + --end + + return handle +end + +local startX = query("gameSession", "getSessionInt", "startX")[1] +local startY = query("gameSession", "getSessionInt", "startY")[1] +local newSpawnPoint = gameGridPosition:new() + +newSpawnPoint.x = startX +newSpawnPoint.y = startY + +send("gameSpatialDictionary", "gridSetPlayerSpawnPoint", newSpawnPoint, 10 ) + +-- artifacts +spawnGameobject( rand(32, x_max - 16), + rand(32,y_max - 16), + "clearable", + { legacyString="A Mundane Pile Of Dirt" } ) + +spawnGameobject( rand(32,x_max - 16), + rand(32,y_max - 16), + "clearable", + { legacyString="A Mundane Pile Of Dirt" } ) + +-- Obeliskians! -- clean up these positions. +if query("gameSession","getSessionBool","obeliskians")[1] == true then + spawnGameobject( rand(16, math.floor(x_max *0.4) - 8), + rand(16,y_max - 16), + "objectcluster", + { legacyString="Obeliskian Cluster" } ) + + spawnGameobject( rand(16,x_max - 16), + rand(16, math.floor(y_max *0.4) - 8), + "objectcluster", + { legacyString="Obeliskian Cluster" } ) + + if query("gameSession","getSessionBool","more_obeliskians")[1] == true then + spawnGameobject( rand(16, math.floor(x_max *0.4) - 8), + rand(16,y_max - 16), + "objectcluster", + { legacyString="Obeliskian Cluster" } ) + + spawnGameobject( rand(16,x_max - 16), + rand(16, math.floor(y_max *0.4) - 8), + "objectcluster", + { legacyString="Obeliskian Cluster" } ) + end +end + +-- set up event directors & event director points +send("gameSession", "setSessionInt", "arcPointsPoolEldritch", 0) +send("gameSession", "setSessionInt", "arcPointsPoolMundane", 0) + +--send("gameSession", "setSessionInt", "arcPointsGainPerDayEldritch", EntityDB.WorldStats.arcPointDripDefaultEldritch ) +--send("gameSession", "setSessionInt", "arcPointsGainPerDayMundane", EntityDB.WorldStats.arcPointDripDefaultMundane ) + +local eldritch_director = query("scriptManager", + "scriptCreateGameObjectRequest", + "event_director", + { name = "eldritch" } )[1] + +local mundane_director = query("scriptManager", + "scriptCreateGameObjectRequest", + "event_director", + { name = "mundane" } )[1] + +local other_director = query("scriptManager", + "scriptCreateGameObjectRequest", + "event_director", + { name = "other" } )[1] + +-- clay & stone to be nice +spawnGameobject( startX + rand(-24,24), startY + rand(-20,20), "objectcluster", { legacyString="Clay Nodes" } ) +spawnGameobject( startX + rand(-28,28), startY + rand(-28,28), "objectcluster", { legacyString="Clay Nodes" } ) +spawnGameobject( startX + rand(-36,36), startY + rand(-36,36), "objectcluster", { legacyString="Clay Nodes" } ) + +spawnGameobject( startX + rand(-20,20), startY + rand(-20,20), "objectcluster", { legacyString="Stone Boulders" } ) +spawnGameobject( startX + rand(-28,28), startY + rand(-28,28), "objectcluster", { legacyString="Stone Boulders" } ) + +send("gameSpatialDictionary", "gridExploreFogOfWar", startX, startY, 45) + +-- set up airdrop controller +local result = query("gameObjectManager", "gameObjectCollectionRequest", "airdropMasts") +local collection = result[1] +collection = {} + +-- set up Steam Knight collection +local sk_collection = query("gameObjectManager", "gameObjectCollectionRequest", "steamKnights")[1] +sk_collection = {} + +local handle2 = query( "scriptManager", + "scriptCreateGameObjectRequest", + "event_director", + {name="tutorial"} )[1] + +send(handle2,"startNewEventArc","Tutorial") + +send("gameSession","setSessionBool","horror_policy_study", false) +send("gameSession","setSessionBool","horror_policy_harvest", false) +send("gameSession","setSessionBool","horror_policy_dump", true) + +printl("events", "dominantFaction = " .. query("gameSession","getSessionString", "dominantFaction")[1] ) diff --git a/textures/nature/coniferColdDif.tga b/textures/nature/coniferColdDif.tga new file mode 100644 index 0000000..4b671d3 Binary files /dev/null and b/textures/nature/coniferColdDif.tga differ diff --git a/textures/nature/coniferLargeColdDif.tga b/textures/nature/coniferLargeColdDif.tga new file mode 100644 index 0000000..061c170 Binary files /dev/null and b/textures/nature/coniferLargeColdDif.tga differ diff --git a/textures/nature/coniferSmallColdDif.tga b/textures/nature/coniferSmallColdDif.tga new file mode 100644 index 0000000..27171f4 Binary files /dev/null and b/textures/nature/coniferSmallColdDif.tga differ diff --git a/textures/nature/trees/pineTree00ColdDif.tga b/textures/nature/trees/pineTree00ColdDif.tga new file mode 100644 index 0000000..4eecf3d Binary files /dev/null and b/textures/nature/trees/pineTree00ColdDif.tga differ diff --git a/textures/terrain/swampyDirtSide01.tga b/textures/terrain/swampyDirtSide01.tga new file mode 100644 index 0000000..d5eca15 Binary files /dev/null and b/textures/terrain/swampyDirtSide01.tga differ diff --git a/ui/gameplayMainUI.xml b/ui/gameplayMainUI.xml index b4a14a2..6142d5d 100644 --- a/ui/gameplayMainUI.xml +++ b/ui/gameplayMainUI.xml @@ -414,6 +414,7 @@_ _____ _ _ _ __ _____ | | |_ _| \ | | |/ // ____| | | | | | \| | ' /| (___ @@ -266,13 +424,13 @@Official Thread: https://community.gaslampgames.com/threads/community-patch.20992/ -
This is the official thread created on the Gaslamp Games forum. There is no telling how long they will stay online, so it's probably better to stay in touch via Steam.GitHub: https://github.com/SickBoySB/cecommpatch/tree/v1
+GitHub: https://github.com/SickBoySB/cecommpatch/
Feel free to fork the code, contribute your own changes, make your own patch, etc.Current Issues/Features: https://github.com/SickBoySB/cecommpatch/issues -
The current list of issues, features, etc. being tracked and worked on. This is not necessarily a comprehensive list, but it's a pretty good indication of what's on the to-do list.+_____ _ _ _ _ _____ ______ _ ____ _____ / ____| | | | /\ | \ | |/ ____| ____| | / __ \ / ____| | | | |__| | / \ | \| | | __| |__ | | | | | | | __ @@ -281,9 +439,69 @@ \_____|_| |_/_/ \_\_| \_|\_____|______|______\____/ \_____|CHANGELOG+ __ ___ ___ + / \ / _ \ / __) + ( 0 )_ \__ )_ (___ \ 0.9.5 (NEW SAVE RECOMMENDED) + \__/(_)(___/(_)(____/ +++
+- FIX: Invalid default animal/herd spawns - Cold Biome
+- FIX: Invalid default animal/herd spawns - Temperate Biome
+- FIX: Invalid default animal/herd/obeliskian spawns - Desert Biome
+- FIX: Invalid default animal/herd/deathwurm spawns - Tropical Biome
+- FIX: Minimap has bright white dots around the edges
+- FIX: Large animal burrow has dark square around it
+- FIX: Small animal burrow has dark square around it
+- FIX: Swamp biomes use a missing texture
+- FIX: Geometer Observators cause crash if they die when on fire
+- FIX: Vicars don't perform last rites on buried bodies
+- FIX: Corpses with last rites can still create a spectre
+- FIX: Flattening terrain near the edge of the map will crash the game
+- FIX: Blunderbuss area of effect attacks can cause meat 'splosions
+- FIX: Steam Knight minum gun area of effect attacks can cause meat 'slosions
+- FIX: Airship Masts don't use the correct materials in construction
+- FIX: Airship Masts don't spawn dust cloud on destruction properly
+- FIX: Loud, looping, metallic banging sounds occur in the middle of the map
+- FIX: Geometer Observators use an invalid animation when leaving the map
+- FIX: Geometer Observators cause script errors after exiting the map
+- FIX: Geometers cause script errors after exiting the map
+- FIX: Spectres loop walking animation when idling
+- FIX: Bamboo Agriculture lab research has a duplicate in tropical biomes
+- FIX: Practical Table and Chair Set has a typo
+- CHANGE: Unburied colonist corpses have a higher chance to spawn a spectre (5% -> 10%)
+- CHANGE: Chance for colonist corpses/graves without last rites spawning a spectre increased by 25%
+- CHANGE: Colonists can drink tea in class-appropriate houses with chairs (lower priority than pub drinking)
+- CHANGE: Drinking tea at home creates a new, slightly depressing memory
+- CHANGE: Minimap given fancy border/graphic
+- CHANGE: Flattening terrain near the edge of the map will now be prevented if it's within 5-6 spots (hacky crashfix)
+- CHANGE: Steam Knights despawn after their death animation and final explosion
+- CHANGE: Airship Mast cost changed
+- CHANGE: Airship Mast construction interruption made less sensitive
+- CHANGE: Airship Mast health increased from 20 -> 40
+- CHANGE: Airship Mast alert regarding missing materials removed
+- CHANGE: Airship Mast 'ghost' made less easy to destroy
+- CHANGE: Airship Mast destruction leaves more appropriate debris
+- CHANGE: Conifer trees in snowy areas given a healthy dusting of snow (all variants)
+- CHANGE: Pine trees in snowy areas given a healthy dusting of snow (all variants)
+- CHANGE: Fishepople bodies don't disappear automatically anymore
+- CHANGE: Fishpeople will now retrieve and "handle" their fallen friends
+- CHANGE: Spectres now have a few animations to pick from when idling
+- CHANGE: Simple Chair added to Lower Class House module menu
+- CHANGE: Simple Chair and Table Set added to Lower Class House module menu
+- CHANGE: Simple Chair and Table Set able to be built in Lower Class House
+- CHANGE: Chairs now impact quality (-1) - Simple Table and Chair Set
+- CHANGE: Chairs now impact quality (-1) - Practical Table and Chair Set
+- CHANGE: Chairs now impact quality (-1) - Ornate Table and Chair Set
+- CHANGE: Chairs now impact quality (-1) - Simple Chair
+- CHANGE: Chairs now impact quality (-1) - Practical Chair
+- CHANGE: Chairs now impact quality (-1) - Ornate Chair
+- TOOL: Readme now has a recipe searching tool
+- TOOL: Readme now has a lab research tree browsing tool
+__ ___ ___ / \ / _ \ / _ \ - ( 0 )_ \__ )_(__ ( 0.9.4 (NEW SAVE RECOMMNEDED) + ( 0 )_ \__ )_(__ ( 0.9.4 (NEW SAVE RECOMMENDED) \__/(_)(___/(_) (__/@@ -359,8 +577,6 @@
- -- CLEANUP: Fancier readme... just because
- CLEANUP: thoughtIcons00 has an inconsistent grey version
__ ___ ____ / \ / _ \ ( __ \ @@ -543,7 +759,6 @@CHANGE: TAG - Farming added to Bamboo CHANGE: TAG - Icon for "Used in Workshops" changed to general workshop icon -__ ____ __ / \ (__ ) / \ @@ -656,6 +871,57 @@CHANGE: EVENT - Some fishpeople spawning events have been given the chance to remain mysterious CLEANUP: Removed redundant "Make Steam Oven" job code CLEANUP: Removed redundant "Make Maize Chowder" job code + +++ _______ ____ ____ _ _____ + |__ __/ __ \ / __ \| | / ____| + | | | | | | | | | | | (___ + | | | | | | | | | | \___ \ + | | | |__| | |__| | |____ ____) | + |_| \____/ \____/|______|_____/ +TOOLS+++ ============================================== +-| Item Recipe Search |- + ============================================== +++ + + ++ +
+ (clear search) +++++++ ============================================= +-| Lab Research Tree |- + ============================================= +++ ++ + + +++ _____ _____ ______ _____ _____ _______ _____ + / ____| __ \| ____| __ \_ _|__ __/ ____| + | | | |__) | |__ | | | || | | | | (___ + | | | _ /| __| | | | || | | | \___ \ + | |____| | \ \| |____| |__| || |_ | | ____) | + \_____|_| \_\______|_____/_____| |_| |_____/ +CREDITS+
- SickBoy - Project Lead / Developer / Designer
+- Teutomatos - Playtester
@@ -676,5 +942,3734 @@+ diff --git a/ui/launcher/launcher_bg.png b/ui/launcher/launcher_bg.png index c84b8b5..6f005eb 100644 Binary files a/ui/launcher/launcher_bg.png and b/ui/launcher/launcher_bg.png differ diff --git a/ui/newUI01.png b/ui/newUI01.png new file mode 100644 index 0000000..a176288 Binary files /dev/null and b/ui/newUI01.png differ diff --git a/ui/newUI01.xml b/ui/newUI01.xml new file mode 100644 index 0000000..70699a6 --- /dev/null +++ b/ui/newUI01.xml @@ -0,0 +1,5 @@ ++ + ++