recursal/Fanatic-Fandom huggingface dataset:
Armory

Enables the Crafting of Weapons, Consumables, and Upgrades for Mr.Riggs.

Automatically creates Ammunition for all of Mr.Rigg's weapons, assuming the prerequisite Research has been completed for the ammunition type.

The Armory consumes Energy, Carbonium, and Ironium in order to create ammunition.

## Statistics

**Level 1**

Ironium: 200

High Caliber - Mech: 2.00/s
Explosive - Mech: 0.33/s
Liquid - Mech: 16.67/s
Energy Cell - Mech: 1.33/s
Mecha suit consumables: +1/s

Carbonium:
-1/s
Ironium:
-1/s
105

**Level 2**

Ironium: 300

High Caliber - Mech: 2.20/s
Explosive - Mech: 0.37/s
Liquid - Mech: 18.33/s
Energy Cell - Mech: 1.47/s
Mecha suit consumables: +1.1/s

Carbonium:
-1.2/s
Ironium:
-1.2/s
105

**Level 3**

Ironium: 450

High Caliber - Mech: 2.40/s
Explosive - Mech: 0.4/s
Liquid - Mech: 20.00/s
Energy Cell - Mech: 1.60/s
Mecha suit consumables: +1.2/s

Carbonium:
-1.5/s
Ironium:
-1.5/s
105

**Level 4**

Ironium: 675

High Caliber - Mech: 2.60/s
Explosive - Mech: 0.43/s
Liquid - Mech: 21.67/s
Energy Cell - Mech: 1.73/s
Mecha suit consumables: +1.3/s

Carbonium:
-1.7/s
Ironium:
-1.7/s
105

**Level 5**

Ironium: 1000

High Caliber - Mech: 2.80/s
Explosive - Mech: 0.47/s
Liquid - Mech: 23.33/s
Energy Cell - Mech: 1.87/s
Mecha suit consumables: +1.4/s

Carbonium:
-2/s
Ironium:
-2/s
105

## Features

* Allows crafting of new weapons and items
* Automatically produces and instantly transports ammunition and supplies to the Mecha-Suit
* Refill the ammunition every 15sec. For example after Mr.Riggs fires, after 15sec he will receive a "packaged" ammo pack with 80 Low Caliber cells and 30 High Caliber cells with a lv 1 armory. Please note different types of ammunition are produced separately, and thus different ammo packages will not arrive at the exact same time depending on the when this type of ammo was used. But, no matter how many types of ammunition are being crafted in the armory (includes consumables like gravity mines), the upkeep is still the same. This also means that with any one type of those ammo&consumables being "not full", the armory will start working as if everything is "not full" and ask for the same amount of price.
* As the growth of ammunition production over armory level is just too low in comparsion to the growth of its upkeep, upgrading armories can be not cost efficient.
Minigun (Research)

Minigun is a Research in *The Riftbreaker.*

## Standard

*This weapon blueprint serves as a base for crafting a belt-driven, six-barrel minigun with significant firepower. It utilizes small-caliber ammo, making it relatively cheap in use, while the insanely high fire rate ensures relevance on the battlefield.*

 Small Caliber Weapons - Advanced

## Advanced

*An upgraded blueprint for Minigun construction. Minigun crafted from this blueprint has much greater properties than its predecessor and offers room for modifications.*

 Minigun - Standard
Small Caliber Weapons - Superior

## Superior

 Minigun - Advanced
Small Caliber Weapons - Extreme

## Extreme

 Minigun - Superior
Armory - Level 5
Events, Requests and RegisterHandler

## General Information

Most of the communication between systems and entities is done asynchronously via events. That's why events and requests were created.

An overview of events and requests can be found in the game reflection of the workspace editor.

## Requests

### **Information**

It is used when a system should do some job on behalf of an entity.

### **Example**

```
QueueEvent( "DamageRequest", target, 200.0, "physical", 1, 0 )

```
In that case, you are requesting some system to deal damage to an entity on your behalf.

## Events

### **Information**

It is a notification that something happened with an entity.

### **Example**

So after DamageSystem handled the DamageRequest sent earlier (see above) and dealt damage to that entity, it sends a notification in form of a DamageEvent.

To use an event, the entity needs to be able to "listen" for events, for that purpose the RegisterHandler is used.

### Functions

For event functions, see: Event functions

## RegisterHandler

### **Information**

Allows entities to "listen" for events / requests happening in the same or other files all around.

### **Example 1**

```
self:RegisterHandler( event\_sink, "DamageRequest", ... )
self:RegisterHandler( event\_sink, "DamageEvent", ... )

```

### **Explanation 1**

Your function here will be called for all damage requests / events sent for all entities, it uses the "event\_sink"

event\_sink: Your function will be called on any DamageRequest / DamageEvents sent to any entity

### **Example 2**

```
self:RegisterHandler( self.entity, "DamageRequest", ... )
self:RegisterHandler( self.entity, "DamageEvent", ... )

```

### **Explanation 2**

Uses this function only when someone request / notifies damage on this entity and ignore everything else

### **Example 3**

```
self:RegisterHandler( spawned\_entity, "DamageRequest", ... )
self:RegisterHandler( spawned\_entity, "DamageEvent", ... )

```

### **Explanation 3**

Uses this function only when someone request / notifies damage on entity "spawned\_entity" and ignore everything else. Can add any known entity.

## UnregisterHandler

### **Information**

Stops "listening" for events / requests happening to entities

**Example**

```
self:UnregisterHandler( event\_sink, "DamageRequest", ... )
self:UnregisterHandler( event\_sink, "DamageEvent", ... )

```
Desert Biome

In game name: Radioactive Desert

## Starting equipment (Survival)

* Hammer
* SMG
* Flamethrower

## Style

Dry, wide open map. Barren plains and weathered rocks.

## Biome Features

* Max. 1 liquid pool (Oasis)
* Low plant biomass
* No geothermal vents
* Radioactive crystals that damage the player
* Players need to build "Extra Stable Floor" on the quicksand ground (indicated with a symbol) before building any buildings, otherwise the buildings take constant damage.
* Renewable energy generation (outside of weather events):
	+ Solar: 200%
	+ Wind: 25%
	+ Geothermal: 0%
Ferdonite Handling (Research)

Ferdonite Handling is a Research in *The Riftbreaker.*

## Level 1

*The properties of Ferdonite suggest that it could be used to improve some of the Riftbreaker equipment and technologies. This research will develop Ferdonite handling methods and discover potential uses for it.*

 Alien Research - Level 1
Cryogenic Mine - Standard
Mech Pistons and Engine - Standard
Gravity Grenade - Standard
Swarm Missiles - Standard
Bomogan

## Story

Looking like a failed genetic experiment to cross a lizard with a firefly, the Bomogan is not something you want to see while exploring Galatea 37. The massive jaws can snap Mr. Riggs in half if you are not careful and allow yourself to get too close. Thick bone plates on the front part of its body also protect the creature from all kinds of environmental hazards. Luckily, the creature is really massive and its small legs are not well-suited for chasing prey, so it is not difficult to outrun this behemoth.

Do not think you are safe, though. In order to hunt, fight, and survive, Bomogans have developed a particularly nasty ranged attack mechanism. A special set of organs on their backs allows these creatures to create sacks filled with easily combustible fluid. The sack is launched like an artillery shell and explodes upon impact. It is dangerous enough in the wild, but the real problems start when you make Bomogans angry enough to seek out your base and attack it. The explosive sacks can easily bypass your defenses and hit critical targets inside the base. Invest in anti-air defense to counter the projectiles or kill the creatures on sight.

Bomogans like hotter regions of the planet, so you will be likely to have some upgrades by the time you meet them. You won’t be completely defenseless, but in order to effectively deal with these creatures, you will have to gather samples and conduct research to find their weak points. Only then will you be able to develop the right upgrades for your weapons to gain a significant advantage in a fight. We hope you are up for the challenge!

## Statistics:

Normal
Aggressive: 5
Aggressive acceleration: 10
Regeneration: 0
Damage radius: 0
Type: Physical
Player
Energy
Tower
Acid: 75%
 Elemental
Damage radius: 6
Type: Acid
Range: 20-42

Alpha
Aggressive: 5
Aggressive acceleration: 10
Regeneration: 0
Damage radius: 0
Type: Physical
Player
Energy
Tower
Acid: 75%
 Elemental
Damage radius: 6
Type: Acid
Range: 20-42

Ultra
Aggressive: 5
Aggressive acceleration: 10
Regeneration: 0
Damage radius: 0
Type: Physical
Player
Energy
Tower
Acid: 75%
 Elemental
Damage radius: 6
Type: Acid
Range: 20-42

## Features

* Ranged Artillery attack
* Explode on death
Mod service: CameraService

## Available commands:

```
void                SetFollowTarget( Entity::Id entity, Exor::Entity::Id target );
Entity::Id          GetFollowTarget( Entity::Id camera );
void                SetTargetDistance( Entity::Id camera, float distance );
float               GetTargetDistance( Entity::Id camera ) const;
Entity::Id          GetLeadingPlayerCamera();
Entity::Id          GetActiveCamera();

```
Mod example: Change weapon explosion effect

## What this mod does

This mod changes the effect that happens when the projectile of a minigun hits any kind of lifeless object.

## The files we change

The entity file of the minigun: " \entities\items\weapons\minigun.ent "

## How to use the files

Copy the minigun.ent file out of the game-zip called "00\_win\_data.zip", make the code changes, and put it back in again.

## The code

previous line #'s were incorrect, new ones readded on 5/6/22

From line 327 to line 336 the following code is present:

```
ProjectileAmmoComponent
	{
		distribution 			"dissipation"
		dissipation_count 		"2"

		on_enemy_hit_effect 	"effects/weapons_bullet/bullet_hit_enemy_flesh_small"
		on_world_hit_effect 	"effects/weapons_bullet/bullet_hit_world_rocks_small"

		collision_2d 			"ground_unit|hitbox|destructible"
	}

```

Here we have to change the line 332, to any kind of effect we want to use, for example the effect of a nuclear explosion:

```
ProjectileAmmoComponent
	{
		distribution 			"dissipation"
		dissipation_count 		"2"

		on_enemy_hit_effect 	"effects/weapons_bullet/bullet_hit_enemy_flesh_small"
		on_world_hit_effect 	"effects/weapons_explosive/explosion_atomic_big"                  -- We changed this line

		collision_2d 			"ground_unit|hitbox|destructible"
	}

```

since it may be older file for those above, this is how it is properly worded in the Minigun.ent file looks like before the edit, as of 5/6/22

```
ProjectileAmmoComponent
	{
		distribution 			"dissipation"

		on_enemy_hit_effect 	"effects/weapons_bullet/bullet_hit_enemy_flesh_small"
		on_world_hit_effect 	"effects/weapons_bullet/bullet_hit_world_rocks_small"
		on_resisted_hit_effect 	"effects/weapons_generic/projectile_hit_resisted"
		//friendly_fire			"damage"
		collision_2d 			"ground_unit|hitbox|destructible"
	}

```

## Explanation

Each weapon has a projectile it shoots and which acts within the game world of The Riftbreaker.

As we know this, we have to look for this projectile as it is the entity which touches the world and creates the effect after all.

In most cases the projectile blueprints are inside the weapon entities which use them, that's why we open up the minigun weapon entity.

**> Hint:** Other weapons could still refer to this projectile blueprint which would also change the effect for that other weapon

Inside the weapon enitity of the minigun we have to search for the entity blueprint of the projectile which in this case starts at line 327.

Here we search for the effect which happens when the projectile hits the world " on\_world\_hit\_effect ".

We can use any kind of effect we can find, the effects are available in the path: " \entities\effects "

**> Hint:** Even though the path in the code looks like a full path, it stops after " weapons\_explosive ". The last part " explosive\_atomic\_big " is actually **>inside<** the file of " weapons\_explosive " , found in the " \entities\effects " file
Gather Uranium Ore Samples

Gather Uranium Ore Samples is a Campaign Location in the Radioactive Desert.

This location features no attack waves and limited weather events.

# Fauna

## Aggresive

Gnerot Alpha

Kermon/Alpha/Ultra

Lesigian/Alpha/Ultra

Mushbit/Alpha/Ultra

Stregaros/Alpha/Ultra

Zorant/Alpha/Ultra

# Flora

Florium Viridis

Bulbus Pirum Viridis Furvus/Pursnipura

Bratus Crystallo Rosa

Bratus Zizania Viridis

Bratus Amentis Flavus

# Other

Vitreus Implexus Viridis

Vitreus Pura Viridis
Modding: Teams

Teams are entity properties that describe its affiliation. Teams are primarily used to identify hostility relationships between entities.

## Limitations

An entity can have only one team. For example, a canoprix spawned naturally has the "canoptrix" team, while a canoptrix spawned as part of a wave has the "wave\_enemy" team.

## Hostility Chart

The hostility comparison chart is located in startup/scripts/team/hostility.tr. You can open this file in Excel as it has a Comma-Separated Values (CSV) file format. A 1 denotes hostility between the row team and column team:

 enemy

## Common methods pertaining to teams:

EntityService:GetTeam(...)

EntityService:SetTeam(...)

EntityService:HasTeam(...)

EntityService:CompareTeam(...)

FindService:FindEntitiesByTeamInBox(...)
Mech Drones (Research)

Mech Drones is a Research in *The Riftbreaker.*

## Standard

*These modules can be installed in one of the Mecha-Suit upgrade slots. They contain instructions and programs that alter the Mecha-Suit's behavior and abilities. These modules all have unique properties and can be used interchangeably with each other.*

 Mech Armor - Standard

## Advanced

 Mech Drones - Standard
Mech Armor - Advanced

## Superior

 Mech Drones - Advanced
Mech Armor - Superior

## Extreme

 Mech Drones - Superior
Mech Armor - Extreme
Magma Biome

In game name: Volcanic Area

## Starting equipment (Survival)

* Sword
* Plasma Gun
* High Caliber Rifle

## Style

Dark, tight map. Extreme volcanic activity. Large crystals and metallic rocks.

## Biome Features

* Liquid magma pools which enable use of the Magma Powerplant
* Players need to build "Cryo Stations", or use the cold ground of the Cryo Plant (indicated with a symbol) before building anything, otherwise buildings take constant damage
* Players cannot build in the vicinity of levitating magnetic rocks - these can be destroyed using corrosive weapons / abilities
* This biome is very rich in ores - deposits are twice as large as in other biomes
* Renewable energy generation (outside of weather events):
	+ Solar: 50%
	+ Wind: 50%
	+ Geothermal: 200%
Mini Nuke Launcher (Research)

Mini Nuke Launcher is a Research in *The Riftbreaker.*

## Standard

*A portable launcher of rockets with a minor nuclear warhead. Requires a lot of explosive ammunition and has a significant cooldown period, but it's a blast. Literally.*

 Tanzanite Handling | 750 | Familiarity level 2: Bomogan | Nuclear Launcher - Standard

## Advanced

*What can be better than a mini-nuke? A slightly larger mini-nuke, and that's exactly what this blueprint offers.*

 Mini Nuke Launcher - Standard
Alien Research - Level 3

## Superior

 Mini Nuke Launcher - Advanced
Alien Research - Level 4

## Extreme

 Mini Nuke Launcher - Superior
Alien Research - Level 5
Bitrid

## Story

Bitrid is a large insect that spends most of its adult life gathering nectar in its large sack, where it also keeps its eggs. Bitrids are hermaphroditic - any other member of the species can help with fertilizing the eggs. Once the larvae hatch from the eggs inside the sack, they feed on nectar until they're ready to emerge and burst the sack, killing the parent in the process.

## Statistics

Acceleration: 24
Regeneration: 0
Mod service: AnimationService

## Available commands:

```
void        StartAnim( Entity::Id entity, const char * animation );
void        StartAnim( Entity::Id entity, const char * animation, bool isLooped );
void        StartAnim( Entity::Id entity, const char * animation, bool isLooped, float factor );
void        StartAnimAt( Entity::Id entity, const char * animation, bool isLooped, float time );
void        StartAnimAt( Entity::Id entity, const char * animation, bool isLooped, float time, float factor );
void        StopAnim( Entity::Id entity, const char * animation );
void        StopAnims( Entity::Id entity );
float       GetAnimDuration( Entity::Id entity, const char * animation );
bool        IsAnimActive( Entity::Id entity, const char * animation );
void        SetAnimLooped( Entity::Id entity, const char * animation, bool isLooped );
void        ResetPose(Entity entity);
void        AddAnim(Entity entity, const String & animName, float time, float weight );

```
Bioscanner

## Description

The Bioscanner is a tool that allows you to gain familiarity with flora and fauna native to Galatea 37. Gaining familiarity will unlock Bestiary entries for the appropriate creature, and familiarity with some species will unlock research nodes on the Alien Research branch of the Research Tree.

## How to use

PC = Press the middle mouse button.

Console = Press LB+RB

When the green beam appears, the player can scan entities that are highlighted in a green shimmer.

You need to scan objects until they are finished - any interruption in the process forces a restart of the scan.
Headquarters

The Headquarters is the most important building in the field base. It does not matter where you are going to travel - the Headquarters is designed to provide for the Riftbreaker’s basic needs regardless of the outside conditions. It is your responsibility to pack enough resources to build one as soon as you arrive through the Rift. Failure to do so will require you to immediately start searching for resources in the unknown, which may result in death. The facilities contained within the building produce food, recycle water, and harvest energy to sustain the Riftbreaker and their Mecha-suit. It is vital to remember that the suit is entangled with the Headquarters. The advantage to this solution is that the suit does not have to be anywhere near the base to collect supplies - it happens automatically over distance. It is also possible to perform a quick Rift jump to the HQ from almost anywhere

## Statistics

Level 1
 Carbonium: 200
Ironium: 200
Carbonium: 50
Ironium: 50
A.I.: 4
Palladium: 50
Titanium: 50
Cobalt: 50
Tower ammo liquid: 1
Tower ammo low caliber: 1
Tower ammo high caliber: 1
Heal radius: 8
Heal interval: 1/s

Level 2
 Carbonium: 500
Ironium: 500
Carbonium: 50
Ironium: 50
A.I.: 4
Palladium: 50
Titanium: 50
Cobalt: 50
Tower ammo liquid: 1
Tower ammo low caliber: 1
Tower ammo high caliber: 1
Heal radius: 8
Heal interval: 1/s

Level 3
 Carbonium: 1500
Ironium: 1500
Carbonium: 50
Ironium: 50
A.I.: 4
Palladium: 50
Titanium: 50
Cobalt: 50
Tower ammo liquid: 1
Tower ammo low caliber: 1
Tower ammo high caliber: 1
Heal radius: 8
Heal interval: 1/s

Level 4
 Carbonium: 3500
Ironium: 3500
Carbonium: 50
Ironium: 50
A.I.: 4
Palladium: 50
Titanium: 50
Cobalt: 50
Tower ammo liquid: 1
Tower ammo low caliber: 1
Tower ammo high caliber: 1
Heal radius: 8
Heal interval: 1/s

Level 5
 Carbonium: 10000
Ironium: 10000
Carbonium: 50
Ironium: 50
A.I.: 4
Palladium: 50
Titanium: 50
Cobalt: 50
Tower ammo liquid: 1
Tower ammo low caliber: 1
Tower ammo high caliber: 1
Heal radius: 8
Heal interval: 1/s

Level 6
 Carbonium: 15000
Ironium: 15000
Carbonium: 50
Ironium: 50
A.I.: 4
Palladium: 50
Titanium: 50
Cobalt: 50
Tower ammo liquid: 1
Tower ammo low caliber: 1
Tower ammo high caliber: 1
Heal radius: 8
Heal interval: 1/s

Level 7
 Carbonium: 25000
Ironium: 25000
Carbonium: 50
Ironium: 50
A.I.: 4
Palladium: 50
Titanium: 50
Cobalt: 50
Tower ammo liquid: 1
Tower ammo low caliber: 1
Tower ammo high caliber: 1
Heal radius: 8
Heal interval: 1/s

## Features

* Respawns Player on death
* Provides a portal for teleportation
* Heals the Player by a certain amount each second if in close range
Database

## Information

XML files can create a database which can be accessed by Lua files.

The database has to be created by declaring a typical key-value field.

## Database data types

 Int
 Float

Each entry for the same data type has to use the next number.

First string would be `database.Strings.StringData[0].key` the next string would be `database.Strings.StringData[1].key etc.`

## Example

```
<value id="database.Integers.IntData[0].key" value="instant" />
<value id="database.Floats.FloatData[0].key" value="speed" />
<value id="database.Integers.IntData[1].key" value="instant\_fast" />
<value id="database.Strings.StringData[0].key" value="tower\_bp"/>

```

## Lua

To access these fields in Lua, you would use the normal commands to access the data, example:

```
function my\_lua\_function:init()
    self.my\_variable\_1 = self.data:GetInt("instant")
    self.my\_variable\_2 = self.data:GetFloat("speed")
    self.my\_variable\_3 = self.data:GetInt("instant\_fast")
    self.my\_variable\_4 = self.data:GetString("tower\_bp")
end

```
The value in the brackets, like ("speed") is the value from the database key-value field above.
Multiplayer

The Riftbreaker will not feature multiplayer **until the game is released** - the development focus is on the single player content until then.

**After the game is released, the game will get multiplayer support.**

As the multiplayer is not in development just yet, do the developers themselves not know how the multiplayer mode will look like.

## Multiplayer Features

Following things are currently known (**Subject to change due to development !**)

* Co-op mode only, no PvP
* No anti-cheat planned as it's only Co-op
* Online multiplayer
Base Shielding (Research)

Base Shielding is a Research in *The Riftbreaker.*

## Level 1

*This technology makes use of supercharged plasma to form a protective shield over buildings. The shield is generated by Shield Generator buildings that cover all structures within their area of operation.*

 Fusion Energy - Level 1

## Level 2

*Increases the amount of damage the shield can absorb before going offline.*

 Shield Generator - Level 1
Headquarters - Level 6
Mod service: TornadoService

## Available commands:

```
void    SpawnTornado( const Exor::String &tornadoBp, const Exor::String &tornadoType, const Exor::String &spawnPlace, int count, int outsideRadiusDistance, float minLifeTime, float maxLifeTime );
void    SetEvadeMultiplier( float mul );
void    UpdateGravityHole( Exor::Entity gravityHole, float gravityRadius, float gravityDestroyRadius, float gravityDebrisPower );

```
Mod service: ObjectiveService

## Available commands:

```
ObjectiveId                     CreateObjective( const Exor::String &bpName, Exor::Database database, bool global, String missionId );
ObjectiveId                     GetObjectiveIdFromObjectiveUniqueName( const Exor::String & objectiveUniqueName );
Exor::IdString 			GetObjectiveUniqueNameFromObjectiveId( const ObjectiveId objectiveId );
Database *                      GetObjectiveDatabase( ObjectiveId objectiveId );
void                            RemoveObjectiveByObjectiveUniqueName( const Exor::String &objectiveUniqueName, bool withChildren );
void                            RemoveObjectiveByObjectiveId( const ObjectiveId objectiveId, bool withChildren );
void                            FinishObjectiveByObjectiveUniqueName( const Exor::String &objectiveUniqueName, ObjectiveStatus status );
void                            FinishObjectiveByObjectiveId( const ObjectiveId objectiveId, ObjectiveStatus status );
void                            SetObjectiveStatusByObjectiveId( const ObjectiveId objectiveId, ObjectiveStatus status );
ObjectiveStatus                 GetObjectiveStatus( ObjectiveId objectiveId );

```
Communication Hub

Allows communicating with earth via quantum entanglement and downloading schematics for buildings and upgrades.

Transmission is instant regardless of distance but has very low bandwith.

Up to 5 Communication Hubs can be active at a time. Access to more Communication Hub Slots and further Upgrades is aquired in tandem with the Headquarters Research and Upgrades.

The Communication Hub is a very Resource and Energy intensive structure, Make sure to have adequate infrastructure to support your Communication Hubs along with your other structures.

## Statistics

Level 1
Ironium: 600

Level 2
Ironium: 1200

Level 3
Ironium: 2400

Level 4
Ironium: 4800

Level 5
Ironium: 9600

## Features

* Unlocks the "Base and Buildings" and "Weapons and Equipment" Research Trees for Development.
* The Download Speed increases for each Communication Hub constructed and ugpraded.
Bradron

## Story

This creature seems to be a result of a biomechanical experiment. Its natural organs have been cybernetically enhanced, allowing it to project a powerful laser beam from its prominent eye. However, their ability to hover above the ground seems to be of natural origin, though it is currently unexplained.

Could be related to the Brabit species.

## Statistics:

Normal
Aggressive: 12
Aggressive acceleration: 24
Regeneration: 0
Damage radius: 10
Type: Area
Player
Energy
Tower
Energy: 50%
 Elemental
Damage: 50
Duration: 2s
Type: energy

Alpha
Aggressive: 12
Aggressive acceleration: 24
Regeneration: 0
Damage radius: 10
Type: Area
Player
Energy
Tower
Energy: 50%
 Elemental
Damage: 75
Duration: 2s
Type: energy

Ultra
Aggressive: 12
Aggressive acceleration: 24
Regeneration: 0
Damage radius: 10
Type: Area
Player
Energy
Tower
Energy: 50%
 Elemental
Damage: 100
Duration: 2s
Type: energy
Metal Biome

In game name: Metal Valley

The Metal Valley biome was the first biome added after the game's release - To unlock the biome in the campaign, players need the DLC: Metal Terror. (This biome is free to all players in Survival mode.)

This biome is a reference to one of Exor Studio's previous games: X-Morph Defense.

## Starting equipment (Survival)

* Sword
* Grenade Launcher
* Burst Rifle

## Style

Prevalent metallic appearance. Everything from the plants to the aliens has a metal sheen.

## Biome Features

* Large Morphium pools
* Renewable energy generation (outside of weather events):
	+ Solar: 75%
	+ Wind: 125%
	+ Geothermal: 100%
Nuclear Energy (Research)

Nuclear Energy is a Research in *The Riftbreaker.*

## Level 1

*This package contains blueprints necessary to set up Nuclear Power Plants in the Riftbreaker base. It utilizes fuel rods made from enriched uranium and requires supply of some form of liquid coolant. High energy output.*

 Uranium Handling
Headquarters - Level 4
Uranium Centrifuge - Level 1
Uranium (Resource)

## Level 2

*Redesigned blueprints for the Nuclear Power Plant. Increased size of the internal reactor gives housing to more fuel rods, which greatly improves the potential energy output.*

 Nuclear Energy - Level 1
Headquarters - Level 4
Uranium Centrifuge - Level 2

## Level 3

 Nuclear Energy - Level 2
Headquarters - Level 5
Uranium Centrifuge - Level 3
Citadel of Alamut

Perched high on a spectacular cliffside, this remote fortress is a perfect sanctuary for elite assassins.

## Placement prerequisites

Must be placed next to Mountain.

**Citadel of Alamut** is one of the Medieval Era Cultural Wonders and can be built through Shared Projects with multiple Cities participating in it.

## Standard Wonder Effects

* +20Stability
* +100Fame on completion.

## Unique Effects

* +1Detection on Main Plaza and Administrative Center
* -25% Stealth Units Industry cost
* On Stealth Units:
	+ +10Stealth
	+ +4Combat Strength bonus when Ambushing
* Eliminate revealed Stealth Units that remain on Empire Territories
	+ Units receive Marked status

## Narrator

Building the Wonder
“'**„**
Discovering the Wonder built by other Empires
“'**„**
Gnerot

## Story

The Gnerot is a very strange creature, difficult to classify using biological terms known to humans. It is very large, with the biggest specimens outgrowing even the largest Hammeroceroses. When it comes to appearance, the Gnerot is more or less humanoid - arms, legs and the head are clearly visible. The material covering the creature strongly resembles rocks, gravel and dirt. It is yet unknown whether it is a product of the creature’s skin or if the Gnerots stick the loose material it finds to its own body.

Their appearance would suggest a slow and sluggish nature but they are far from harmless. These giants can move quite quickly and utilize all their limbs in combat, so you never know how they are going to attack. They defend their territory until the last drop of whatever-flows-in-their-veins. Gnerots are primarily active during the day, but it is not uncommon to see them roaming the surface of Galatea 37 at night as well. When they need rest, Gnerots burrow most of their bodies into the ground, leaving just the bulky back part on the surface. It strongly resembles a rock, so be careful not to startle one…

Gnerots are usually found around resource deposits and minerals, due to their uncommon diet. Instead of relying on nutrients in water, plants and meat, they consume macroelements in their most primitive form - by chomping on ores directly. We don’t know what goes on in their gastrointestinal tracts, or if they even have such... What you should take away from all this is: if you want to use a resource field that Gnerot fancies, you will have to do a lot of work to drive it away.

## Statistics

Normal
Aggressive: 6
Aggressive acceleration: 60
Regeneration: 0

Damage radius: 3.5
Type: Physical
Player
Energy
Tower
 Elemental
Damage radius: 6
Type: Physical
Range: 16-24
Cooldown: 8s
Area: 200%

Alpha
Aggressive: 6
Aggressive acceleration: 60
Regeneration: 0
Damage radius: 4
Type: Physical
Player
Energy
Tower
 Elemental
Damage radius: 6
Type: Physical
Range: 16-24
Cooldown: 8s
Area: 200%

Ultra
Aggressive: 6
Aggressive acceleration: 60
Regeneration: 0
Damage radius: 5
Type: Physical
Player
Energy
Tower
 Elemental
Damage radius: 6
Type: Physical
Range: 16-24
Cooldown: 8s
Area: 200%

## Special

Burning - Fight
 Normal: 4
Aggressive: 6
Aggressive acceleration: 60
Regeneration: 0
Type: Fire
Player
Energy
Tower
Fire: 100%
Max. difficulty factor: 2
 Elemental
Cooldown: 3s
Database Function

## Requirement

An available database, created with PlayerService:GetOrCreateGlobalDatabase("NameOfDatabase")

## Overview

Below, a method overview:

In this case, the variable for the database is called "Database", that's why it's "Database: "

```
Database:HasString("biome\_requirement")
Database:SetString("alpha", "beta" )
Database:GetString("biome\_requirement")
Database:GetStringOrDefault( "display\_radius\_group", tostring(self.entity) )

Database:HasFloat("damage\_resisted\_stun\_speed")
Database:SetFloat("drone\_search\_radius", 10 )
Database:GetFloat("damage\_resisted\_stun\_speed")
Database:GetFloatOrDefault("drone\_search\_radius", 25.0))

Database:HasInt("drone\_id")
Database:SetInt("drone\_id", 3 )
Database:GetInt("drone\_id")
Database:GetIntOrDefault( "drone\_per\_spot", 2 )

Database:HasVector
Database:SetVector
Database:GetVector
Database:GetVectorOrDefault

Database:GetStringKeys()
Database:GetFloatKeys()
Database:GetIntKeys()
Database:RemoveKey

Database:Clear() (Clears a database)
Database:Empty() (Checks if a database is empty)

```

## Example

```
local database = PlayerService:GetOrCreateGlobalDatabase( "g\_lvl\_system\_database")
database:SetInt( "xp", database:GetIntOrDefault("xp", 0) + 1)

```
Outpost

A miniature version of the Heaquarters building. Can be constructed during planetary missions to transport resources from remote bases to the main base via rift technology.

It allows the Mecha-Suit to reconstruct.

It cannot be built near Rift Portals and must be a minimum distance away.

## Statistics

Ironium: 1000
Carbonium: 50
Ironium: 50
Uranium: 50
Palladium: 50
Titanium: 50
Tower ammo explosive: Max
Tower ammo liquid: Max
Tower ammo low caliber: Max
Tower ammo high caliber: Max
A.I.: 4
Heal amount: 20
Heal radius: 8
Heal interval: 1/s

## Features

* Respawn on death
* Portal for teleportation
Corrosive Gun (Research)

Corrosive Gun is a Research in *The Riftbreaker.*

## Standard

*This weapon uses small portions of a sticky substance containing fluoroantimonic acid as its projectiles. The acid deals damage on impact and leaves behind a pool of acid on the ground. Additionally, the Corrosive Gun can help the Riftbreaker remove large objects by dissolving them.*

 Rhodonite Handling | 750 | N/A

## Advanced

*A set of upgrades for the Corrosive Gun, increasing its effectiveness on the battlefield. Improved formula contains a higher concentration of fluoroantimonic acid, which results in a much faster burn rate in contact with organic matter. Additional room for modifications.*

 Corrosive Gun - Standard
Alien Research - Level 2

## Superior

 Corrosive Gun - Advanced
Alien Research - Level 3

## Extreme

 Corrosive Gun - Superior
Alien Research - Level 4
Mech Sensors (Research)

Mech Sensors is a Research in *The Riftbreaker.*

## Standard

*These modules can be installed in one of the Mecha-Suit upgrade slots. They contain instructions and programs that alter the Mecha-Suit's behavior and abilities. These modules all have unique properties and can be used interchangeably with each other.*

 Mech Armor - Standard

## Advanced

 Mech Sensors - Standard
Mech Armor - Advanced

## Superior

 Mech Sensors - Advanced
Mech Armor - Superior

## Extreme

 Mech Sensors - Superior
Mech Armor - Extreme
Event Function

## Requirement

Must use the parameter of the function - ex: Func(evt)

## Overview

Not every event method works for every event type. It's recommended to use the game reflection tool in the workspace editor to get more information about it.

Below, a method overview:

```
evt:GetBlueprint()
evt:GetControlledEntity()
evt:GetContinous()
evt:GetCreator()
evt:GetCubeEnt()
evt:GetDatabase()
evt:GetDamageType()
evt:GetDamageValue()
evt:GetDamagePercentage()
evt:GetDegree()
evt:GetDeltaTime()
evt:GetEffect()
evt:GetEmissiveValue()
evt:GetEntity()
evt:GetEvent()
evt:GetForced()
evt:GetFullExit()
evt:GetGrowSpeed()
evt:GetOtherEntity()
evt:GetOwner()
evt:GetPlayerId()
evt:GetPrepareBlueprint()
evt:GetItem()
evt:GetItemEnt()
evt:GetInventory()
evt:GetLeechDamage()
evt:GetMarkerName()
evt:GetMenu()
evt:GetMode()
evt:GetNewStateName()
evt:GetReason()
evt:GetResource()
evt:GetShootBlueprint()
evt:GetSlot()
evt:GetTarget()
evt:GetTargetTag()
evt:GetTeam()
evt:GetTime()
evt:GetTurretEntity()
evt:GetTurretStatus()
evt:GetUpgrading()
evt:GetVisible()

```
Mod service: WeaponService

## Available commands:

```
void                StartShoot( Exor::Entity::Id ent );
void                StopShoot( Exor::Entity::Id ent );
void                ShootOnce( Exor::Entity::Id ent );
void                StartCharge( Exor::Entity::Id ent );
void                StopCharge( Exor::Entity::Id ent );
bool                IsShooting( Exor::Entity::Id ent );
bool                IsCharging( Exor::Entity::Id ent );
bool                HasAmmoToShoot( Exor::Entity::Id ent );
bool                TryMeleeAttack( Exor::Entity::Id ent, const char * attackName );
bool                TryMeleeMirrorAttack( Exor::Entity::Id ent, const char * attackName );
void                ForceMeleeAttack( Exor::Entity::Id ent, const char * attackName );
void                ForceMeleeMirrorAttack( Exor::Entity::Id ent, const char * attackName );
void                ForceStopMeleeAttack( Exor::Entity::Id ent );
bool                IsMeleeReady( Exor::Entity::Id ent );
bool                IsMeleeDealingDamage( Exor::Entity::Id ent );
bool                IsInterruptBlocked( Exor::Entity::Id ent );
unsigned int        GetMeleeComboCount( Exor::Entity::Id ent );
Exor::Entity        GetSameWeaponEquipped( Exor::Entity owner, Exor::Entity item );
float               GetWeaponFireRate( Exor::Entity::Id ent );
void                OnMeleeAttackButtonPressed( Exor::Entity::Id ent, const char * attackName );
void                OnMeleeAttackButtonReleased( Exor::Entity::Id ent, const char * attackName );
Exor::Entity::Id    ThrowGrenade( Exor::IdString blueprint, Exor::Entity::Id owner, Exor::IdString attachment );
Exor::Entity::Id    ShootArtilleryOnTargetOrigin( Exor::Entity::Id fromEntity, Exor::Entity::Id owner, float x, float y, float z, Exor::IdString blueprint, Exor::IdString attachment );
Exor::Entity::Id    ShootProjectileOnTargetOrigin( Exor::Entity::Id fromEntity, Exor::Entity::Id owner, float x, float y, float z, Exor::IdString attachment );
void                UpdateGrenadeAiming( Exor::Entity::Id aimEnt, Exor::Entity::Id owner, Exor::Entity::Id item );
Exor::String        GetMirrorMeshName( const char * meshName );
void                UpdateWeaponStatComponent( Exor::Entity::Id item, Exor::Entity::Id weapon );
????                RotateWeaponMuzzleToTarget
????                GetWeaponDps

```
Modding:Components

Entities in Riftbreaker are created from blueprints. These blueprints are constructed from several locations, but mainly the .ent files.

You can find all components of a blueprint with the following lua code:

```
local blueprint = ResourceManager:GetBlueprint(entityName)

for componentName in Iter( blueprint:GetComponentNames() ) do

    LogService:Log("  *" .. componentName)

end

```

You can retrive a component with:

```
local component = blueprint:GetComponent(componentName)
```
High Caliber Weapons (Research)

High Caliber Weapons is a Research in *The Riftbreaker.*

## Standard

*Contains instructions on manufacturing methods of high caliber ammunition that is used in powerful conventional firearms. Gives the Riftbreaker the ability to craft some new weapon models.*

 Armory - Level 2
Sniper Rifle - Standard

## Advanced

*An upgrade to the High Caliber Weapons technology, allowing Riftbreakers to craft more powerful weapons with more room for modifications.*

 Armory - Level 3
High Caliber Weapons - Standard
Sniper Rifle - Advanced
Shotgun - Advanced

## Superior

 Armory - Level 4
High Caliber Weapons - Advanced
Sniper Rifle - Superior
Shotgun - Superior

## Extreme

 Armory - Level 5
High Caliber Weapons - Superior
Sniper Rifle - Extreme
Shotgun - Extreme
Crash explanation

This page intends to list the different crashes you can get by creating mods and learn what they actually mean.

Every crash logs some information at the end of the log files - you can find them in "C:\Users\[USERNAME]\Documents\The Riftbreaker\exor\_logs.txt"

## Crashes

```
(filename not available):0 - public: void \* \_\_ptr64 \_\_cdecl Exor::CompContainer::GetComponent(enum Exor::TypeHash) \_\_ptr64
(filename not available):0 - public: void \* \_\_ptr64 \_\_cdecl Exor::EntityTemplate::GetComponent(enum Exor::TypeHash,bool) \_\_ptr64
(filename not available):0 - <lambda\_d216417eccea6451b46783a8a2b36797>::operator()
(filename not available):0 - Exor::function\_ref<void \_\_cdecl(Exor::SharedPtr<Exor::Resource> const &)>::callback\_fn<<lambda\_d216417eccea6451b46783a8a2b36797> >
(filename not available):0 - public: void \_\_cdecl Exor::ResourcePlugin::VisitResources(class Exor::function\_ref<void \_\_cdecl(class Exor::SharedPtr<class Exor::Resource> const & \_\_ptr64)> && \_\_ptr64) \_\_ptr64
(filename not available):0 - public: void \_\_cdecl Riftbreaker::BuildingDb::BuildingPostprocess(void) \_\_ptr64
(filename not available):0 - public: virtual int \_\_cdecl Riftbreaker::InitMainResourcesState::OnLeave(void) \_\_ptr64
(filename not available):0 - protected: void \_\_cdecl Exor::AppState::Run(void) \_\_ptr64
(filename not available):0 - boost::`anonymous namespace'::thread\_start\_function
(filename not available):0 - configthreadlocale
(filename not available):0 - BaseThreadInitThunk
(filename not available):0 - RtlUserThreadStart

 Explanation
 Example

..

```
(filename not available):0 - Exor::CompContainer::GetComponent
(filename not available):0 - Exor::EntityTemplate::GetComponent
(filename not available):0 - <lambda\_95437b0428907c4edb76e25e2050a820>::operator()
(filename not available):0 - Exor::multifunction<void \_\_cdecl(Exor::Entity,void \* \_\_ptr64)>::operator()
(filename not available):0 - <lambda\_793d2beabd32b43daa29dc180d523a09>::operator()
(filename not available):0 - Exor::EcsBase::VisitManagers
(filename not available):0 - Exor::World::Unpack
(filename not available):0 - Riftbreaker::BuildingSystem::OnBuildingBuildEvent
(filename not available):0 - Exor::EventObserver<Riftbreaker::BuildingBuildEvent,Riftbreaker::BuildingSellEndEvent>::VisitEvents<<lambda\_45baf0a25fe92a2170f1efc817625545>,<lambda\_d482013adbc1ad2fa97c3d21ba358c4c> >
(filename not available):0 - Riftbreaker::BuildingSystem::Update
(filename not available):0 - <lambda\_12334ede48f2806aae76113f4288544b>::operator()
(filename not available):0 - Exor::TaskScheduler::worker\_thread
(filename not available):0 - boost::`anonymous namespace'::thread\_start\_function
(filename not available):0 - configthreadlocale
(filename not available):0 - BaseThreadInitThunk
(filename not available):0 - RtlUserThreadStart

 Explanation
 Example
Acidic Plains Reconnaissance

File:Hazenite Concentration Orbital Scanner Info Box.pngAcidic Plains Reconnaisance is a Campaign Location in the Acidic Plains.

## Unlock Conditions

This location is unlocked after construction of both the Orbital Scanner and Ailen Labs buildings.

## Local Objectives

Access to this location is required to unlock Rhodonite Handling (Research)

## Wind and Solar Energy

This map features the standard 100% Solar energy generation but only 50% Wind energy generation seen in other Acidic Plains.

## Strong Winds

Wind Turbine power generation increased to 500%.

# Tiles

Acidic Plains Reconnaissance uses the following tiles.

 jungle\_canyons\_03 | - | 2 | -
Building

**Building** is an important mechanic in The Riftbreaker. It is used to set up all the structures required for the base operations.

## List of Buildings

### Main

* Headquarters
* Armory
* Communication Hub
* Orbital Scanner
* Cryo Station
* Fusion Field Accelerator
* Hyper Particle Condenser
* Outpost
* Quantum Gate Stabilizer
* Research Station
* Rift Station
* Laboratory
* Weather Control Station
* Rift Magnetic Stabilizer
* Advanced Magnetic Stabilizer

### Energy

* Animal Biomass Powerplant
* Carbonium Powerplant
* Energy Connector
* Energy Storage
* Energy Pylon
* Fusion Powerplant
* Gas Power Plant
* Geothermal Powerplant
* Magma Powerplant
* Morphium Power Plant
* Nuclear Powerplant
* Plant Biomass Powerplant
* Solar Panel
* Wind Turbine

### Defense

#### Walls

* Wall
* Energy Wall
* Crystal Wall
* Wall Gate
* Heightened Wall Floor

#### Logistics

* AI Hub
* Mine Layer Tower
* Repair Facility
* Shield Generator
* Short Range Radar
* Rift Portal

#### Towers

* Sentinel Tower
* Morphium Tower
* Attack Drone Tower

##### ---consumes tower ammo---

* Acid Spitter Tower
* Artillery Tower
* Flamer Tower
* Heavy Artillery
* Minigun Tower
* Portal Bomb Tower
* Rocket Tower
* Shockwave Tower

##### ---energy-based---

* Gatling Laser Tower
* Laser Tower
* Lightning Tower
* Plasma Tower
* Railgun Tower

#### Traps

* Trap Fire
* Trap Acid
* Trap Energy
* Trap Cryo
* Trap Area
* Trap Physical

### Resources

* Ammunition Storage
* Bio Composter
* Carbonium Factory
* Carbonium Synthesizer
* Ironium Synthesizer
* Harvesting Station
* Cultivator
* Gas Filtering Plant
* Ionizer
* Ironium Factory
* Liquid Resources Pump
* Liquid Compressor
* Liquid Decompressor
* Liquid Storage
* Pipeline
* Plasma Converter
* Rare Element Mine
* Solid Material Storage
* Supercoolant Refinery
* Tower Ammo Factory
* Uranium Centrifuge
* Water Filtering Plant

### Decorations

* Lamps
* Floors
* Masts
* Pots
* Statues
Export custom meshes from Blender

## Final check

Check the following for each of the available meshes you want to export:

1. Clean, real name (for collision boxes, have the "\_cX" suffix)
2. Triangulated
3. All transforms normalized

## The export

Select every mesh you want to export and go to "File -> Export -> EXOR Mesh" (If you have an armature for bones, select it too)

In the exporter menu, leave everything as it is ( you might want to try around with the checkboxes at the top "Selected Objects" + "Active Collection" ), make sure the transform is set as in the picture below.

And choose an export location you like, somewhere on your filesystem.

Once this is finished, you will find your exported file(s) in your filesystem.

## Quick Check

For a quick check without too much hassle and details, you can download Ogre Meshy to view the mesh files.

## Common errors

- The EXOR exporter uses the name of the mesh in the scene collection as the name of the mesh file in the filesystem, **not** the name of the Blender save file.

- If you use the default EXOR mesh exporter settings, make sure to have every mesh in your collection selected you want to export - see the EXOR exporter setting "Selected Objects"
Create custom collision models for meshes in Blender

Once you are done creating your meshes, you still need to create collision boxes for them.

## Prepare collisions for your model

Collision models in the Schmetterling Engine are usually convex shapes to simplify physics and make collision calculations easier.

This video explains the difference between the two https://www.youtube.com/watch?v=NlHqdwTtcCY

## Create collision models

### Clone your meshes

As the collision box will directly change your mesh, you don't have any access to the original model. To prepare for that, you have to clone your mesh and then change that clone to be your collision box.

To do so, simply select your mesh and ctrl + c and ctrl + v to copy and paste it again. As a result, you will have the same object twice, just on top of another.

To proceed, disable the view of the **original mesh** by clicking the eye icon top right, so you won't see and as such, also won't touch it

### Naming the collision mesh

Naming the collision mesh is important, since the game requires a certain naming pattern to detect a collision box mesh. You do that by adding a "\_cX" suffix to the name like this: "test\_rock\_01\_cX", where X is the number of the collision convex. The first collision for that object gets the "\_c1" suffix, the second "\_c2", and so on. What is essential - collision naming for each model starts from c1 and goes up!

To change your collision box name, select the meshes and either change the bottom textbox, or select it in the top list and press F2 to rename it.

### Create the collision mesh

As the final step, you now actually modify your cloned mesh to be your collision mesh.

Select your cloned mesh, enter the Blender edit mode (press tab or click top left on the drop-down menu)

and select every face (face = "side") of your model. It helps to switch to the face selection by clicking on the corresponding button top left.

Now select every face you have on your model where the collision box should be available. This is easy for simple / basic objects, but becomes more difficult the more angles/sides your object has.

Once everything is selected, open your search bar (F3 or space, depending on your settings) and search for the option "Mesh > Convex Hull" and click it.

It doesn’t have to be very precise - some clipping is perfectly fine, and the simpler the shape of your collision, the better.

For basic shapes like above, you probably won't even see if something happened.

## Final check

1. To prepare for mesh export, make sure you re-enable all the meshes on your project, click on every closed eye to make the mesh visible again.

1. Make sure you renamed every collision mesh to have a "\_cX" suffix, like it was written in a section before.
2. The location of the collision box should be the same as your original mesh ( 0 : 0 : 0 )

## Common errors

- Wrong name of the collision mesh

- Moved the collision box mesh to another spot

## External source

https://store.steampowered.com/news/app/780310/view/5375631932961299786
Cobalt Mining Outpost

Cobalt Mining Outpost is a Campaign Location in the Tropical Zone.

# Local Objectives

*Establish a permanent Cobalt mining outpost within the Tropical Zone. Rich deposits of Carbonium and Ironium have also been detected in this area.*

## Random Objectives

### Stop the canoptrix attacks.

-*Find the source of frequent canoptrix attacks.*

-*Destroy the canoptrix nest.*

### Investigate the appearance of an unusually large creaure.

-*Find the creature's location.*

-*Kill the agressive creature.*

# Wind and Solar Energy

This map features the standard 100% Solar and 100% Wind energy generation seen in other Tropical Zones.

# Weather Events

## Strong Winds

Wind Turbine power generation increased to 500%.

# Tiles

Colbalt Mining Outpost uses the following tiles.

 jungle\_canyons\_03 | - | 2 | -