WinDanesz / WizardryUtils

WizardryUtils is a library mod to ease addon (spell pack) development for the Electroblob's Wizardry Minecraft mod.
https://www.curseforge.com/minecraft/mc-mods/wizardryutils
GNU General Public License v3.0
3 stars 1 forks source link

Add Summon Attribute Modifiers for Dynamic Minions #11

Open anabsolutesloth opened 1 year ago

anabsolutesloth commented 1 year ago

Description

Enhance Dynamic Minion system by adding a Spell Property to adjust or set certain attributes.

Allows modpack makers to make Dynamic Minions stronger/weaker than the base mob.

WinDanesz commented 9 months ago

This could be done something like this:

some_random_dynamic_summon_spell_config.json

{
  "enabled": {
    "book": true,
    "scroll": true,
    "wands": true,
    "npcs": true,
    "dispensers": true,
    "commands": true,
    "treasure": true,
    "trades": true,
    "looting": true
  },
  "tier": "advanced",
  "element": "earth",
  "type": "minion",
  "cost": 30,
  "chargeup": 0,
  "cooldown": 70,
  "base_properties": {
    "minion_lifetime": 600,
    "minion_count": 1,
    "summon_radius": 2,
    "generic.max_health": -1,
    "generic.knockback_resistance": -1
    "generic.attack_damage": -1,
    "<other default common attribute modifiers>": -1
  }
}

If a value is set to -1 (would be the default), then the original mob attribute is used, otherwise, the specified

anabsolutesloth commented 9 months ago

That seems pretty good, and could also be designed to allow other attributes to be input, though perhaps the attributes could just be its own map within the base_properties to allow that? ex:


"base_properties": {
  "minion_lifetime": 600,
  "minion_count": 1,
  "summon_radius": 2,
  "attributes": {
    "generic.maxHealth": 60,
    "generic.knockbackResistance": -1,
    "generic.attackDamage": -1,
    "mod.someAttribute": 10
  }
}
WinDanesz commented 9 months ago

Only strings and numbers are supported as base_properties. Other modifications require a structural change of all spell properties (and wizardry's code). They also cannot be optional, either registered & present or not.

WinDanesz commented 9 months ago

At best, with the current system I can add a config String[] where people can add other modded properties, e.g. ["modA.someAttribute", "modB.someAttribute"] and this will cause these props to be registered and expected for all dyn minion spells. That means all dyn minion spell jsons must be overridden and provided by the pack maker