pragma solidity ^0.4.18; contract Mob { struct MonsterDamage { GameEngine.DamageType damageType; uint amount; } struct Monster { uint32 id; uint32 mobSize; GameEngine.MonsterType monsterType; uint8 level; uint dungeonId; uint health; uint experience; // monsters can have up to 3 attacks MonsterDamage attack1; MonsterDamage attack2; MonsterDamage attack3; // default damage multiplier uint defenseSlash; uint defenseBash; uint defensePierce; uint defenseFire; uint defenseIce; uint defenseLightning; } function spawn(uint32 monsterId, uint32 mobSize, uint8 level, uint dungeonId) { /* _id = monsterId; _mobSize = mobSize; _level = level; _dungeonId = dungeonId; if (monsterId == 1) { createGoblins(); } else if (monsterId == 2) { createSkeletons(); } else if (monsterId == 3) { createSlimes(); } */ } /* function createGoblins() { _monsterType = GameEngine.MonsterType.Goblin; } function createSkeletons() { _monsterType = GameEngine.MonsterType.Skeleton; } function createSlimes() { _monsterType = GameEngine.MonsterType.Slime; } */ } contract GameEngine { enum DamageType { Slash, Bash, Pierce, Fire, Ice, Lightning } enum ItemAffix { BonusDamage, AttackSpeed, Strength, Dexterity, Vitality, LifeRegeneration, MagicFind, GoldFind, ExperienceFixed, ExperiencePercent, CriticalChance, CriticalDamage, FireDamage, FireResistance, IceDamage, IceResistance, LightnintDamage, LightnintResistance, BashDamagePercent, PierceDamagePercent, SlashDamagePercent, BossDamagePercent, RequiredStrengthReduction, RequiredDexterityReduction } enum DungeonAffix { BonusExperiencePercent, BonusGoldPercent, Orbs, BonusFirePercent, BonusIcePercent, BonusLightnintPercent, BonusBashDamagePercent, BonusSlashDamagePercent, BonusPierceDamagePercent } enum MonsterType { Goblin, Slime, Skeleton } }
0.4.18