pragma solidity ^0.4.18; contract DamageCalculator { 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 canFinishDungeon(uint keyId) external returns (bool) { Monster[] memory mobs = new Monster[](3); // get dungeon from key // get hero from key // get gear from key // spawn all of the monsters (this would normally come from the dungeon bits) mobs[0] = spawn(1, 3, 1); return true; } function spawn(uint32 monsterId, uint32 mobSize, uint8 level) internal returns (Monster) { Monster memory m; m.id = monsterId; m.mobSize = mobSize; m.level = level; if (monsterId == 1) { createGoblins(m); } else if (monsterId == 2) { createSkeletons(m); } else if (monsterId == 3) { createSlimes(m); } return m; } function createGoblins(Monster m) internal { m.monsterType = GameEngine.MonsterType.Goblin; } function createSkeletons(Monster m) internal { m.monsterType = GameEngine.MonsterType.Skeleton; } function createSlimes(Monster m) internal { m.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