Jump to content

help)

Fixed 4.9.141 4.9.142

BenDer
BenDer

Posted

the numbering of the base where not in order changing their configuration in places also does not affect this and the names of all are the same all easy Although they are five levels

image.png

Hiro Of Canton

Posted

I'll add natural sort for the base names shortly.

The "Easy" label comes directly from the RaidableBases profile files in `oxide/data/RaidableBases/Profiles`.  The "Difficulty" property gives it the actual name and the "Difficulty Level" must be unique for each group in RaidableBases.  

Hiro Of Canton

Posted

Changed Status from Pending to Fixed

Changed Fixed In to 4.9.142

BenDer

Posted

On 3/23/2026 at 8:15 PM, Hiro Of Canton said:

Changed Status from Pending to Fixed

Changed Fixed In to 4.9.142

yes the numbering was corrected but now the images are not added

also the profile names are different but in the game for some reason they are the same 

image.png.ff5b031796fb5f41c0636c5ab9c20962.png

Hiro Of Canton

Posted

The profile names are all set in the files in `oxide/data/RaidableBaes/Profiles/*.json` like the following:

{
  "Difficulty": "Easy",
  "Difficulty Level": 0,
...
}

Here's the full description of how we load them...
 

# Difficulty Names: RaidableBases -> RaidSelector

Quick reference for how difficulty names flow from RaidableBases into RaidSelector.

---

## Where Difficulty Names Come From

Difficulty names are **not hardcoded**. They come from the `"Difficulty"` field in each
RaidableBases profile file:

```
oxide/data/RaidableBases/Profiles/*.json
```

Each profile looks like this:

```json
{
  "Difficulty": "Easy",
  "Additional Bases": {
    "easy_base_1": { ... },
    "easy_base_2": { ... }
  }
}
```

The `"Difficulty"` value is a **free-form, case-sensitive string**. It can contain spaces.
Whatever you type there becomes the difficulty name everywhere else.

### Standard RaidableBases Difficulties

| Name | Description |
|---|---|
| `Easy` | Ground-based, lowest tier |
| `Medium` | Ground-based, mid tier |
| `Hard` | Ground-based, high tier |
| `Expert` | Ground-based, very high tier |
| `Nightmare` | Ground-based, maximum tier |

### Custom Difficulties

You can create any difficulty name you want by setting the `"Difficulty"` field in a
profile. Common examples:

| Name | Description |
|---|---|
| `Ship Expert` | Ship-based expert raid |
| `Ship Hard` | Ship-based hard raid |
| `Sky Easy` | Sky-based easy raid |
| `Sky Medium` | Sky-based medium raid |

Multiple profile files can share the same difficulty name -- their bases get merged together.

---

## How RaidSelector Imports Them

On plugin load, RaidSelector runs this sequence:

1. **Scans all profile files** in `oxide/data/RaidableBases/Profiles/`
2. **Reads the `"Difficulty"` string** and the `"Additional Bases"` keys from each profile
3. **Merges profiles** that share the same difficulty name
4. **Looks up costs** from the RaidableBases main config (`oxide/config/RaidableBases.json`)
5. **Auto-creates permission entries** in `RaidSelector.json` for any new difficulty found

No manual mapping is needed. If a difficulty exists in a profile, RaidSelector picks it up
automatically on the next reload.

---

## Setting Costs in RaidableBases

Costs are configured in `oxide/config/RaidableBases.json` under `Settings`. The difficulty
name is used as the **dictionary key**:

### Economics / ServerRewards

```json
"Economics Buy Raid Costs (0 = disabled)": {
  "Easy": 0.0,
  "Medium": 0.0,
  "Hard": 0.0,
  "Expert": 0.0,
  "Nightmare": 0.0,
  "Ship Expert": 0.0
}
```

### Custom Item Costs

```json
"Custom Buy Raid Cost": {
  "Easy": [
    { "Enabled": true, "Item Shortname": "scrap", "Amount": 3000 }
  ],
  "Medium": [
    { "Enabled": true, "Item Shortname": "scrap", "Amount": 6000 }
  ],
  "Hard": [
    { "Enabled": true, "Item Shortname": "scrap", "Amount": 12000 }
  ]
}
```

**Important**: If you add a custom difficulty like `Ship Expert` to your profiles, you must
also add a matching entry in the cost dictionaries for it to have a price. Otherwise it will
be treated as free.

### Enabling Cost Types

In the same config, toggle which cost systems are active:

```json
"Buyable Event Costs": {
  "Require Custom Costs": true,
  "Require Economics Costs": false,
  "Require Server Rewards Costs": false
}
```

---

## Controlling Visibility in RaidSelector

In `oxide/config/RaidSelector.json`, each difficulty gets a `DifficultyPermissions` entry:

```json
"DifficultyPermissions": {
  "Easy": {
    "DifficultyActivate": true,
    "RequiresDifficultyPermission": false
  },
  "Ship Expert": {
    "DifficultyActivate": true,
    "RequiresDifficultyPermission": false
  }
}
```

| Setting | Effect |
|---|---|
| `DifficultyActivate: false` | Hides the difficulty from the UI entirely |
| `RequiresDifficultyPermission: true` | Only players with the Oxide permission can see it |

Permissions are auto-generated as `raidselector.difficulty.<name>` where the name is
lowercased with spaces replaced by underscores:

| Difficulty | Permission |
|---|---|
| `Easy` | `raidselector.difficulty.easy` |
| `Ship Expert` | `raidselector.difficulty.ship_expert` |
| `Sky Medium` | `raidselector.difficulty.sky_medium` |

---

## Sort Order

Difficulties appear in the UI sorted by:

1. Economics cost (ascending)
2. ServerRewards cost (ascending)
3. Alphabetical name (natural sort)

---

## Russian Config Support

RaidSelector auto-detects Russian-language RaidableBases configs and normalizes the
structural keys (e.g. `"Сложность"` -> `"Difficulty"`). However, **difficulty names
themselves are not translated** -- if your profiles use `"Легкий"` as the difficulty name,
that is what appears in RaidSelector. The names are passed through as-is.

---

## Checklist: Adding a New Difficulty

1. Create or edit a profile in `oxide/data/RaidableBases/Profiles/` with your new
   `"Difficulty"` value (e.g. `"Sky Nightmare"`)
2. Add bases to the `"Additional Bases"` dictionary in that profile
3. In `oxide/config/RaidableBases.json`, add a cost entry for `"Sky Nightmare"` in the
   relevant cost dictionaries (Economics, ServerRewards, or Custom)
4. Reload RaidSelector -- it will auto-detect the new difficulty and add a
   `DifficultyPermissions` entry to `RaidSelector.json`
5. Optionally edit `RaidSelector.json` to set `DifficultyActivate` or
   `RequiresDifficultyPermission` for the new difficulty

 

About Us

Codefling is the largest marketplace for plugins, maps, tools, and more, making it easy for customers to discover new content and for creators to monetize their work.

Downloads
2.4m
Total downloads
Customers
10.9k
Customers served
Files Sold
156.9k
Marketplace sales
Payments
3.4m
Processed total
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.