gargoyle race/body impl from servuo with some modification

This commit is contained in:
Mark Sturgill 2013-11-02 15:37:39 -07:00
parent 1d285f79fa
commit f566daea30
6 changed files with 369 additions and 33 deletions

View file

@ -421,8 +421,6 @@
663 Equipment
664 Equipment
665 Equipment
666 Equipment
667 Equipment
668 Equipment
669 Equipment
670 Equipment
@ -442,10 +440,9 @@
688 Equipment
690 Equipment
691 Equipment
692 Equipment
693 Equipment
694 Equipment
695 Equipment
694 Human
695 Human
696 Equipment
697 Equipment
698 Equipment
@ -456,29 +453,7 @@
703 Equipment
710 Equipment
712 Equipment
713 Equipment
715 Equipment
716 Equipment
720 Equipment
721 Equipment
722 Equipment
723 Equipment
724 Equipment
725 Equipment
726 Equipment
727 Equipment
728 Equipment
729 Equipment
730 Equipment
731 Equipment
732 Equipment
733 Equipment
734 Equipment
735 Equipment
736 Equipment
740 Equipment
742 Equipment
743 Equipment
744 Human
745 Human
746 Monster
@ -547,7 +522,6 @@
820 Equipment
824 Equipment
825 Equipment
826 Equipment
827 Equipment
828 Equipment
846 Equipment
@ -964,3 +938,170 @@
283 Animal # Crow
284 Animal # Mondains Steed
285 Monster # Reaper Form
# Pub 39 Fixes
689 Monster # Time Lord
704 Monster # Shadow Lord
# Pub 52
197 Monster # Order Variant
198 Monster # Chaos Variant
# UOSA Creatures
666 Human # Gargoyle Male
667 Human # Gargoyle Female
713 Monster # Abyssal Infernal
714 Monster # Iron Beetle
715 Monster # Boura
716 Monster # ChickenLizard
717 Monster # Clockwork Scorpion
718 Monster # Faerie Dragon
719 Monster # Wolf Dragon
720 Monster # Lava Elemental
721 Monster # Flayer
722 Monster # Undead Gargoyle
723 Monster # Green Goblin
724 Monster # Gremlin
725 Monster # Humunculous
726 Monster # Kepetch
727 Monster # Shorn Kepetch
728 Monster # Medusa
729 Monster # Mimic
730 Monster # Raptor
732 Monster # RotWorm
733 Monster # Skree
734 Monster # Slith
735 Monster # Female Spider
736 Monster # Male Spider
737 Monster # Trapdoor Spider
738 Monster # Trapdoor Creature
739 Monster # Leather Wolf
293 Monster # Gargoyle Pet
286 Monster # RotWorm Juvenile
287 Monster # BloodWorm
692 Monster # AnimatedWeapon
830 Monster # Primevil Lich
829 Monster # Rising Colosus
741 Monster # Slasher of Veils
826 Monster # Stygian Dragon
740 Monster # Shadow Dweller
742 Monster # Tunnel Spirit Body
743 Monster # Tunnel Spirit Tentacle
334 Monster # Grey Goblin
832 Monster # Phoenix Bird
831 Monster # Parrot Bird
# UOSA Wearables
585 Equipment # Leather_Arms_Female
586 Equipment # Leather_Arms_Male
587 Equipment # Leather_Chest_Female
588 Equipment # Leather_Chest_Male
589 Equipment # Leather_Legs_Female
590 Equipment # Leather_Legs_Male
591 Equipment # Plate_Arms_Female
592 Equipment # Plate_Arms_Male
593 Equipment # Plate_Chest_Female
594 Equipment # Plate_Chest_Male
595 Equipment # Plate_Kilt_Female
596 Equipment # Plate_Kilt_Male
597 Equipment # Plate_Legs_Female
598 Equipment # Plate_Legs_Male
599 Equipment # Stone_Arms_Female
600 Equipment # Armor_Stone_Arms_Male
601 Equipment # Armor_Stone_Chest_Female
602 Equipment # Armor_Stone_Chest_Male
603 Equipment # Armor_Stone_Kilt_Female
604 Equipment # Armor_Stone_Kilt_Male
609 Equipment # Armor_Stone_Legs_Female
610 Equipment # Armor_Stone_Legs_Male
654 Equipment # Clothing_Arms_Female
655 Equipment # Clothing_Arms_Male
656 Equipment # Clothing_Chest_Female
657 Equipment # Clothing_Chest_Male
658 Equipment # Clothing_Kilt_Female
659 Equipment # Clothing_Kilt_Male
660 Equipment # Clothing_Legs_Female
661 Equipment # Clothing_Legs_Male
663 Equipment # Leather_Kilt_Female
664 Equipment # Leather_Kilt_Male
662 Equipment # Axe_Dual_Short
668 Equipment # Sword_Bloodblade
669 Equipment # Boomerang
670 Equipment # Sword_Broadsword
672 Equipment # Glave_Cyclone
673 Equipment # Dagger
674 Equipment # Mace_Disk
675 Equipment # Spear_Dual_Pointed
676 Equipment # Staff_Glass
677 Equipment # Staff_Serpentstone
678 Equipment # Sword_Shortblade
690 Equipment # Sword_Talwar
693 Equipment # Glave_Soul
671 Equipment # Sword_Dread
691 Equipment # Sword_Glass
320 Equipment # FishingPole_Gargoyle
321 Equipment # Lantern_Off_Gargoyle
322 Equipment # Lantern_On_Gargoyle
323 Equipment # Pickaxe_Gargoyle
324 Equipment # Shepards_Crook_Gargoyle
325 Equipment # Smithyhammer_Gargoyle
326 Equipment # Spellbook_BookOfArms_Gargoyle
327 Equipment # Spellbook_Bushido_Gargoyle
328 Equipment # Spellbook_Chivalry_Gargoyle
329 Equipment # Spellbook_Gargoyle
330 Equipment # Spellbook_Necromancy_Gargoyle
331 Equipment # Spellbook_Ninjutsu_Gargoyle
332 Equipment # Spellbook_SpellWeaving_Gargoyle
333 Equipment # Weapon_Wand_Gargoyle_Legacy
335 Equipment # Weapon_Shield_Leather_Medium_Gargoyle_Legacy
336 Equipment # Weapon_Shield_Leather_Small_Gargoyle_Legacy
337 Equipment # Weapon_Shield_Plate_Large_Gargoyle_Legacy
338 Equipment # Weapon_Shield_Plate_Medium_Gargoyle_Legacy
339 Equipment # Weapon_Shield_Plate_Small_Gargoyle_Legacy
340 Equipment # Weapon_Shield_Scale_Large_Gargoyle_Legacy
341 Equipment # Gargoyle Robe_Fancy
342 Equipment # Gargoyle Robe_Regular
343 Equipment # Weapon_Shield_Scale_Chaos_Gargoyle
344 Equipment # Weapon_Shield_Scale_Order_Gargoyle
483 Equipment # Horns_Gargoyle_Male_Legacy
485 Equipment # Horns_Gargoyle_Male_Legacy
843 Equipment # Horns_Gargoyle_Male_Legacy
499 Equipment # Horns_Gargoyle_Male_Legacy
696 Equipment # Horns_Gargoyle_Male_Legacy
697 Equipment # Horns_Gargoyle_Male_Legacy
698 Equipment # Horns_Gargoyle_Male_Legacy
699 Equipment # Horns_Gargoyle_Male_Legacy
769 Equipment # Horns_Gargoyle_Female_Legacy
541 Equipment # Horns_Gargoyle_Female_Legacy
795 Equipment # Horns_Gargoyle_Female_Legacy
632 Equipment # Female gargoyle horns
707 Equipment # Female gargoyle horns
475 Equipment # Female gargoyle horns
647 Equipment # Horns_Facial_Male
650 Equipment # Horns_Facial_Male
652 Equipment # Horns_Facial_Male
665 Equipment # Horns_Facial_Male
547 Equipment # Clothing_Robe_Deathshroud_Gargoyle_Legacy
809 Equipment # Ninja jacket Cloth Female
810 Equipment # Ninja Jacket Leather Feamale
811 Equipment # Shirt Doublet Female
407 Equipment # Tall Straw Hat
708 Equipment # Horns_Gargoyle_Female_Legacy
534 Equipment # Horns_Gargoyle_Female_Legacy
427 Equipment # Human Mysticism Spellbook
428 Equipment # Gargoyle Mysticism Spellbook
705 Equipment # Stone Form
509 Equipment # Horns_Gargoyle_Male
885 Equipment # Gargoyle Ankh Asset - NO ANIMATION - PLACEHOLDER FOR PAPERDOLL
865 Equipment # HUMAN Ankh Asset - NO ANIMATION - PLACEHOLDER FOR PAPERDOLL
510 Equipment # Generic necklace both HUamns and Gargs - NO ANIMATION - PLACEHOLDER FOR PAPERDOLL
436 Equipment # Gargoyle Bracelet - NO ANIMATION - PLACEHOLDER FOR PAPERDOLL
437 Equipment # Gargoyle Earrings - NO ANIMATION - PLACEHOLDER FOR PAPERDOLL
438 Equipment # Gargoyle Ring - NO ANIMATION - PLACEHOLDER FOR PAPERDOLL
439 Equipment # Gargoyle Necklace - NO ANIMATION - PLACEHOLDER FOR PAPERDOLL
432 Equipment # Ethereal Boura Vet Reward
1026 Equipment # Uber Turkey
433 Equipment # Halloween Mask (Paperdoll Only)

View file

@ -15,8 +15,9 @@ namespace Server.Misc
* 4) Changing or removing any predefined races may cause server instability.
*/
RegisterRace( new Human ( 0, 0 ) );
RegisterRace( new Elf ( 1, 1 ) );
RegisterRace( new Human( 0, 0 ) );
RegisterRace( new Elf( 1, 1 ) );
RegisterRace( new Gargoyle( 2, 2 ) );
}
public static void RegisterRace( Race race )
@ -219,5 +220,118 @@ namespace Server.Misc
return m_HairHues[Utility.Random( m_HairHues.Length )];
}
}
#region SA
private class Gargoyle : Race
{
public Gargoyle(int raceID, int raceIndex)
: base(raceID, raceIndex, "Gargoyle", "Gargoyles", 666, 667, 402, 403, Expansion.SA)
{
}
public override bool ValidateHair(bool female, int itemID)
{
if (female == false)
{
return itemID >= 0x4258 && itemID <= 0x425F;
}
else
{
return ((itemID == 0x4261 || itemID == 0x4262) || (itemID >= 0x4273 && itemID <= 0x4275) || (itemID == 0x42B0 || itemID == 0x42B1) || (itemID == 0x42AA || itemID == 0x42AB));
}
}
public override int RandomHair(bool female)
{
if (Utility.Random(9) == 0)
return 0;
else if (!female)
return 0x4258 + Utility.Random(8);
else
{
switch (Utility.Random(9))
{
case 0:
return 0x4261;
case 1:
return 0x4262;
case 2:
return 0x4273;
case 3:
return 0x4274;
case 4:
return 0x4275;
case 5:
return 0x42B0;
case 6:
return 0x42B1;
case 7:
return 0x42AA;
case 8:
return 0x42AB;
}
return 0;
}
}
public override bool ValidateFacialHair(bool female, int itemID)
{
if (female)
return false;
else
return itemID >= 0x42AD && itemID <= 0x42B0;
}
public override int RandomFacialHair(bool female)
{
if (female)
return 0;
else
return Utility.RandomList(0, 0x42AD, 0x42AE, 0x42AF, 0x42B0);
}
// Todo Finish body hues
private static readonly int[] m_BodyHues = new int[]
{
0x86DB, 0x86DC, 0x86DD, 0x86DE,
0x86DF, 0x86E0, 0x86E1, 0x86E2,
0x86E3, 0x86E4, 0x86E5, 0x86E6
// 0x, 0x, 0x, 0x, // 86E7/86E8/86E9/86EA?
// 0x, 0x, 0x, 0x, // 86EB/86EC/86ED/86EE?
// 0x86F3, 0x86DB, 0x86DC, 0x86DD
};
public override int ClipSkinHue(int hue)
{
return hue; // for hue infomation gathering
}
public override int RandomSkinHue()
{
return m_BodyHues[Utility.Random(m_BodyHues.Length)] | 0x8000;
}
private static readonly int[] m_HornHues = new int[]
{
0x709, 0x70B, 0x70D, 0x70F, 0x711, 0x763,
0x765, 0x768, 0x76B, 0x6F3, 0x6F1, 0x6EF,
0x6E4, 0x6E2, 0x6E0, 0x709, 0x70B, 0x70D
};
public override int ClipHairHue(int hue)
{
for (int i = 0; i < m_HornHues.Length; i++)
if (m_HornHues[i] == hue)
return hue;
return m_HornHues[0];
}
public override int RandomHairHue()
{
return m_HornHues[Utility.Random(m_HornHues.Length)];
}
}
#endregion
}
}

View file

@ -106,10 +106,23 @@ namespace Server
&& m_BodyID != 403
&& m_BodyID != 607
&& m_BodyID != 608
&& m_BodyID != 694
&& m_BodyID != 695
&& m_BodyID != 970;
}
}
public bool IsGargoyle
{
get
{
return m_BodyID == 666
|| m_BodyID == 667
|| m_BodyID == 694
|| m_BodyID == 695;
}
}
public bool IsMale
{
get
@ -120,6 +133,8 @@ namespace Server
|| m_BodyID == 402
|| m_BodyID == 605
|| m_BodyID == 607
|| m_BodyID == 666
|| m_BodyID == 694
|| m_BodyID == 750;
}
}
@ -134,6 +149,8 @@ namespace Server
|| m_BodyID == 403
|| m_BodyID == 606
|| m_BodyID == 608
|| m_BodyID == 667
|| m_BodyID == 695
|| m_BodyID == 751;
}
}
@ -146,6 +163,8 @@ namespace Server
|| m_BodyID == 403
|| m_BodyID == 607
|| m_BodyID == 608
|| m_BodyID == 694
|| m_BodyID == 695
|| m_BodyID == 970;
}
}

View file

@ -6231,10 +6231,62 @@ namespace Server
//state.Send( pNew );
//} else {
if( p == null )
p = Packet.Acquire( new MobileAnimation( this, action, frameCount, repeatCount, forward, repeat, delay ) );
if (p == null)
{
#region SA
if (Body.IsGargoyle)
{
frameCount = 10;
state.Send( p );
if (Flying)
{
if (action >= 9 && action <= 11)
{
action = 71;
}
else if (action >= 12 && action <= 14)
{
action = 72;
}
else if (action == 20)
{
action = 77;
}
else if (action == 31)
{
action = 71;
}
else if (action == 34)
{
action = 78;
}
else if (action >= 200 && action <= 259)
{
action = 75;
}
else if (action >= 260 && action <= 270)
{
action = 75;
}
}
else
{
if (action >= 200 && action <= 259)
{
action = 17;
}
else if (action >= 260 && action <= 270)
{
action = 16;
}
}
}
#endregion
p = Packet.Acquire(new MobileAnimation(this, action, frameCount, repeatCount, forward, repeat, delay));
}
state.Send( p );
//}
}
}
@ -7848,6 +7900,10 @@ namespace Server
}
}
public virtual void ToggleFlying()
{
}
[CommandProperty( AccessLevel.GameMaster )]
public bool Warmode
{

View file

@ -170,6 +170,7 @@ namespace Server.Network
RegisterExtended( 0x1C, true, new OnPacketReceive( CastSpell ) );
RegisterExtended( 0x24, false, new OnPacketReceive( UnhandledBF ) );
RegisterExtended( 0x2C, true, new OnPacketReceive( BandageTarget ) );
RegisterExtended( 0x32, true, new OnPacketReceive( ToggleFlying ) );
RegisterEncoded( 0x19, true, new OnEncodedPacketReceive( SetAbility ) );
RegisterEncoded( 0x28, true, new OnEncodedPacketReceive( GuildGumpRequest ) );
@ -1650,6 +1651,10 @@ namespace Server.Network
}
}
public static void ToggleFlying(NetState state, PacketReader pvSrc)
{
state.Mobile.ToggleFlying();
}
public static void BatchQueryProperties( NetState state, PacketReader pvSrc )
{
if ( !ObjectPropertyList.Enabled )

View file

@ -36,6 +36,7 @@ namespace Server
public static Race Human { get { return m_Races[0]; } }
public static Race Elf { get { return m_Races[1]; } }
public static Race Gargoyle { get { return m_Races[2]; } }
private static List<Race> m_AllRaces = new List<Race>();