Skip to content

Commit

Permalink
separate sandals, shoes, boots; add mace, and energy drink
Browse files Browse the repository at this point in the history
  • Loading branch information
malytomas committed Oct 5, 2023
1 parent 8128844 commit 2b1e65c
Show file tree
Hide file tree
Showing 2 changed files with 115 additions and 58 deletions.
170 changes: 113 additions & 57 deletions sources/generateItems.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,18 @@ Skill skillSaberAttack(const Generate &generate)
return sk;
}

Skill skillMaceAttack(const Generate &generate)
{
Skill sk(generate);
sk.targetType = SkillTargetEnum::Position;
sk.range[AttributeEnum::Constant] = 1;
sk.damageAmount[AttributeEnum::Strength] = makeAttrFactor(generate.power, sk.addPower(1, "Strong")) * 1.1;
sk.damageType = DamageTypeEnum::Slash;
sk.cost[AttributeEnum::Stamina] = makeCost(sk, 15);
sk.updateName("Smash");
return sk;
}

Skill skillPikeAttack(const Generate &generate)
{
Skill sk(generate);
Expand Down Expand Up @@ -280,6 +292,23 @@ Item itemSaber(const Generate &generate)
return item;
}

Item itemMace(const Generate &generate)
{
CAGE_ASSERT(generate.slot == SlotEnum::MainHand);
Item item = generateBasicItem(generate);

{
Skill sk = skillMaceAttack(generate);
item.addOther(sk, 1);
item.skills.push_back(std::move(sk));
}

finalizeBasicItem(item);
item.updateName("Mace");
item.icon = "mace";
return item;
}

Item itemPike(const Generate &generate)
{
CAGE_ASSERT(generate.slot == SlotEnum::MainHand);
Expand All @@ -305,10 +334,10 @@ Item itemScythe(const Generate &generate)
{
Skill sk(generate);
sk.radius[AttributeEnum::Constant] = interpolate(1.5, 3.0, sk.addPower(0.9, "Wide"));
sk.damageAmount[AttributeEnum::Strength] = makeAttrFactor(generate.power, sk.addPower(1, "Strong")) * 0.5;
sk.damageAmount[AttributeEnum::Strength] = makeAttrFactor(generate.power, sk.addPower(1, "Strong")) * 0.7;
sk.damageType = DamageTypeEnum::Slash;
sk.cost[AttributeEnum::Stamina] = makeCost(sk, 10);
sk.updateName("Attack");
sk.cost[AttributeEnum::Stamina] = makeCost(sk, 12);
sk.updateName("Reap");
item.addOther(sk, 1);
item.skills.push_back(std::move(sk));
}
Expand Down Expand Up @@ -389,16 +418,33 @@ Item itemShield(const Generate &generate)
return item;
}

Item itemCrystalBall(const Generate &generate)
Item itemTalisman(const Generate &generate)
{
CAGE_ASSERT(generate.slot == SlotEnum::OffHand);
Item item = generateBasicItem(generate);

addBoost<AttributeEnum::Mana>(item);
{
Skill sk = skillGeneric(generate);
item.addOther(sk, 1);
item.skills.push_back(std::move(sk));
}

finalizeBasicItem(item);
item.updateName("CrystalBall");
item.icon = "crystalBall";
item.updateName("Talisman");
item.icon = "talisman";
return item;
}

Item itemEnergyDrink(const Generate &generate)
{
CAGE_ASSERT(generate.slot == SlotEnum::OffHand);
Item item = generateBasicItem(generate);

addBoost<AttributeEnum::Stamina>(item);

finalizeBasicItem(item);
item.updateName("Energy Drink");
item.icon = "energyDrink";
return item;
}

Expand Down Expand Up @@ -436,20 +482,16 @@ Item itemScroll(const Generate &generate)
return item;
}

Item itemTalisman(const Generate &generate)
Item itemCrystalBall(const Generate &generate)
{
CAGE_ASSERT(generate.slot == SlotEnum::OffHand);
Item item = generateBasicItem(generate);

{
Skill sk = skillGeneric(generate);
item.addOther(sk, 1);
item.skills.push_back(std::move(sk));
}
addBoost<AttributeEnum::Mana>(item);

finalizeBasicItem(item);
item.updateName("Talisman");
item.icon = "talisman";
item.updateName("Crystal Ball");
item.icon = "crystalBall";
return item;
}

Expand Down Expand Up @@ -538,6 +580,28 @@ Item itemCape(const Generate &generate)
return item;
}

Item itemRestoringTattoos(const Generate &generate)
{
CAGE_ASSERT(generate.slot == SlotEnum::Body);
Item item(generate); // no generateBasicItem -> no stats

{
Skill sk(generate);
sk.caster.attributes[AttributeEnum::Stamina][AttributeEnum::Constitution] = makeAttrFactor(generate.power, sk.addPower(1, "Refreshing")) * 0.15;
sk.caster.attributes[AttributeEnum::Mana][AttributeEnum::Willpower] = makeAttrFactor(generate.power, sk.addPower(1, "Energizing")) * 0.15;
sk.caster.attributes[AttributeEnum::Stamina][AttributeEnum::Constant] = interpolate(1.0, 2.0, sk.addPower(0.5));
sk.caster.attributes[AttributeEnum::Mana][AttributeEnum::Constant] = interpolate(1.0, 2.0, sk.addPower(0.5));
sk.flags.passive = true;
sk.updateName("Glow");
item.addOther(sk, 1);
item.skills.push_back(std::move(sk));
}

item.updateName("Tattoos");
item.icon = "tattoos";
return item;
}

Item itemHelmet(const Generate &generate)
{
CAGE_ASSERT(generate.slot == SlotEnum::Head);
Expand Down Expand Up @@ -585,36 +649,11 @@ Item itemProtectiveTattoos(const Generate &generate)
return item;
}

Item itemRestoringTattoos(const Generate &generate)
{
CAGE_ASSERT(generate.slot == SlotEnum::Body);
Item item(generate); // no generateBasicItem -> no stats

{
Skill sk(generate);
sk.caster.attributes[AttributeEnum::Stamina][AttributeEnum::Constitution] = makeAttrFactor(generate.power, sk.addPower(1, "Refreshing")) * 0.15;
sk.caster.attributes[AttributeEnum::Mana][AttributeEnum::Willpower] = makeAttrFactor(generate.power, sk.addPower(1, "Energizing")) * 0.15;
sk.caster.attributes[AttributeEnum::Stamina][AttributeEnum::Constant] = interpolate(1.0, 2.0, sk.addPower(0.5));
sk.caster.attributes[AttributeEnum::Mana][AttributeEnum::Constant] = interpolate(1.0, 2.0, sk.addPower(0.5));
sk.flags.passive = true;
sk.updateName("Glow");
item.addOther(sk, 1);
item.skills.push_back(std::move(sk));
}

item.updateName("Tattoos");
item.icon = "tattoos";
return item;
}

Item itemBoots(const Generate &generate)
Item itemSandals(const Generate &generate)
{
CAGE_ASSERT(generate.slot == SlotEnum::Legs);
Item item = generateBasicItem(generate);

makeBoost(item);

if (randomChance() < 0.7)
{
Skill sk(generate);
sk.targetType = SkillTargetEnum::Position;
Expand All @@ -626,7 +665,18 @@ Item itemBoots(const Generate &generate)
item.addOther(sk, 0.6);
item.skills.push_back(std::move(sk));
}
else

finalizeBasicItem(item);
item.updateName("Sandals");
item.icon = "sandals";
return item;
}

Item itemShoes(const Generate &generate)
{
CAGE_ASSERT(generate.slot == SlotEnum::Legs);
Item item = generateBasicItem(generate);

{
Skill sk(generate);
sk.targetType = SkillTargetEnum::Position;
Expand All @@ -641,19 +691,21 @@ Item itemBoots(const Generate &generate)
}

finalizeBasicItem(item);
switch (randomRange(0, 2))
{
case 0:
item.updateName("Boots");
item.icon = "boots";
break;
case 1:
item.updateName("Shoes");
item.icon = "shoes";
break;
default:
CAGE_THROW_CRITICAL(Exception, "random out of range");
}
item.updateName("Shoes");
item.icon = "shoes";
return item;
}

Item itemBoots(const Generate &generate)
{
CAGE_ASSERT(generate.slot == SlotEnum::Legs);
Item item = generateBasicItem(generate);

makeBoost(item);

finalizeBasicItem(item);
item.updateName("Boots");
item.icon = "boots";
return item;
}

Expand Down Expand Up @@ -764,15 +816,17 @@ Item itemGeneric(const Generate &generate)

candidates.add(0, 0, 0, 0, SlotEnum::MainHand, { LevelSlash }, itemSword);
candidates.add(0, 0, 0, 0, SlotEnum::MainHand, { LevelSlash }, itemSaber);
candidates.add(0, 0, 0, 0, SlotEnum::MainHand, { LevelSlash, LevelAoe }, itemMace);
candidates.add(0, 0, 0, 0, SlotEnum::MainHand, { LevelPierce }, itemPike);
candidates.add(0, 0, 0, 0, SlotEnum::MainHand, { LevelSlash, LevelAoe }, itemScythe);
candidates.add(0, 1, 0, 0, SlotEnum::MainHand, { LevelPierce }, itemBow);
candidates.add(1, 0, 0, 0, SlotEnum::MainHand, { LevelMagic }, itemStaff);
candidates.add(1, 0, 0, 0, SlotEnum::MainHand, { Nothing }, itemStaff);
candidates.add(1, 1, 0, 0, SlotEnum::MainHand, { Nothing }, itemWand);

candidates.add(0, 0, 0, 0, SlotEnum::OffHand, { Nothing }, itemDagger);
candidates.add(0, H, 1, 0, SlotEnum::OffHand, { Nothing }, itemShield);
candidates.add(0, H, 1, 0, SlotEnum::OffHand, { Nothing }, itemTalisman);
candidates.add(0, H, 1, 0, SlotEnum::OffHand, { Nothing }, itemEnergyDrink);
candidates.add(1, 1, 0, 0, SlotEnum::OffHand, { Nothing }, itemWand);
candidates.add(1, 0, 1, 0, SlotEnum::OffHand, { Nothing }, itemScroll);
candidates.add(1, 1, 0, 0, SlotEnum::OffHand, { Nothing }, itemCrystalBall);
Expand All @@ -787,7 +841,9 @@ Item itemGeneric(const Generate &generate)
candidates.add(1, H, 0, 0, SlotEnum::Head, { Nothing }, itemCirclet);
candidates.add(1, H, 1, 0, SlotEnum::Head, { Nothing }, itemProtectiveTattoos);

candidates.add(0, 0, 0, 0, SlotEnum::Legs, { Nothing }, itemBoots);
candidates.add(0, 0, 0, 0, SlotEnum::Legs, { Nothing }, itemSandals);
candidates.add(0, 1, 0, 0, SlotEnum::Legs, { Nothing }, itemShoes);
candidates.add(0, 0, 1, 0, SlotEnum::Legs, { Nothing }, itemBoots);

candidates.add(0, 0, 0, 0, SlotEnum::Neck, { Nothing }, itemAmulet);
candidates.add(0, 0, 1, 0, SlotEnum::Neck, { Nothing }, itemPendant);
Expand Down
3 changes: 2 additions & 1 deletion sources/generateMonsters.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ Item itemGeneric(const Generate &generate);
Item itemSprayCan();
Skill skillSwordAttack(const Generate &generate);
Skill skillSaberAttack(const Generate &generate);
Skill skillMaceAttack(const Generate &generate);
Skill skillPikeAttack(const Generate &generate);
Skill skillBowAttack(const Generate &generate);
Skill skillStomp(const Generate &generate);
Expand Down Expand Up @@ -200,7 +201,7 @@ Monster monsterOgre(const Generate &generate)
it.icon = "mace";

{
Skill sk = skillSwordAttack(generate);
Skill sk = skillMaceAttack(generate);
sk.range[AttributeEnum::Constant] = 2;
sk.cost.clear();
it.addOther(sk, 1);
Expand Down

0 comments on commit 2b1e65c

Please sign in to comment.