Description
# General
Addon to [Pufferfish's Skills](https://modrinth.com/mod/skills)
Contains support for
- [Iron's Spells 'n Spellbooks](https://modrinth.com/mod/irons-spells-n-spellbooks)
Recommend checking the documentation:
- https://puffish.net/skillsmod/docs/creators/configuration/calculations/prototypes
- https://puffish.net/skillsmod/docs/creators/configuration/calculations/operations/operation
---
Attributes have been moved
to [Additional Attributes](https://modrinth.com/mod/additional-attributes)
# Experience Source
## Harvesting Crops
Hooks into the method which gets the items from the loot table
**Operations**:
- `player`: The player harvesting the crops (prototype
is [Player](https://puffish.net/skillsmod/docs/creators/configuration/calculations/prototypes#minecraft-player))
- `block`: The block being harvested (prototype
is [Block State](https://puffish.net/skillsmod/docs/creators/configuration/calculations/prototypes#minecraft-block-state))
- `tool`: The tool being used (prototype
is [Item Stack](https://puffish.net/skillsmod/docs/creators/configuration/calculations/prototypes#minecraft-item-stack))
- `dropped_seeds`: Amount of dropped seeds based on `#forge:seeds` (prototype is `number`)
- `dropped_crops`: Amount of dropped crops based on `#forge:crops` (prototype is `number`)
Example:
```json
{
"type": "pufferfish_unofficial_additions:harvest_crops",
"data": {
"variables": {
"crops": {
"operations": [
{
"type": "block"
},
{
"type": "puffish_skills:test",
"data": {
"block": "#minecraft:crops"
}
}
]
},
"dropped_crops": {
"operations": [
{
"type": "dropped_crops"
}
]
},
"dropped_seeds": {
"operations": [
{
"type": "dropped_seeds"
}
]
}
},
"experience": [
{
"condition": "crops",
"expression": "dropped_crops + (dropped_seeds * 0.2)"
}
]
}
}
```
## Fishing Experience
Gets called per fished item
**Operations**:
- `player`: The player who is fishing (prototype
is [Player](https://puffish.net/skillsmod/docs/creators/configuration/calculations/prototypes#minecraft-player))
- `tool`: The tool being used (prototype
is [Item Stack](https://puffish.net/skillsmod/docs/creators/configuration/calculations/prototypes#minecraft-item-stack))
- `fished`: The item being fished (prototype
is [Item Stack](https://puffish.net/skillsmod/docs/creators/configuration/calculations/prototypes#minecraft-item-stack))
Example:
```json
{
"type": "pufferfish_unofficial_additions:fishing",
"data": {
"variables": {
"fishes": {
"operations": [
{
"type": "fished"
},
{
"type": "puffish_skills:test",
"data": {
"item": "#minecraft:fishes"
}
}
]
},
"fished_amount": {
"operations": [
{
"type": "fished"
},
{
"type": "count"
}
]
}
},
"experience": [
{
"condition": "fishes",
"expression": "fished_amount * 4"
},
{
"condition": "!fishes",
"expression": "fished_amount * 2"
}
]
}
}
```
# Rewards
## Effect
Apply effects (infinite duration):
- Before removing the reward from the definition you'll have to reset the skills (or manually remove the effects yourself)
```json
{
"type": "pufferfish_unofficial_additions:effect",
"data": {
"effect": "minecraft:regeneration",
"amplifier": 0,
"type": "GRANT"
}
}
```
Grant immunity up to a certain amplifier:
```json
{
"type": "pufferfish_unofficial_additions:effect",
"data": {
"effect": "minecraft:wither",
"amplifier": 1,
"type": "IMMUNE"
}
}
```
Modify duration and / or amplifier of incoming effects:
- If the duration reaches `0` due to modifications the effect will not be applied
- Valid operations are `+`, `-`, `x` and `/`
- This element is optional
- If the amplifier goes below `0` due to modifications the effect will not be applied
```json
{
"type": "pufferfish_unofficial_additions:effect",
"data": {
"effect": "minecraft:slowness",
"amplifier": -2,
"duration_modification": "/2.5",
"type": "MODIFY"
}
}
```
## Walkable Powder Snow
Allows walking on powder snow
```json
{
"type": "puffish_skills:tag",
"data": {
"tag": "walk_on_powder_snow"
}
}
```
# Iron's Spells 'n Spellbooks
## Experience Sources
Added an experience source for casting spells
**Note**: The experience source will trigger for each spell tick, meaning for continuous spells it can happen multiple
times (see the `expected_ticks` parameter)
**Operations**:
- `player`: The caster (prototype
is [Player](https://puffish.net/skillsmod/docs/creators/configuration/calculations/prototypes#minecraft-player))
- `main_hand`: Item in main hand (prototype
is [Item Stack](https://puffish.net/skillsmod/docs/creators/configuration/calculations/prototypes#minecraft-item-stack))
- `spellbook`: The currently equipped spell book (prototype
is [Item Stack](https://puffish.net/skillsmod/docs/creators/configuration/calculations/prototypes#minecraft-item-stack))
- `school`: The school type of the spell (prototype is custom)
- The value is defined with `school`
- `spell`: The spell (prototype is custom)
- The value is defined with `spell`
- Contains the following sub-operations:
- `min_level`: The minimum level of this type of spell (prototype is `number`)
- `max_level`: The maximum level of this type of spell (prototype is `number`)
- `cast_type`: The way the spell is being cast (`INSTANT`, `LONG`, `CONTINUOUS`) (prototype is custom)
- The value is defined with `value`
- `level`: The level of the spell (incl. modifications through items etc.) (prototype is `number`)
- `min_level_rarity`: The minimum level of the spell based on the rarity (prototype is `number`)
- `rarity_name`: Name of the rarity (`COMMON`, `RARE`, `EPIC`, `LEGENDARY`) (prototype is custom)
- The value is defined with `value`
- `rarity`: The ordinal of the rarity (`0` is `COMMON` and `4` is `LEGENDARY`) (prototype is `number`)
- `mana_cost`: Mana cost for the spell at that level (if the cast consumes mana) (prototype is `number`)
- `mana_cost_per_second`: Only set for continuous spells (and if the cast costs mana) (prototype is `number`)
- `cast_duration`: Duration of continuous spells (in seconds) (prototype is `number`)
- `cast_charge_time`: Charge-up time of spells (if they have one) (in seconds) (prototype is `number`)
- `cooldown`: Cooldown after the spell was cast (in seconds) (prototype is `number`)
- `expected_ticks`: Will be `1` for instant and long type spells - for continuous it's the amount of spell ticks if the
whole duration is used (prototype is `number`)
Example:
```json
{
"type": "pufferfish_unofficial_additions:spell_casting",
"data": {
"variables": {
"level": {
"operations": [
{
"type": "level"
}
]
},
"rarity": {
"operations": [
{
"type": "rarity_name"
},
{
"type": "puffish_skills:test",
"data": {
"value": "LEGENDARY"
}
},
{
"type": "switch",
"data": {
"true": 5,
"false": 1
}
}
]
},
"mana_cost": {
"operations": [
{
"type": "mana_cost"
}
]
},
"mana_cost_per_second": {
"operations": [
{
"type": "mana_cost_per_second"
}
]
},
"spellbook": {
"operations": [
{
"type": "spellbook"
},
{
"type": "puffish_skills:test",
"data": {
"item": "irons_spellbooks:iron_spell_book"
}
}
]
},
"fire_school": {
"operations": [
{
"type": "school"
},
{
"type": "puffish_skills:test",
"data": {
"school": "irons_spellbooks:fire"
}
}
]
},
"blaze_storm": {
"operations": [
{
"type": "spell"
},
{
"type": "puffish_skills:test",
"data": {
"spell": "irons_spellbooks:blaze_storm"
}
}
]
}
},
"experience": [
{
"condition": "spellbook & !blaze_storm & fire_school",
"expression": "level + (mana_cost / 5) + rarity"
},
{
"condition": "blaze_storm",
"expression": "(level + (mana_cost_per_second / 10)) / 2"
}
]
}
}
```