Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: Fixes all summon spells so they use Summoned variation of monster #2106

Merged
merged 31 commits into from
Feb 4, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
7c1fa55
Update Daemon.cs
Bohicatv Feb 3, 2025
9eec379
Update SummonedDaemon.cs
Bohicatv Feb 3, 2025
66e3ece
Update SummonedAirElemental.cs
Bohicatv Feb 3, 2025
983a1ed
Update SummonedDaemon.cs
Bohicatv Feb 3, 2025
6480614
Update SummonedEarthElemental.cs
Bohicatv Feb 3, 2025
a163568
Update SummonedFireElemental.cs
Bohicatv Feb 3, 2025
ffafd78
Update SummonedWaterElemental.cs
Bohicatv Feb 3, 2025
5cfc7e2
Update BladeSpirits.cs
Bohicatv Feb 3, 2025
86c8f21
Update AirElemental.cs
Bohicatv Feb 3, 2025
ee864cd
Update SummonedAirElemental.cs
Bohicatv Feb 3, 2025
2beb7da
Revert timespan
Bohicatv Feb 3, 2025
4174474
Remove ControlSlots and Dispel properties from AirElemental class
Bohicatv Feb 3, 2025
04dd05f
Enhance SummonedAirElemental stats and skills for AOS compatibility
Bohicatv Feb 3, 2025
e8b8fd1
Remove Fame and Karma properties from SummonedAirElemental class
Bohicatv Feb 3, 2025
6181eb8
Simplify FireElemental summoning logic for AOS compatibility
Bohicatv Feb 3, 2025
32ab2a4
Enhance SummonedFireElemental stats and skills for AOS compatibility
Bohicatv Feb 3, 2025
67dfe1c
Remove DispelDifficulty and DispelFocus properties from FireElemental…
Bohicatv Feb 3, 2025
f7a7158
Remove ControlSlots property from FireElemental class
Bohicatv Feb 3, 2025
7ee908a
Simplify EarthElemental summoning logic for AOS compatibility
Bohicatv Feb 3, 2025
95f1df7
Enhance SummonedEarthElemental stats and skills for AOS compatibility
Bohicatv Feb 3, 2025
4b6af1e
Remove ControlSlots, DispelDifficulty, and DispelFocus properties fro…
Bohicatv Feb 3, 2025
a91ce66
Remove ControlSlots, DispelDifficulty, and DispelFocus properties fro…
Bohicatv Feb 3, 2025
179af0f
Enhance SummonedWaterElemental stats and skills for AOS compatibility
Bohicatv Feb 3, 2025
1e44112
Refactor WaterElemental summoning logic for AOS compatibility
Bohicatv Feb 3, 2025
7561a33
Simplify daemon summoning logic by removing AOS condition for Summone…
Bohicatv Feb 3, 2025
ee70992
Refactor SummonedDaemon stats and skills for AOS compatibility
Bohicatv Feb 3, 2025
3b2e954
Add missing properties to Daemon class for enhanced functionality
Bohicatv Feb 3, 2025
614715e
Add DeleteCorpseOnDeath property to SummonedAirElemental for improved…
Bohicatv Feb 3, 2025
5acc210
Add DeleteCorpseOnDeath property to SummonedFireElemental for improve…
Bohicatv Feb 3, 2025
d7b9bca
Add DeleteCorpseOnDeath property to SummonedEarthElemental for improv…
Bohicatv Feb 3, 2025
4d26550
Add DeleteCorpseOnDeath property to SummonedWaterElemental for improv…
Bohicatv Feb 3, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,9 @@ public AirElemental() : base(AIType.AI_Mage)
Karma = -4500;

VirtualArmor = 40;
ControlSlots = 2;
}

public override string CorpseName => "an air elemental corpse";
public override double DispelDifficulty => 117.5;
public override double DispelFocus => 45.0;

public override string DefaultName => "an air elemental";

public override bool BleedImmune => true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,20 +39,17 @@ public FireElemental() : base(AIType.AI_Mage)
Karma = -4500;

VirtualArmor = 40;
ControlSlots = 4;

PackItem(new SulfurousAsh(3));

AddItem(new LightSource());
}

public override string CorpseName => "a fire elemental corpse";
public override double DispelDifficulty => 117.5;
public override double DispelFocus => 45.0;

public override string DefaultName => "a fire elemental";

public override bool BleedImmune => true;

public override int TreasureMapLevel => 2;

public override void GenerateLoot()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,16 +38,13 @@ public WaterElemental() : base(AIType.AI_Mage)
Karma = -4500;

VirtualArmor = 40;
ControlSlots = 3;

CanSwim = true;

PackItem(new BlackPearl(3));
}

public override string CorpseName => "a water elemental corpse";
public override double DispelDifficulty => 117.5;
public override double DispelFocus => 45.0;

public override string DefaultName => "a water elemental";

public override bool BleedImmune => true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ public EarthElemental() : base(AIType.AI_Melee)
Karma = -3500;

VirtualArmor = 34;
ControlSlots = 2;

PackItem(new FertileDirt(Utility.RandomMinMax(1, 4)));
PackItem(new MandrakeRoot());
Expand All @@ -47,9 +46,6 @@ public EarthElemental() : base(AIType.AI_Melee)
}

public override string CorpseName => "an earth elemental corpse";
public override double DispelDifficulty => 117.5;
public override double DispelFocus => 45.0;

public override string DefaultName => "an earth elemental";

public override bool BleedImmune => true;
Expand Down
7 changes: 4 additions & 3 deletions Projects/UOContent/Mobiles/Monsters/Humanoid/Magic/Daemon.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,20 +40,21 @@ public Daemon() : base(AIType.AI_Mage)
Karma = -15000;

VirtualArmor = 58;
ControlSlots = Core.SE ? 4 : 5;
}

public override string CorpseName => "a daemon corpse";
public override double DispelDifficulty => 125.0;
public override double DispelFocus => 45.0;

public override Faction FactionAllegiance => Shadowlords.Instance;
public override Ethic EthicAllegiance => Ethic.Evil;

public override bool CanRummageCorpses => true;

public override Poison PoisonImmune => Poison.Regular;

public override int TreasureMapLevel => 4;

public override int Meat => 1;

public override bool CanFly => true;

public override void GenerateLoot()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,14 +44,14 @@ public BladeSpirits() : base(AIType.AI_Melee)
}

public override string CorpseName => "a blade spirit corpse";
public override string DefaultName => "a blade spirit";

public override bool DeleteCorpseOnDeath => Core.AOS;
public override bool IsHouseSummonable => true;

public override double DispelDifficulty => 0.0;
public override double DispelFocus => 20.0;

public override string DefaultName => "a blade spirit";

public override bool BleedImmune => true;
public override Poison PoisonImmune => Poison.Lethal;

Expand Down
75 changes: 55 additions & 20 deletions Projects/UOContent/Mobiles/Monsters/Summons/SummonedAirElemental.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System;
using ModernUO.Serialization;

namespace Server.Mobiles
Expand All @@ -12,39 +13,73 @@ public SummonedAirElemental() : base(AIType.AI_Mage)
Hue = 0x4001;
BaseSoundID = 655;

SetStr(200);
SetDex(200);
SetInt(100);
if (Core.AOS)
{
SetStr(200);
SetDex(200);
SetInt(100);

SetHits(150);
SetStam(50);

SetDamage(6, 9);

SetDamageType(ResistanceType.Physical, 50);
SetDamageType(ResistanceType.Energy, 50);

SetHits(150);
SetStam(50);
SetResistance(ResistanceType.Physical, 40, 50);
SetResistance(ResistanceType.Fire, 30, 40);
SetResistance(ResistanceType.Cold, 35, 45);
SetResistance(ResistanceType.Poison, 50, 60);
SetResistance(ResistanceType.Energy, 70, 80);

SetSkill(SkillName.Meditation, 90.0);
SetSkill(SkillName.EvalInt, 70.0);
SetSkill(SkillName.Magery, 70.0);
SetSkill(SkillName.MagicResist, 60.0);
SetSkill(SkillName.Tactics, 100.0);
SetSkill(SkillName.Wrestling, 80.0);
}
else
{
SetStr(126, 155);
SetDex(166, 185);
SetInt(101, 125);

SetDamage(6, 9);
SetHits(76, 93);

SetDamageType(ResistanceType.Physical, 50);
SetDamageType(ResistanceType.Energy, 50);
SetDamage(8, 10);

SetResistance(ResistanceType.Physical, 40, 50);
SetResistance(ResistanceType.Fire, 30, 40);
SetResistance(ResistanceType.Cold, 35, 45);
SetResistance(ResistanceType.Poison, 50, 60);
SetResistance(ResistanceType.Energy, 70, 80);
SetDamageType(ResistanceType.Physical, 20);
SetDamageType(ResistanceType.Cold, 40);
SetDamageType(ResistanceType.Energy, 40);

SetSkill(SkillName.Meditation, 90.0);
SetSkill(SkillName.EvalInt, 70.0);
SetSkill(SkillName.Magery, 70.0);
SetSkill(SkillName.MagicResist, 60.0);
SetSkill(SkillName.Tactics, 100.0);
SetSkill(SkillName.Wrestling, 80.0);
SetResistance(ResistanceType.Physical, 35, 45);
SetResistance(ResistanceType.Fire, 15, 25);
SetResistance(ResistanceType.Cold, 10, 20);
SetResistance(ResistanceType.Poison, 10, 20);
SetResistance(ResistanceType.Energy, 25, 35);

SetSkill(SkillName.EvalInt, 60.1, 75.0);
SetSkill(SkillName.Magery, 60.1, 75.0);
SetSkill(SkillName.MagicResist, 60.1, 75.0);
SetSkill(SkillName.Tactics, 60.1, 80.0);
SetSkill(SkillName.Wrestling, 60.1, 80.0);
}

VirtualArmor = 40;
ControlSlots = 2;
}

public override bool DeleteCorpseOnDeath => Summoned;

public override string CorpseName => "an air elemental corpse";
public override string DefaultName => "an air elemental";

public override bool BleedImmune => true;

public override double DispelDifficulty => 117.5;
public override double DispelFocus => 45.0;
public override string DefaultName => "an air elemental";

[AfterDeserialization]
private void AfterDeserialization()
Expand Down
68 changes: 49 additions & 19 deletions Projects/UOContent/Mobiles/Monsters/Summons/SummonedDaemon.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,37 +12,67 @@ public SummonedDaemon() : base(AIType.AI_Mage)
Body = Core.AOS ? 10 : 9;
BaseSoundID = 357;

SetStr(200);
SetDex(110);
SetInt(150);
if (Core.AOS)
{
SetStr(200);
SetDex(110);
SetInt(150);

SetDamage(14, 21);
SetDamage(14, 21);

SetDamageType(ResistanceType.Physical, 0);
SetDamageType(ResistanceType.Poison, 100);
SetDamageType(ResistanceType.Physical, 0);
SetDamageType(ResistanceType.Poison, 100);

SetResistance(ResistanceType.Physical, 45, 55);
SetResistance(ResistanceType.Fire, 50, 60);
SetResistance(ResistanceType.Cold, 20, 30);
SetResistance(ResistanceType.Poison, 70, 80);
SetResistance(ResistanceType.Energy, 40, 50);
SetResistance(ResistanceType.Physical, 45, 55);
SetResistance(ResistanceType.Fire, 50, 60);
SetResistance(ResistanceType.Cold, 20, 30);
SetResistance(ResistanceType.Poison, 70, 80);
SetResistance(ResistanceType.Energy, 40, 50);

SetSkill(SkillName.EvalInt, 90.1, 100.0);
SetSkill(SkillName.Meditation, 90.1, 100.0);
SetSkill(SkillName.Magery, 90.1, 100.0);
SetSkill(SkillName.MagicResist, 90.1, 100.0);
SetSkill(SkillName.Tactics, 100.0);
SetSkill(SkillName.Wrestling, 98.1, 99.0);
SetSkill(SkillName.EvalInt, 90.1, 100.0);
SetSkill(SkillName.Meditation, 90.1, 100.0);
SetSkill(SkillName.Magery, 90.1, 100.0);
SetSkill(SkillName.MagicResist, 90.1, 100.0);
SetSkill(SkillName.Tactics, 100.0);
SetSkill(SkillName.Wrestling, 98.1, 99.0);
}
else
{
SetStr(476, 505);
SetDex(76, 95);
SetInt(301, 325);

SetHits(286, 303);

SetDamage(7, 14);

SetDamageType(ResistanceType.Physical, 100);

SetResistance(ResistanceType.Physical, 45, 60);
SetResistance(ResistanceType.Fire, 50, 60);
SetResistance(ResistanceType.Cold, 30, 40);
SetResistance(ResistanceType.Poison, 20, 30);
SetResistance(ResistanceType.Energy, 30, 40);

SetSkill(SkillName.EvalInt, 70.1, 80.0);
SetSkill(SkillName.Magery, 70.1, 80.0);
SetSkill(SkillName.MagicResist, 85.1, 95.0);
SetSkill(SkillName.Tactics, 70.1, 80.0);
SetSkill(SkillName.Wrestling, 60.1, 80.0);
}

VirtualArmor = 58;

ControlSlots = Core.SE ? 4 : 5;
}


public override bool DeleteCorpseOnDeath => Summoned;
public override string CorpseName => "a daemon corpse";

public override double DispelDifficulty => 125.0;
public override double DispelFocus => 45.0;

public override Poison PoisonImmune => Poison.Regular; // TODO: Immune to poison?
public override Poison PoisonImmune => Poison.Regular;
public override bool CanFly => true;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,33 +11,63 @@ public SummonedEarthElemental() : base(AIType.AI_Melee)
Body = 14;
BaseSoundID = 268;

SetStr(200);
SetDex(70);
SetInt(70);
if (Core.AOS)
{
SetStr(200);
SetDex(70);
SetInt(70);

SetHits(180);
SetHits(180);

SetDamage(14, 21);
SetDamage(14, 21);

SetDamageType(ResistanceType.Physical, 100);
SetDamageType(ResistanceType.Physical, 100);

SetResistance(ResistanceType.Physical, 65, 75);
SetResistance(ResistanceType.Fire, 40, 50);
SetResistance(ResistanceType.Cold, 40, 50);
SetResistance(ResistanceType.Poison, 40, 50);
SetResistance(ResistanceType.Energy, 40, 50);
SetResistance(ResistanceType.Physical, 65, 75);
SetResistance(ResistanceType.Fire, 40, 50);
SetResistance(ResistanceType.Cold, 40, 50);
SetResistance(ResistanceType.Poison, 40, 50);
SetResistance(ResistanceType.Energy, 40, 50);

SetSkill(SkillName.MagicResist, 65.0);
SetSkill(SkillName.Tactics, 100.0);
SetSkill(SkillName.Wrestling, 90.0);
SetSkill(SkillName.MagicResist, 65.0);
SetSkill(SkillName.Tactics, 100.0);
SetSkill(SkillName.Wrestling, 90.0);
}
else
{
SetStr(126, 155);
SetDex(66, 85);
SetInt(71, 92);

SetHits(76, 93);

SetDamage(9, 16);

SetDamageType(ResistanceType.Physical, 100);

SetResistance(ResistanceType.Physical, 30, 35);
SetResistance(ResistanceType.Fire, 10, 20);
SetResistance(ResistanceType.Cold, 10, 20);
SetResistance(ResistanceType.Poison, 15, 25);
SetResistance(ResistanceType.Energy, 15, 25);

SetSkill(SkillName.MagicResist, 50.1, 95.0);
SetSkill(SkillName.Tactics, 60.1, 100.0);
SetSkill(SkillName.Wrestling, 60.1, 100.0);
}

VirtualArmor = 34;
ControlSlots = 2;
}

public override bool DeleteCorpseOnDeath => Summoned;

public override string CorpseName => "an earth elemental corpse";
public override string DefaultName => "an earth elemental";

public override bool BleedImmune => true;

public override double DispelDifficulty => 117.5;
public override double DispelFocus => 45.0;
public override string DefaultName => "an earth elemental";
}
}
Loading
Loading