From 97f59381215cd25dfefe1a11fb80c28ae2d410a5 Mon Sep 17 00:00:00 2001 From: Dragon Slayer <85514184+DragonSlayer62@users.noreply.github.com> Date: Mon, 30 Oct 2023 19:19:20 -0500 Subject: [PATCH 1/9] UOR Weapon Abilities --- .../gear/weapons/weapons_lbr/fencing_lbr.dfn | 11 ++ .../weapons/weapons_lbr/maces_hammers_lbr.dfn | 6 + .../weapons_lbr/staves_polearms_lbr.dfn | 3 + .../gear/weapons/weapons_lbr/swords_lbr.dfn | 5 + .../js/item/equip_effects/weapon_abilities.js | 112 ++++++++++++++++++ data/js/jse_fileassociations.scp | 1 + 6 files changed, 138 insertions(+) create mode 100644 data/js/item/equip_effects/weapon_abilities.js diff --git a/data/dfndata/items/gear/weapons/weapons_lbr/fencing_lbr.dfn b/data/dfndata/items/gear/weapons/weapons_lbr/fencing_lbr.dfn index 9735ff512..b43c72665 100644 --- a/data/dfndata/items/gear/weapons/weapons_lbr/fencing_lbr.dfn +++ b/data/dfndata/items/gear/weapons/weapons_lbr/fencing_lbr.dfn @@ -14,6 +14,7 @@ damage=2 36 hp=31 80 spd=46 str=30 +script=5050//weapon_abilties.js } // Tribal Spear - LBR stats (default) @@ -26,6 +27,7 @@ damage=4 40 hp=31 80 spd=46 str=30 +script=5050//weapon_abilties.js } // Kryss - LBR stats (default) @@ -74,6 +76,7 @@ damage=4 16 hp=31 60 spd=45 str=15 +script=5050//weapon_abilties.js } // Age of Shadows @@ -88,6 +91,7 @@ damage=4 28 hp=31 110 spd=37 str=20 +script=5050//weapon_abilties.js } // Lance - LBR stats (default) @@ -114,6 +118,7 @@ damage=4 32 hp=90 95 spd=32 str=30 +script=5050//weapon_abilties.js } // Tekagi - LBR stats (default) @@ -138,6 +143,7 @@ damage=3 22 hp=35 60 spd=56 str=10 +script=5050//weapon_abilties.js } // Sai - LBR stats (default) @@ -150,6 +156,7 @@ damage=3 22 hp=55 60 spd=56 str=10 +script=5050//weapon_abilties.js } //------------------------------------------------------------------------------------------------// @@ -165,6 +172,7 @@ damage=3 22 hp=30 60 spd=50 str=10 +script=5050//weapon_abilties.js } // Elven Spellblade - LBR stats (default) @@ -252,6 +260,7 @@ damage=4 28 hp=31 110 spd=37 str=20 +script=5050//weapon_abilties.js } // Dual Pointed Spear - LBR stats (default) @@ -264,6 +273,7 @@ damage=3 23 hp=31 80 spd=50 str=20 +script=5050//weapon_abilties.js } // Gargish Tekagi - LBR stats (default) @@ -276,6 +286,7 @@ damage=3 22 hp=35 60 spd=56 str=5 +script=5050//weapon_abilties.js } //------------------------------------------------------------------------------------------------// diff --git a/data/dfndata/items/gear/weapons/weapons_lbr/maces_hammers_lbr.dfn b/data/dfndata/items/gear/weapons/weapons_lbr/maces_hammers_lbr.dfn index 52611bd94..7b08266d2 100644 --- a/data/dfndata/items/gear/weapons/weapons_lbr/maces_hammers_lbr.dfn +++ b/data/dfndata/items/gear/weapons/weapons_lbr/maces_hammers_lbr.dfn @@ -86,6 +86,7 @@ damage=8 36 hp=31 110 spd=31 str=40 +script=5050//weapon_abilties.js } // Maul - LBR stats (default) @@ -141,6 +142,7 @@ damage=6 23 hp=55 60 spd=54 str=25 +script=5050//weapon_abilties.js } // Tetsubo - LBR stats (default) @@ -153,6 +155,7 @@ damage=7 27 hp=60 65 spd=43 str=25 +script=5050//weapon_abilties.js } // Nunchaku - LBR stats (default) @@ -165,6 +168,7 @@ damage=7 27 hp=40 55 spd=43 str=15 +script=5050//weapon_abilties.js } //------------------------------------------------------------------------------------------------// @@ -219,6 +223,7 @@ spd=31 str=40 value=27 13 weight=1000 +script=5050//weapon_abilties.js } // Gargish Tessen - LBR stats (default) @@ -231,6 +236,7 @@ spd=54 str=25 value=124 68 weight=500 +script=5050//weapon_abilties.js } //------------------------------------------------------------------------------------------------// diff --git a/data/dfndata/items/gear/weapons/weapons_lbr/staves_polearms_lbr.dfn b/data/dfndata/items/gear/weapons/weapons_lbr/staves_polearms_lbr.dfn index f3614c9d8..5d571f222 100644 --- a/data/dfndata/items/gear/weapons/weapons_lbr/staves_polearms_lbr.dfn +++ b/data/dfndata/items/gear/weapons/weapons_lbr/staves_polearms_lbr.dfn @@ -86,6 +86,7 @@ damage=5 43 hp=31 100 spd=26 str=40 +script=5050//weapon_abilties.js } // Age of Shadows @@ -100,6 +101,7 @@ damage=5 35 hp=31 105 spd=31 str=40 +script=5050//weapon_abilties.js } // Bladed Staff - LBR stats (default) @@ -112,6 +114,7 @@ damage=4 31 hp=21 115 spd=36 str=35 +script=5050//weapon_abilties.js } // Double Bladed Staff - LBR stats (default) diff --git a/data/dfndata/items/gear/weapons/weapons_lbr/swords_lbr.dfn b/data/dfndata/items/gear/weapons/weapons_lbr/swords_lbr.dfn index 2bf850b30..c0d78e360 100644 --- a/data/dfndata/items/gear/weapons/weapons_lbr/swords_lbr.dfn +++ b/data/dfndata/items/gear/weapons/weapons_lbr/swords_lbr.dfn @@ -124,6 +124,7 @@ damage=6 44 hp=36 50 spd=22 str=70 +script=5050//weapon_abilties.js } // Samurai Empire @@ -138,6 +139,7 @@ damage=5 35 hp=31 95 spd=31 str=35 +script=5050//weapon_abilties.js } // Wakizashi - LBR stats (default) @@ -174,6 +176,7 @@ damage=4 29 hp=45 70 spd=39 str=35 +script=5050//weapon_abilties.js } //------------------------------------------------------------------------------------------------// @@ -214,6 +217,7 @@ spd=36 str=25 value=49 25 weight=700 +script=5050//weapon_abilties.js } //------------------------------------------------------------------------------------------------// @@ -325,6 +329,7 @@ spd=39 str=35 value=74 41 weight=800 +script=5050//weapon_abilties.js } //------------------------------------------------------------------------------------------------// diff --git a/data/js/item/equip_effects/weapon_abilities.js b/data/js/item/equip_effects/weapon_abilities.js new file mode 100644 index 000000000..46bf5fdd1 --- /dev/null +++ b/data/js/item/equip_effects/weapon_abilities.js @@ -0,0 +1,112 @@ +function onEquip(pEquipper, iEquipped) +{ + pEquipper.AddScriptTrigger(19030); +} + +// Remove script trigger on unequip +function onUnequip(pUnequipper, iUnequipped) +{ + pUnequipper.RemoveScriptTrigger(19030); +} + +function onAttack( pAttacker, pDefender ) +{ + const coreShardEra = GetServerSetting( "CoreShardEra" ); + var weaponType = TriggerEvent( 2500, "GetWeaponType", pAttacker, null ); + var anatomySkillValue = pAttacker.baseskills.anatomy; + var scaledSkillValue = anatomySkillValue / 4; + var randomDouble = Math.random() * 1000 + + if(( EraStringToNum( coreShardEra ) >= EraStringToNum("uor") && EraStringToNum( coreShardEra ) <= EraStringToNum( "lbr" )) && scaledSkillValue >= randomDouble ) + { + if( weaponType == "TWOHND_FENCING" && pDefender.frozen == false ) + { + fencing( pAttacker, pDefender ); + } + else if( weaponType == "LG_MACES" ) + { + macefighting( pAttacker, pDefender ); + } + else if( weaponType == "TWOHND_LG_SWORDS" && weaponType == "DEF_SWORDS" && pDefender.GetTempTag( "concussion" ) == 0 ) + { + swordmanship( pAttacker, pDefender ); + } + } +} + +/* +A special attack is available to those with the Fencing skill who wield 2 - handed Fencing weapons in combat.Upon a successful hit, +there is a small chance to inflict a Paralyzing Blow.The victim is paralyzed for five seconds and unable to fight back or cast spells.However, +the victim may still use potions and bandages while paralyzed. +A paralyzed victim may not break this paralysis by any means and may not be paralyzed again until the paralysis wears off. +The base chance to inflict this special damage is your Anatomy skill level divided by 4. +*/ + +function Fencing( pAttacker, pDefender ) +{ + var seconds = 0; + if( pDefender.npc ) + { + seconds = 6000; + } + else + { + pDefender.TextMessage( "You receive a paralyzing blow!" ); + seconds = 3000; + } + pDefender.StartTimer( seconds, 1, true ); + pDefender.frozen = true; + + pAttacker.TextMessage( "You deliver a paralyzing blow!" ); + pAttacker.SoundEffect( 0x11C, true ); +} + +/* +Mace Fighting has two advantages over other types of combat: +A mace does considerable damage to the armor of your opponent. +Mace fighters have a chance of "stunning" their opponent for a moment. +Upon a successful hit with a two handed Mace type weapon (excluding staves), +there will be a small chance to perform a Crushing Blow, which is a hit for double damage. +The base chance to inflict this special damage is your Anatomy skill level divided by 4. The only weapon that can be used for this special attack is the War Hammer +*/ + +function MaceFighting( pAttacker, pDefender ) +{ + var staminaLoss = Math.floor( Math.random() * ( 5 - 3 + 1 )) + 3; + pDefender.TextMessage( "You receive a crushing blow!" ); + pDefender.stamina -= staminaLoss; + + pAttacker.TextMessage( "You deliver a crushing blow!" ); + pAttacker.SoundEffect( 0x11C, true ); +} + +/* +If a swordsman is using a two-handed weapon, he may sometimes deliver a Concussion Blow, +during which the victims intelligence is halved for 30 seconds. The effects of a concussion blow are not cumulative, +once a target is the victim of a concussion blow, they cannot be hit in that manner again for 30 seconds. +The base chance to deliver this special blow is your Anatomy skill level divided by 4. +*/ + +function Swordsmanship( pAttacker, pDefender ) +{ + pDefender.TextMessage( "You receive a concussion blow!" ); + pDefender.tempint = ( pDefender.tempint - 2 ); + pDefender.StartTimer( 30000, 2, true ); + pDefender.SetTempTag( "concussion", 1 ); + + pAttacker.TextMessage( "You deliver a concussion blow!" ); + pAttacker.SoundEffect( 0x11C, true ); +} + +function onTimer( timerObj, timerID ) +{ + if( timerID == 1 ) + { + timerObj.frozen = false; + } + + if( timerID == 2 ) + { + pDefender.SetTempTag( "concussion", 0 ); + } +} \ No newline at end of file diff --git a/data/js/jse_fileassociations.scp b/data/js/jse_fileassociations.scp index d92b05035..6f5007938 100644 --- a/data/js/jse_fileassociations.scp +++ b/data/js/jse_fileassociations.scp @@ -267,6 +267,7 @@ 5046=item/corpse.js 5047=item/consumables/new_player_ticket.js 5048=item/teleport_item.js +5050=item/equip_effects/weapon_abilities.js //------------------------------------------- // Camps [5500-5599] From ff565d79c969404b2a1eaa972a62337659abc1b4 Mon Sep 17 00:00:00 2001 From: Dragon Slayer <85514184+DragonSlayer62@users.noreply.github.com> Date: Tue, 7 Nov 2023 10:27:23 -0600 Subject: [PATCH 2/9] Update weapon_abilities.js --- .../js/item/equip_effects/weapon_abilities.js | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/data/js/item/equip_effects/weapon_abilities.js b/data/js/item/equip_effects/weapon_abilities.js index 46bf5fdd1..3d0153363 100644 --- a/data/js/item/equip_effects/weapon_abilities.js +++ b/data/js/item/equip_effects/weapon_abilities.js @@ -1,12 +1,12 @@ -function onEquip(pEquipper, iEquipped) +function onEquip( pEquipper, iEquipped ) { - pEquipper.AddScriptTrigger(19030); + pEquipper.AddScriptTrigger( 5050 ); } // Remove script trigger on unequip -function onUnequip(pUnequipper, iUnequipped) +function onUnequip( pUnequipper, iUnequipped ) { - pUnequipper.RemoveScriptTrigger(19030); + pUnequipper.RemoveScriptTrigger( 5050 ); } function onAttack( pAttacker, pDefender ) @@ -21,15 +21,15 @@ function onAttack( pAttacker, pDefender ) { if( weaponType == "TWOHND_FENCING" && pDefender.frozen == false ) { - fencing( pAttacker, pDefender ); + ParalyzingBlow( pAttacker, pDefender ); } else if( weaponType == "LG_MACES" ) { - macefighting( pAttacker, pDefender ); + CrushingBlow( pAttacker, pDefender ); } else if( weaponType == "TWOHND_LG_SWORDS" && weaponType == "DEF_SWORDS" && pDefender.GetTempTag( "concussion" ) == 0 ) { - swordmanship( pAttacker, pDefender ); + ConcussionBlow( pAttacker, pDefender ); } } } @@ -42,7 +42,7 @@ A paralyzed victim may not break this paralysis by any means and may not be para The base chance to inflict this special damage is your Anatomy skill level divided by 4. */ -function Fencing( pAttacker, pDefender ) +function ParalyzingBlow( pAttacker, pDefender ) { var seconds = 0; if( pDefender.npc ) @@ -70,7 +70,7 @@ there will be a small chance to perform a Crushing Blow, which is a hit for doub The base chance to inflict this special damage is your Anatomy skill level divided by 4. The only weapon that can be used for this special attack is the War Hammer */ -function MaceFighting( pAttacker, pDefender ) +function CrushingBlow( pAttacker, pDefender ) { var staminaLoss = Math.floor( Math.random() * ( 5 - 3 + 1 )) + 3; pDefender.TextMessage( "You receive a crushing blow!" ); @@ -87,7 +87,7 @@ once a target is the victim of a concussion blow, they cannot be hit in that man The base chance to deliver this special blow is your Anatomy skill level divided by 4. */ -function Swordsmanship( pAttacker, pDefender ) +function ConcussionBlow( pAttacker, pDefender ) { pDefender.TextMessage( "You receive a concussion blow!" ); pDefender.tempint = ( pDefender.tempint - 2 ); From ab578006d2eed58531bfd063dd7c4d52da1b2892 Mon Sep 17 00:00:00 2001 From: Dragon Slayer <85514184+DragonSlayer62@users.noreply.github.com> Date: Sun, 12 Nov 2023 03:11:58 -0600 Subject: [PATCH 3/9] Update weapon_abilities.js --- .../js/item/equip_effects/weapon_abilities.js | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/data/js/item/equip_effects/weapon_abilities.js b/data/js/item/equip_effects/weapon_abilities.js index 3d0153363..5f76a7156 100644 --- a/data/js/item/equip_effects/weapon_abilities.js +++ b/data/js/item/equip_effects/weapon_abilities.js @@ -1,3 +1,8 @@ +// Enable and Disable the weapon Special Moves +const paralyzingBlow = true; +const crushingBlow = true; +const concussionBlow = true; + function onEquip( pEquipper, iEquipped ) { pEquipper.AddScriptTrigger( 5050 ); @@ -19,15 +24,15 @@ function onAttack( pAttacker, pDefender ) if(( EraStringToNum( coreShardEra ) >= EraStringToNum("uor") && EraStringToNum( coreShardEra ) <= EraStringToNum( "lbr" )) && scaledSkillValue >= randomDouble ) { - if( weaponType == "TWOHND_FENCING" && pDefender.frozen == false ) + if( paralyzingBlow && weaponType == "TWOHND_FENCING" && pDefender.frozen == false ) { ParalyzingBlow( pAttacker, pDefender ); } - else if( weaponType == "LG_MACES" ) + else if( crushingBlow && weaponType == "LG_MACES" ) { CrushingBlow( pAttacker, pDefender ); } - else if( weaponType == "TWOHND_LG_SWORDS" && weaponType == "DEF_SWORDS" && pDefender.GetTempTag( "concussion" ) == 0 ) + else if( concussionBlow && ( weaponType == "TWOHND_LG_SWORDS" && weaponType == "DEF_SWORDS" ) && pDefender.GetTempTag( "concussion" ) == 0 ) { ConcussionBlow( pAttacker, pDefender ); } @@ -51,13 +56,14 @@ function ParalyzingBlow( pAttacker, pDefender ) } else { - pDefender.TextMessage( "You receive a paralyzing blow!" ); + pDefender.TextMessage( "You receive a paralyzing blow!", false, 0x3b2, 0, pDefender.serial ); seconds = 3000; } pDefender.StartTimer( seconds, 1, true ); pDefender.frozen = true; - pAttacker.TextMessage( "You deliver a paralyzing blow!" ); + // void TextMessage( message, allHear, txtHue, speechTarget, speechTargetSerial ); + pAttacker.TextMessage( "You deliver a paralyzing blow!", false, 0x3b2, 0, pAttacker.serial); pAttacker.SoundEffect( 0x11C, true ); } @@ -73,10 +79,10 @@ The base chance to inflict this special damage is your Anatomy skill level divid function CrushingBlow( pAttacker, pDefender ) { var staminaLoss = Math.floor( Math.random() * ( 5 - 3 + 1 )) + 3; - pDefender.TextMessage( "You receive a crushing blow!" ); + pDefender.TextMessage( "You receive a crushing blow!", false, 0x3b2, 0, pDefender.serial ); pDefender.stamina -= staminaLoss; - pAttacker.TextMessage( "You deliver a crushing blow!" ); + pAttacker.TextMessage( "You deliver a crushing blow!", false, 0x3b2, 0, pAttacker.serial ); pAttacker.SoundEffect( 0x11C, true ); } @@ -89,12 +95,12 @@ The base chance to deliver this special blow is your Anatomy skill level divided function ConcussionBlow( pAttacker, pDefender ) { - pDefender.TextMessage( "You receive a concussion blow!" ); + pDefender.TextMessage( "You receive a concussion blow!", false, 0x3b2, 0, pDefender.serial ); pDefender.tempint = ( pDefender.tempint - 2 ); pDefender.StartTimer( 30000, 2, true ); pDefender.SetTempTag( "concussion", 1 ); - pAttacker.TextMessage( "You deliver a concussion blow!" ); + pAttacker.TextMessage( "You deliver a concussion blow!", false, 0x3b2, 0, pAttacker.serial ); pAttacker.SoundEffect( 0x11C, true ); } From e5ceb6c25f50fe293f9d0c2fe5a33757ee3ccdf5 Mon Sep 17 00:00:00 2001 From: Dragon Slayer <85514184+DragonSlayer62@users.noreply.github.com> Date: Sun, 12 Nov 2023 03:13:53 -0600 Subject: [PATCH 4/9] Update weapon_abilities.js --- data/js/item/equip_effects/weapon_abilities.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/js/item/equip_effects/weapon_abilities.js b/data/js/item/equip_effects/weapon_abilities.js index 5f76a7156..ceb58eac1 100644 --- a/data/js/item/equip_effects/weapon_abilities.js +++ b/data/js/item/equip_effects/weapon_abilities.js @@ -96,7 +96,7 @@ The base chance to deliver this special blow is your Anatomy skill level divided function ConcussionBlow( pAttacker, pDefender ) { pDefender.TextMessage( "You receive a concussion blow!", false, 0x3b2, 0, pDefender.serial ); - pDefender.tempint = ( pDefender.tempint - 2 ); + pDefender.tempint = ( pDefender.tempint/2 ); pDefender.StartTimer( 30000, 2, true ); pDefender.SetTempTag( "concussion", 1 ); From f1cec762b37aa87efef6713c5b0cf3ce57dd4883 Mon Sep 17 00:00:00 2001 From: Dragon Slayer <85514184+DragonSlayer62@users.noreply.github.com> Date: Sun, 12 Nov 2023 18:11:58 -0600 Subject: [PATCH 5/9] update dictionaries with messages Added all the Messages to all the dictionaries --- data/dictionaries/dictionary.CSY | 7 +++++++ data/dictionaries/dictionary.ENG | 7 +++++++ data/dictionaries/dictionary.FRE | 7 +++++++ data/dictionaries/dictionary.GER | 7 +++++++ data/dictionaries/dictionary.ITA | 7 +++++++ data/dictionaries/dictionary.POL | 7 +++++++ data/dictionaries/dictionary.PTG | 7 +++++++ data/dictionaries/dictionary.SPA | 7 +++++++ data/dictionaries/dictionary.ZRO | 7 +++++++ data/js/item/equip_effects/weapon_abilities.js | 12 ++++++------ 10 files changed, 69 insertions(+), 6 deletions(-) diff --git a/data/dictionaries/dictionary.CSY b/data/dictionaries/dictionary.CSY index b4a6bc2e1..5c85c977b 100644 --- a/data/dictionaries/dictionary.CSY +++ b/data/dictionaries/dictionary.CSY @@ -5023,6 +5023,13 @@ 17619=Jako kolegovi z cechu vám mohu poskytnout prémiovou cenu za toto! 17620=To nestačí na pokrytí členského poplatku cechu, omlouvám se. 17621=Čas od vstupu do cechu: %i minut. +// [17701-17710] Zbraňové schopnosti +17701=Dostanete paralyzující ránu! +17702=Zasadíte paralyzující ránu! +17703=Dostanete drtivou ránu! +17704=Zasadíte zdrcující ránu! +17705=Dostanete otřes mozku! +17706=Dáváte otřes mozku! // Převlékací souprava 18000=Vandyke 18001=Vousy diff --git a/data/dictionaries/dictionary.ENG b/data/dictionaries/dictionary.ENG index 4b38d6239..18fb39a11 100644 --- a/data/dictionaries/dictionary.ENG +++ b/data/dictionaries/dictionary.ENG @@ -5023,6 +5023,13 @@ 17619=As a fellow guild member, I can give you a premium price for this! 17620=That's not enough to cover the guild membership fee, sorry. 17621=Time since joining guild: %i minutes. +//[17701-17710] Weapon Abiltiies +17701=You receive a paralyzing blow! +17702=You deliver a paralyzing blow! +17703=You receive a crushing blow! +17704=You deliver a crushing blow! +17705=You receive a concussion blow! +17706=You deliver a concussion blow! // Disguise Kit 18000=Vandyke 18001=Mustache diff --git a/data/dictionaries/dictionary.FRE b/data/dictionaries/dictionary.FRE index 7194e3336..5199bdbe8 100644 --- a/data/dictionaries/dictionary.FRE +++ b/data/dictionaries/dictionary.FRE @@ -5179,6 +5179,13 @@ 17619=En tant que membre de la guilde, je peux vous faire bénéficier d'un tarif préférentiel ! 17620=Ce n'est pas assez pour couvrir les frais d'adhésion à la guilde, désolé. 17621=Depuis que vous avez rejoint la guilde : %i minutes. +// [17701-17710] Capacités des armes +17701=Vous recevez un coup paralysant ! +17702=Vous portez un coup paralysant ! +17703=Vous recevez un coup dévastateur ! +17704=Vous portez un coup dévastateur ! +17705=Vous recevez un coup de commotion cérébrale ! +17706=Vous portez un coup de commotion cérébrale ! // Kit de déguisement 18000=Vandyke 18001=Moustache diff --git a/data/dictionaries/dictionary.GER b/data/dictionaries/dictionary.GER index 8c41ee586..f4cdcc826 100644 --- a/data/dictionaries/dictionary.GER +++ b/data/dictionaries/dictionary.GER @@ -5023,6 +5023,13 @@ 17619=Als Gildenmitglied kann ich Ihnen dafür einen Premiumpreis anbieten! 17620=Das ist nicht genug, um den Mitgliedsbeitrag für die Gilde zu bezahlen, tut mir leid. 17621=Zeit seit dem Beitritt zur Gilde: %i Minuten. +// [17701-17710] Waffenfähigkeiten +17701=Du erhältst einen lähmenden Schlag! +17702=Du versetztest einen lähmenden Schlag! +17703=Du erhältst einen vernichtenden Schlag! +17704=Du hast einen vernichtenden Schlag ausgeführt! +17705=Sie erhalten eine Gehirnerschütterung! +17706=Sie versetzen einen Gehirnerschütterungsstoß! // Verkleidungsset 18000=Vandyke 18001=Schnurrbart diff --git a/data/dictionaries/dictionary.ITA b/data/dictionaries/dictionary.ITA index c47a0a19c..0bd291baf 100644 --- a/data/dictionaries/dictionary.ITA +++ b/data/dictionaries/dictionary.ITA @@ -5023,6 +5023,13 @@ 17619=Come membro della gilda, posso offrirti un prezzo maggiorato per questo! 17620=Non è abbastanza per coprire la quota di iscrizione alla gilda, mi dispiace. 17621=Tempo trascorso dall'ingresso in gilda: %i minuti. +// [17701-17710] Abilità delle armi +17701=Ricevi un colpo paralizzante! +17702=Sferri un colpo paralizzante! +17703=Ricevi un colpo devastante! +17704=Sferri un colpo devastante! +17705=Ricevi un colpo stordente! +17706=Hai sferrato un colpo stordente! // Kit di travestimento 18000=Vandyke 18001=Baffi diff --git a/data/dictionaries/dictionary.POL b/data/dictionaries/dictionary.POL index dbdc431e2..c5a5c2074 100644 --- a/data/dictionaries/dictionary.POL +++ b/data/dictionaries/dictionary.POL @@ -5023,6 +5023,13 @@ 17619=Jako członek gildii, mogę dać ci za to wyższą cenę! 17620=To za mało, by pokryć opłatę za członkostwo w gildii, przykro mi. 17621=Czas od dołączenia do gildii: %i minut. +// [17701-17710] Zdolności broni +17701=Otrzymujesz paraliżujący cios! +17702=Zadajesz paraliżujący cios! +17703=Otrzymujesz miażdżący cios! +17704=Zadajesz miażdżący cios! +17705=Otrzymujesz wstrząs mózgu! +17706=Zadajesz wstrząs mózgu! // Zestaw do kamuflażu 18000=Vandyke 18001=Wąsy diff --git a/data/dictionaries/dictionary.PTG b/data/dictionaries/dictionary.PTG index 81b5da2af..04f71ddf9 100644 --- a/data/dictionaries/dictionary.PTG +++ b/data/dictionaries/dictionary.PTG @@ -5023,6 +5023,13 @@ 17619=Como membro da guilda, posso oferecer-lhe um preço premium por isto! 17620=Isso não é suficiente para cobrir a taxa de inscrição no Grémio, lamento. 17621=Tempo desde que se juntou ao grémio: %i minutos. +// [17701-17710] Habilidades com armas +17701=Você recebe um golpe paralisante! +17702=Você desfere um golpe paralisante! +17703=Você recebe um golpe esmagador! +17704=Você desferiu um golpe esmagador! +17705=Você recebe uma concussão! +17706=Você desfere um golpe de concussão! // Kit de disfarce 18000=Vandyke 18001=Mustache diff --git a/data/dictionaries/dictionary.SPA b/data/dictionaries/dictionary.SPA index 2c82493bd..74ddee512 100644 --- a/data/dictionaries/dictionary.SPA +++ b/data/dictionaries/dictionary.SPA @@ -5023,6 +5023,13 @@ 17619=¡Como miembro del gremio, puedo ofrecerte un precio especial por esto! 17620=No es suficiente para cubrir la cuota de miembro del gremio, lo siento. 17621=Tiempo desde que se unió al gremio: %i minutos. +// [17701-17710] Habilidades de armas +17701=¡Recibes un golpe paralizante! +17702=¡Das un golpe paralizante! +17703=¡Recibes un golpe aplastante! +17704=¡Das un golpe aplastante! +17705=¡Recibes un golpe de conmoción cerebral! +17706=¡Le has dado un golpe de conmoción cerebral! // Kit de Disfraz 18000=Vandyke 18001=Bigote diff --git a/data/dictionaries/dictionary.ZRO b/data/dictionaries/dictionary.ZRO index aca5a8424..3f8c0ef3f 100644 --- a/data/dictionaries/dictionary.ZRO +++ b/data/dictionaries/dictionary.ZRO @@ -5017,6 +5017,13 @@ 17619=As a fellow guild member, I can give you a premium price for this! 17620=That's not enough to cover the guild membership fee, sorry. 17621=Time since joining guild: %i minutes. +// [17701-17710] Weapon Abiltiies +17701=You receive a paralyzing blow! +17702=You deliver a paralyzing blow! +17703=You receive a crushing blow! +17704=You deliver a crushing blow! +17705=You receive a concussion blow! +17706=You deliver a concussion blow! // Disguise Kit 18000=Vandyke 18001=Mustache diff --git a/data/js/item/equip_effects/weapon_abilities.js b/data/js/item/equip_effects/weapon_abilities.js index ceb58eac1..d8cc22ced 100644 --- a/data/js/item/equip_effects/weapon_abilities.js +++ b/data/js/item/equip_effects/weapon_abilities.js @@ -56,14 +56,14 @@ function ParalyzingBlow( pAttacker, pDefender ) } else { - pDefender.TextMessage( "You receive a paralyzing blow!", false, 0x3b2, 0, pDefender.serial ); + pDefender.TextMessage( GetDictionaryEntry( 17701, pDefender.socket.language ), false, 0x3b2, 0, pDefender.serial );// You receive a paralyzing blow! seconds = 3000; } pDefender.StartTimer( seconds, 1, true ); pDefender.frozen = true; // void TextMessage( message, allHear, txtHue, speechTarget, speechTargetSerial ); - pAttacker.TextMessage( "You deliver a paralyzing blow!", false, 0x3b2, 0, pAttacker.serial); + pAttacker.TextMessage( GetDictionaryEntry( 17702, pDefender.socket.language ), false, 0x3b2, 0, pAttacker.serial );// You deliver a paralyzing blow! pAttacker.SoundEffect( 0x11C, true ); } @@ -79,10 +79,10 @@ The base chance to inflict this special damage is your Anatomy skill level divid function CrushingBlow( pAttacker, pDefender ) { var staminaLoss = Math.floor( Math.random() * ( 5 - 3 + 1 )) + 3; - pDefender.TextMessage( "You receive a crushing blow!", false, 0x3b2, 0, pDefender.serial ); + pDefender.TextMessage( GetDictionaryEntry( 17703, pDefender.socket.language ), false, 0x3b2, 0, pDefender.serial );// You receive a crushing blow! pDefender.stamina -= staminaLoss; - pAttacker.TextMessage( "You deliver a crushing blow!", false, 0x3b2, 0, pAttacker.serial ); + pAttacker.TextMessage( GetDictionaryEntry( 17704, pDefender.socket.language ), false, 0x3b2, 0, pAttacker.serial );// You deliver a crushing blow! pAttacker.SoundEffect( 0x11C, true ); } @@ -95,12 +95,12 @@ The base chance to deliver this special blow is your Anatomy skill level divided function ConcussionBlow( pAttacker, pDefender ) { - pDefender.TextMessage( "You receive a concussion blow!", false, 0x3b2, 0, pDefender.serial ); + pDefender.TextMessage( GetDictionaryEntry( 17705, pDefender.socket.language ), false, 0x3b2, 0, pDefender.serial );// You receive a concussion blow! pDefender.tempint = ( pDefender.tempint/2 ); pDefender.StartTimer( 30000, 2, true ); pDefender.SetTempTag( "concussion", 1 ); - pAttacker.TextMessage( "You deliver a concussion blow!", false, 0x3b2, 0, pAttacker.serial ); + pAttacker.TextMessage( GetDictionaryEntry( 17706, pDefender.socket.language ), false, 0x3b2, 0, pAttacker.serial );// You deliver a concussion blow! pAttacker.SoundEffect( 0x11C, true ); } From dbb3660128d9b48307a1d6d99725395747c3ca92 Mon Sep 17 00:00:00 2001 From: Dragon Slayer <85514184+DragonSlayer62@users.noreply.github.com> Date: Sun, 12 Nov 2023 18:13:04 -0600 Subject: [PATCH 6/9] Update dictionary.ENG --- data/dictionaries/dictionary.ENG | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/dictionaries/dictionary.ENG b/data/dictionaries/dictionary.ENG index 18fb39a11..5d5f39446 100644 --- a/data/dictionaries/dictionary.ENG +++ b/data/dictionaries/dictionary.ENG @@ -5023,7 +5023,7 @@ 17619=As a fellow guild member, I can give you a premium price for this! 17620=That's not enough to cover the guild membership fee, sorry. 17621=Time since joining guild: %i minutes. -//[17701-17710] Weapon Abiltiies +// [17701-17710] Weapon Abiltiies 17701=You receive a paralyzing blow! 17702=You deliver a paralyzing blow! 17703=You receive a crushing blow! From 667f39c215c589abd8cd00ca9fc2324a2b03ea29 Mon Sep 17 00:00:00 2001 From: Dragon Slayer <85514184+DragonSlayer62@users.noreply.github.com> Date: Wed, 15 Nov 2023 16:50:21 -0600 Subject: [PATCH 7/9] Update --- .../js/item/equip_effects/weapon_abilities.js | 38 ++++++++++++++----- source/Changelog.txt | 3 ++ 2 files changed, 32 insertions(+), 9 deletions(-) diff --git a/data/js/item/equip_effects/weapon_abilities.js b/data/js/item/equip_effects/weapon_abilities.js index d8cc22ced..5978f0f15 100644 --- a/data/js/item/equip_effects/weapon_abilities.js +++ b/data/js/item/equip_effects/weapon_abilities.js @@ -76,14 +76,30 @@ there will be a small chance to perform a Crushing Blow, which is a hit for doub The base chance to inflict this special damage is your Anatomy skill level divided by 4. The only weapon that can be used for this special attack is the War Hammer */ -function CrushingBlow( pAttacker, pDefender ) +function ConcussionBlow( pAttacker, pDefender ) { - var staminaLoss = Math.floor( Math.random() * ( 5 - 3 + 1 )) + 3; - pDefender.TextMessage( GetDictionaryEntry( 17703, pDefender.socket.language ), false, 0x3b2, 0, pDefender.serial );// You receive a crushing blow! - pDefender.stamina -= staminaLoss; + if( pDefender.socket ) + { + pDefender.TextMessage(GetDictionaryEntry( 17705, pDefender.socket.language ), false, 0x3b2, 0, pDefender.serial );// You receive a concussion blow! + } - pAttacker.TextMessage( GetDictionaryEntry( 17704, pDefender.socket.language ), false, 0x3b2, 0, pAttacker.serial );// You deliver a crushing blow! - pAttacker.SoundEffect( 0x11C, true ); + // Drop pDefender's tempint by half their intelligence! + var cbTempIntDiff = Math.round( pDefender.intelligence / 2 ); + pDefender.tempint -= cbTempIntDiff; + + // Store the amount dropped in a tag, to be retrieved and reversed after timer has ran out + pDefender.SetTag( "cbTempIntDiff", cbTempIntDiff ); + + // Mark pDefender as concussed + pDefender.SetTag( "concussion", 1 ); + + pDefender.StartTimer( 30000, 2, true ); + + if( pAttacker.socket ) + { + pAttacker.TextMessage( GetDictionaryEntry( 17706, pAttacker.socket.language ), false, 0x3b2, 0, pAttacker.serial );// You deliver a concussion blow! + pAttacker.SoundEffect( 0x11C, true ); + } } /* @@ -111,8 +127,12 @@ function onTimer( timerObj, timerID ) timerObj.frozen = false; } - if( timerID == 2 ) + if( timerID == 2 ) { - pDefender.SetTempTag( "concussion", 0 ); + timerObj.tempint += parseInt( timerObj.GetTag( "cbTempIntDiff" )); + timerObj.SetTag( "cbTempIntDiff", null ); + timerObj.SetTag( "concussion", null ); } -} \ No newline at end of file +} + +function _restorecontext_() {} \ No newline at end of file diff --git a/source/Changelog.txt b/source/Changelog.txt index a388b090a..9988f7f45 100644 --- a/source/Changelog.txt +++ b/source/Changelog.txt @@ -1,3 +1,6 @@ +15/11/2023 - Dragon Slayer + Added Paralyzing Blow, Crushing Blow, and Concussion Blow. (js weapon_abilities) + 14/11/2023 - Warden Fixed crafting rank sytem modifiers. Items crafted at Rank 1 will now have their stats multiplied by 60% of the DFN values for the following stats: From 836b5d8079d0495fe36d17e3e7fc7b0b489da0f7 Mon Sep 17 00:00:00 2001 From: Dragon Slayer <85514184+DragonSlayer62@users.noreply.github.com> Date: Wed, 15 Nov 2023 19:34:45 -0600 Subject: [PATCH 8/9] Update weapon_abilities.js --- .../js/item/equip_effects/weapon_abilities.js | 55 +++++++++++-------- 1 file changed, 32 insertions(+), 23 deletions(-) diff --git a/data/js/item/equip_effects/weapon_abilities.js b/data/js/item/equip_effects/weapon_abilities.js index 5978f0f15..a107f8716 100644 --- a/data/js/item/equip_effects/weapon_abilities.js +++ b/data/js/item/equip_effects/weapon_abilities.js @@ -54,17 +54,20 @@ function ParalyzingBlow( pAttacker, pDefender ) { seconds = 6000; } - else + else if( pDefender.socket ) { pDefender.TextMessage( GetDictionaryEntry( 17701, pDefender.socket.language ), false, 0x3b2, 0, pDefender.serial );// You receive a paralyzing blow! seconds = 3000; } + pDefender.StartTimer( seconds, 1, true ); pDefender.frozen = true; - // void TextMessage( message, allHear, txtHue, speechTarget, speechTargetSerial ); - pAttacker.TextMessage( GetDictionaryEntry( 17702, pDefender.socket.language ), false, 0x3b2, 0, pAttacker.serial );// You deliver a paralyzing blow! - pAttacker.SoundEffect( 0x11C, true ); + if( pAttacker.socket ) + { + pAttacker.TextMessage( GetDictionaryEntry( 17702, pDefender.socket.language ), false, 0x3b2, 0, pAttacker.serial );// You deliver a paralyzing blow! + pAttacker.SoundEffect( 0x11C, true ); + } } /* @@ -76,28 +79,19 @@ there will be a small chance to perform a Crushing Blow, which is a hit for doub The base chance to inflict this special damage is your Anatomy skill level divided by 4. The only weapon that can be used for this special attack is the War Hammer */ -function ConcussionBlow( pAttacker, pDefender ) +function CrushingBlow( pAttacker, pDefender ) { + var staminaLoss = Math.floor( Math.random() * ( 5 - 3 + 1 )) + 3; if( pDefender.socket ) { - pDefender.TextMessage(GetDictionaryEntry( 17705, pDefender.socket.language ), false, 0x3b2, 0, pDefender.serial );// You receive a concussion blow! + pDefender.TextMessage(GetDictionaryEntry( 17703, pDefender.socket.language ), false, 0x3b2, 0, pDefender.serial );// You receive a crushing blow! } - // Drop pDefender's tempint by half their intelligence! - var cbTempIntDiff = Math.round( pDefender.intelligence / 2 ); - pDefender.tempint -= cbTempIntDiff; - - // Store the amount dropped in a tag, to be retrieved and reversed after timer has ran out - pDefender.SetTag( "cbTempIntDiff", cbTempIntDiff ); - - // Mark pDefender as concussed - pDefender.SetTag( "concussion", 1 ); - - pDefender.StartTimer( 30000, 2, true ); + pDefender.stamina -= staminaLoss; if( pAttacker.socket ) { - pAttacker.TextMessage( GetDictionaryEntry( 17706, pAttacker.socket.language ), false, 0x3b2, 0, pAttacker.serial );// You deliver a concussion blow! + pAttacker.TextMessage( GetDictionaryEntry( 17704, pDefender.socket.language ), false, 0x3b2, 0, pAttacker.serial );// You deliver a crushing blow! pAttacker.SoundEffect( 0x11C, true ); } } @@ -111,13 +105,28 @@ The base chance to deliver this special blow is your Anatomy skill level divided function ConcussionBlow( pAttacker, pDefender ) { - pDefender.TextMessage( GetDictionaryEntry( 17705, pDefender.socket.language ), false, 0x3b2, 0, pDefender.serial );// You receive a concussion blow! - pDefender.tempint = ( pDefender.tempint/2 ); + if( pDefender.socket ) + { + pDefender.TextMessage( GetDictionaryEntry( 17705, pDefender.socket.language ), false, 0x3b2, 0, pDefender.serial );// You receive a concussion blow! + } + + // Drop pDefender's tempint by half their intelligence! + var cbTempIntDiff = Math.round( pDefender.intelligence / 2 ); + pDefender.tempint -= cbTempIntDiff; + + // Store the amount dropped in a tag, to be retrieved and reversed after timer has ran out + pDefender.SetTag( "cbTempIntDiff", cbTempIntDiff ); + + // Mark pDefender as concussed + pDefender.SetTag( "concussion", 1 ); + pDefender.StartTimer( 30000, 2, true ); - pDefender.SetTempTag( "concussion", 1 ); - pAttacker.TextMessage( GetDictionaryEntry( 17706, pDefender.socket.language ), false, 0x3b2, 0, pAttacker.serial );// You deliver a concussion blow! - pAttacker.SoundEffect( 0x11C, true ); + if( pAttacker.socket ) + { + pAttacker.TextMessage( GetDictionaryEntry( 17706, pAttacker.socket.language ), false, 0x3b2, 0, pAttacker.serial );// You deliver a concussion blow! + pAttacker.SoundEffect( 0x11C, true ); + } } function onTimer( timerObj, timerID ) From 1d45409f88208eef5e2b7b1905d049b2739e6436 Mon Sep 17 00:00:00 2001 From: Dragon Slayer <85514184+DragonSlayer62@users.noreply.github.com> Date: Thu, 16 Nov 2023 11:51:33 -0600 Subject: [PATCH 9/9] update --- .../js/item/equip_effects/weapon_abilities.js | 9 ++-- data/js/server/data/combatanims.js | 2 + data/js/server/data/weapontypes.js | 44 ++++++++++--------- 3 files changed, 29 insertions(+), 26 deletions(-) diff --git a/data/js/item/equip_effects/weapon_abilities.js b/data/js/item/equip_effects/weapon_abilities.js index a107f8716..2c18c180c 100644 --- a/data/js/item/equip_effects/weapon_abilities.js +++ b/data/js/item/equip_effects/weapon_abilities.js @@ -32,7 +32,7 @@ function onAttack( pAttacker, pDefender ) { CrushingBlow( pAttacker, pDefender ); } - else if( concussionBlow && ( weaponType == "TWOHND_LG_SWORDS" && weaponType == "DEF_SWORDS" ) && pDefender.GetTempTag( "concussion" ) == 0 ) + else if( concussionBlow && ( weaponType == "TWOHND_LG_SWORDS" || weaponType == "TWOHND_AXES" || weaponType == "BARDICHE" ) && pDefender.GetTempTag( "concussion" ) == 0 ) { ConcussionBlow( pAttacker, pDefender ); } @@ -49,7 +49,7 @@ The base chance to inflict this special damage is your Anatomy skill level divid function ParalyzingBlow( pAttacker, pDefender ) { - var seconds = 0; + var seconds = 3000; // We want this applied to players even if they are "offline" (aka disconnected but not vanished from view yet) if( pDefender.npc ) { seconds = 6000; @@ -57,7 +57,6 @@ function ParalyzingBlow( pAttacker, pDefender ) else if( pDefender.socket ) { pDefender.TextMessage( GetDictionaryEntry( 17701, pDefender.socket.language ), false, 0x3b2, 0, pDefender.serial );// You receive a paralyzing blow! - seconds = 3000; } pDefender.StartTimer( seconds, 1, true ); @@ -65,7 +64,7 @@ function ParalyzingBlow( pAttacker, pDefender ) if( pAttacker.socket ) { - pAttacker.TextMessage( GetDictionaryEntry( 17702, pDefender.socket.language ), false, 0x3b2, 0, pAttacker.serial );// You deliver a paralyzing blow! + pAttacker.TextMessage( GetDictionaryEntry( 17702, pAttacker.socket.language ), false, 0x3b2, 0, pAttacker.serial );// You deliver a paralyzing blow! pAttacker.SoundEffect( 0x11C, true ); } } @@ -91,7 +90,7 @@ function CrushingBlow( pAttacker, pDefender ) if( pAttacker.socket ) { - pAttacker.TextMessage( GetDictionaryEntry( 17704, pDefender.socket.language ), false, 0x3b2, 0, pAttacker.serial );// You deliver a crushing blow! + pAttacker.TextMessage( GetDictionaryEntry( 17704, pAttacker.socket.language ), false, 0x3b2, 0, pAttacker.serial );// You deliver a crushing blow! pAttacker.SoundEffect( 0x11C, true ); } } diff --git a/data/js/server/data/combatanims.js b/data/js/server/data/combatanims.js index 6f2f45cce..df04efa95 100644 --- a/data/js/server/data/combatanims.js +++ b/data/js/server/data/combatanims.js @@ -49,6 +49,7 @@ function GetFootCombatAnim( pUser, weaponType ) case "TWOHND_LG_SWORDS": case "BARDICHE": case "TWOHND_AXES": + case "TWOHND_STAFFS": { switch( RandomNumber( 0, 1 ) ) { @@ -102,6 +103,7 @@ function GetHorseCombatAnim( pUser, weaponType ) case "BARDICHE": case "TWOHND_AXES": case "LG_MACES": + case "TWOHND_STAFFS": combatAnim = 0x1D; break; case "DEF_SWORDS": diff --git a/data/js/server/data/weapontypes.js b/data/js/server/data/weapontypes.js index a643ae2c5..42fe15a2b 100644 --- a/data/js/server/data/weapontypes.js +++ b/data/js/server/data/weapontypes.js @@ -207,7 +207,7 @@ function GetWeaponType( mChar, itemID ) case 0x48B2: //gargish axe - SA case 0x48B3: //gargish axe - SA weaponType = "TWOHND_AXES"; break; - // Default Maces + // Default Maces case 0x0FB4: //sledge hammer case 0x0FB5: //sledge hammer case 0x0F5C: //mace @@ -232,14 +232,30 @@ function GetWeaponType( mChar, itemID ) case 0x257F: //war mace - LBR case 0x2D24: //diamond mace - ML case 0x2D30: //diamond mace - ML - case 0x2D25: //wild staff - ML - case 0x2D31: //wild staff - ML case 0x0903: //gargish disc mace - SA case 0x406E: //gargish disc mace - SA case 0x48C2: //gargish maul - SA case 0x48C3: //gargish maul - SA weaponType = "DEF_MACES"; break; - // Large Maces + // Large Maces + case 0x1438: //war hammer + case 0x1439: //war hammer + case 0x2555: //ettin hammer - LBR + case 0x2559: //ogre's club - LBR + case 0x2565: //troll maul - LBR + case 0x2566: //frost troll club - LBR + case 0x27A3: //tessen - SE + case 0x27EE: //tessen - SE + case 0x27A6: //tetsubo - SE + case 0x27F1: //tetsubo - SE + case 0x27AE: //nunchako - SE + case 0x27F9: //nunchako - SE + case 0x48C0: //gargish war hammer - SA + case 0x48C1: //gargish war hammer - SA + case 0x48CC: //gargish tessen - SA + case 0x48CD: //gargish tessen - SA + weaponType = "LG_MACES"; break; + // Staffs - treated differently in some cases than other maces case 0x13F4: //crook case 0x13F5: //crook case 0x13F8: //gnarled staff @@ -250,31 +266,17 @@ function GetWeaponType( mChar, itemID ) case 0x0E82: //shepherd's crook case 0x0E89: //quarter staff case 0x0E8A: //quarter staff - case 0x1438: //war hammer - case 0x1439: //war hammer - case 0x2555: //ettin hammer - LBR case 0x2556: //liche's staff - LBR - case 0x2559: //ogre's club - LBR case 0x255A: //ophidian staff - LBR case 0x2561: //terathan staff - LBR - case 0x2565: //troll maul - LBR - case 0x2566: //frost troll club - LBR case 0x2568: //orc mage staff - LBR case 0x2569: //bone mage staff - LBR case 0x256B: //magic staff - LBR case 0x256C: //magic staff - LBR case 0x256D: //magic staff - LBR case 0x256E: //magic staff - LBR - case 0x27A3: //tessen - SE - case 0x27EE: //tessen - SE - case 0x27A6: //tetsubo - SE - case 0x27F1: //tetsubo - SE - case 0x27AE: //nunchako - SE - case 0x27F9: //nunchako - SE - case 0x48C0: //gargish war hammer - SA - case 0x48C1: //gargish war hammer - SA - case 0x48CC: //gargish tessen - SA - case 0x48CD: //gargish tessen - SA + case 0x2D25: //wild staff - ML + case 0x2D31: //wild staff - ML case 0x0905: //gargish glass staff - SA case 0x4070: //gargish glass staff - SA case 0x0906: //gargish serpentstone staff - SA @@ -283,7 +285,7 @@ function GetWeaponType( mChar, itemID ) case 0xA344: //skull staff east case 0xA347: //gargoyle skull staff south case 0xA348: //gargoyle skull staff east - weaponType = "LG_MACES"; break; + weaponType = "TWOHND_STAFFS"; break; // Bows case 0x13B1: //bow case 0x13B2: //bow