static void CreateAttackSkills() { EffectSec effect1; // make the Slash Attack affix file effect1 = new EffectSec("dynamic", "damage", 40, 80); effect1.duration = "instant"; effect1.statModifyName = "melee"; effect1.statModifyPercent = "100"; CreateSkillAffix("WhirlingGust", new EffectSec[] { effect1 }); // prepare the Slash Attack skill file SkillFile skill = new SkillFile("WhirlingGust", "warrior/whirlinggust/"); skill.name = "Whirling Gust"; skill.displayName = "Slash Attack"; skill.description = "Attacks all foes in front of you\\nwith all equipped weapons\\n"; skill.skillIconActive = "skill_slash"; skill.skillIconInactive = "skill_slash_gray"; skill.animation = "Special_Cleave"; skill.animationDW = "Special_DWCleave"; skill.range = 2; skill.requirementRight = "melee"; skill.requirementLeft = "melee"; skill.maxInvestLevel = 100; skill.uniqueGUID = 7711097244085326302; CreateSkillLevels(skill, "WhirlingGust", "media/skills/warrior/whirlinggust/whirlinggust.layout", true); skill.Create(); }
static void CreatePassiveSkills() { EffectSec effect1, effect2, effect3; SkillFile skill; // make Adventurer affix effect1 = new EffectSec("passive", "xp gain bonus", 200, 200); effect1.name = "XPGAIN"; effect1.duration = "always"; effect1.graphOverride = "linear_graph"; effect2 = new EffectSec("passive", "fame gain bonus", 200, 200); effect2.name = "FAMEGAIN"; effect2.duration = "always"; effect2.graphOverride = "linear_graph"; effect3 = new EffectSec("passive", "potion efficiency", 100, 100); effect3.name = "POTIONEFF"; effect3.duration = "always"; effect3.graphOverride = "mastery_graph"; CreateSkillAffix("skill_adventurer_mastery", new EffectSec[] { effect1, effect2, effect3 }); // make Adventurer skill skill = new SkillFile("Adventurer", "shared/passives/"); skill.displayName = skill.name; skill.description = "Improves the potency of potions, increases the rate of Experience and Fame gain, " + "and reduces resurrection penalties"; }
static void CreateSkillLevels(SkillFile skill, string affixName, string layoutFile, bool isAttack) { LevelSec levelSec; // mana cost progression by skill level double manaCost = 2; double manaInc1 = 1; double manaInc2 = 0; double manaInc3 = 0.1; double manaInc4 = 0.005; // level requirement progression by skill level int levelReq = 1; int levelReqInc = 1; // affix level progression by skill level double affixLevel = 1; double affixLevelInc = 2; double affixLevelInc2 = 0.106; if (!isAttack) { affixLevelInc = 1; affixLevelInc2 = 0; } // add all the skill levels for (int skillLvl = 1; skillLvl <= 120; ++skillLvl) { // prepare all the needed sections if (isAttack) { levelSec = new LevelSec(skillLvl, (int)(manaCost + 0.5), levelReq); } else { levelSec = new LevelSec(skillLvl, 0, levelReq); } if (skillLvl > 100) { levelSec.levelRequired = 0; } EventSec eventSec = new EventSec(EventSec.EVENT_TRIGGER, layoutFile); AffixesSec affixesSec = new AffixesSec(affixName); affixesSec.affixLevel = (int)(affixLevel + 0.5); // add the sections in the proper order eventSec.AddAffixes(affixesSec); levelSec.AddEvent(eventSec); skill.AddLevel(levelSec); // increase mana cost manaInc3 += manaInc4; manaInc2 += manaInc3; manaInc1 += manaInc2; manaCost += manaInc1; // increase level requirements if (skillLvl % 10 == 0) { ++levelReqInc; } levelReq += levelReqInc; // increase affix level affixLevelInc += affixLevelInc2; affixLevel += affixLevelInc; } }