-
Notifications
You must be signed in to change notification settings - Fork 30
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #87 from 4Luke4/cleave
Cleave class feat for Fighters
- Loading branch information
Showing
24 changed files
with
280 additions
and
136 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
@0 = "Cleave" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
@0 = "Incalzare" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
DEFINE_ACTION_FUNCTION "CLEAVE" | ||
BEGIN | ||
CREATE "eff" "cdcleave" | ||
COPY_EXISTING "cdcleave.eff" "override" | ||
WRITE_LONG 0x10 402 // invoke lua | ||
WRITE_SHORT 0x2C 100 // prob1 | ||
WRITE_ASCII 0x30 "GTCLV01" #8 // lua function | ||
BUT_ONLY | ||
// | ||
CREATE "spl" "cdcleave" | ||
COPY_EXISTING "cdcleave.spl" "override" | ||
WRITE_LONG NAME1 RESOLVE_STR_REF (@0) | ||
WRITE_LONG 0x18 BIT14 // flags: ignore dead/wild magic | ||
WRITE_SHORT 0x1C 4 // type: innate | ||
WRITE_LONG 0x34 1 // level | ||
// | ||
LPF "ADD_SPELL_HEADER" INT_VAR "range" = 30 END | ||
// | ||
LPF "ADD_SPELL_EFFECT" INT_VAR "opcode" = 138 "target" = 1 "timing" = 1 END // Set animation sequence (ATTACK) -- probably not needed...? | ||
LPF "ADD_SPELL_EFFECT" INT_VAR "opcode" = 402 "target" = 2 STR_VAR "resource" = "GTCLV02" END // invoke lua | ||
BUT_ONLY_IF_IT_CHANGES | ||
// Listener: run 'func' each time a sprite has finished evaluating its effects | ||
LAF "APPEND_LUA_FUNCTION" STR_VAR "description" = "Listeners" "sourceFileSpec" = "cdtweaks\luke\lua\cleave_grant.lua" "destRes" = "m_gtlstn" END | ||
// | ||
LAF "APPEND_LUA_FUNCTION" STR_VAR "description" = "Functions to be invoked via op402" "sourceFileSpec" = "cdtweaks\luke\lua\cleave.lua" "destRes" = "m_gt#402" END | ||
// | ||
ACTION_IF !(FILE_EXISTS_IN_GAME "m_gttbls.lua") BEGIN | ||
COPY "cdtweaks\luke\lua\m_gttbls.lua" "override" | ||
END | ||
END |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\///// | ||
/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\///// | ||
///// ///// | ||
///// Cleave feat for Fighters \\\\\ | ||
///// \\\\\ | ||
/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\///// | ||
/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\///// | ||
|
||
WITH_SCOPE BEGIN | ||
INCLUDE "cdtweaks\luke\misc.tph" | ||
INCLUDE "cdtweaks\ardanis\functions.tph" | ||
INCLUDE "cdtweaks\lib\cleave.tph" | ||
WITH_TRA "cdtweaks\languages\english\cleave.tra" "cdtweaks\languages\%LANGUAGE%\cleave.tra" BEGIN | ||
LAF "CLEAVE" END | ||
END | ||
END |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,32 +1,9 @@ | ||
DEFINE_ACTION_FUNCTION "DEFENSIVE_ROLL" | ||
BEGIN | ||
<<<<<<<< .../cdtweaks-inlined/empty | ||
>>>>>>>> | ||
// | ||
WITH_SCOPE BEGIN | ||
ACTION_IF !(FILE_EXISTS_IN_GAME "m_gt#403.lua") BEGIN | ||
COPY ".../cdtweaks-inlined/empty" "override\m_gt#403.lua" | ||
DELETE_BYTES 0x0 BUFFER_LENGTH | ||
INSERT_BYTES 0x0 STRING_LENGTH "-- Functions to be invoked via op403 --%WNL%%WNL%" | ||
WRITE_ASCII 0x0 "-- Functions to be invoked via op403 --%WNL%%WNL%" | ||
BUT_ONLY_IF_IT_CHANGES | ||
END | ||
COPY_EXISTING "m_gt#403.lua" "override" | ||
SET "feedback_strref" = RESOLVE_STR_REF (@0) | ||
APPEND_FILE_EVALUATE TEXT "cdtweaks\luke\lua\defensive_roll.lua" | ||
BUT_ONLY UNLESS "^function GTDEFRLL" | ||
// Listener: run 'func' each time a sprite has finished evaluating its effects | ||
ACTION_IF !(FILE_EXISTS_IN_GAME "m_gtlstn.lua") BEGIN | ||
COPY ".../cdtweaks-inlined/empty" "override\m_gtlstn.lua" | ||
DELETE_BYTES 0x0 BUFFER_LENGTH | ||
INSERT_BYTES 0x0 STRING_LENGTH "-- Listeners --%WNL%%WNL%" | ||
WRITE_ASCII 0x0 "-- Listeners --%WNL%%WNL%" | ||
BUT_ONLY_IF_IT_CHANGES | ||
END | ||
COPY_EXISTING "m_gtlstn.lua" "override" | ||
APPEND_FILE TEXT "cdtweaks\luke\lua\defensive_roll_apply.lua" | ||
BUT_ONLY UNLESS "cdtweaksDefensiveRoll" | ||
OUTER_SET "feedback_strref" = RESOLVE_STR_REF (@0) | ||
LAF "APPEND_LUA_FUNCTION" STR_VAR "description" = "Functions to be invoked via op403" "sourceFileSpec" = "cdtweaks\luke\lua\defensive_roll.lua" "destRes" = "m_gt#403" END | ||
END | ||
// | ||
LAF "ADD_EXTENDED_STAT" STR_VAR "identifier" = "CDTWEAKS_DEFENSIVE_ROLL" END | ||
// Listener: run 'func' each time a sprite has finished evaluating its effects | ||
LAF "APPEND_LUA_FUNCTION" STR_VAR "description" = "Listeners" "sourceFileSpec" = "cdtweaks\luke\lua\defensive_roll_apply.lua" "destRes" = "m_gtlstn" END | ||
END |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
-- cdtweaks, NWN-ish Cleave feat for Fighters -- | ||
|
||
function GTCLV01(CGameEffect, CGameSprite) | ||
local sourceSprite = EEex_GameObject_Get(CGameEffect.m_sourceId) | ||
-- | ||
local sourceSeeInvisible = sourceSprite.m_derivedStats.m_bSeeInvisible + sourceSprite.m_bonusStats.m_bSeeInvisible | ||
-- | ||
local inWeaponRange = EEex_Trigger_ParseConditionalString("InWeaponRange(EEex_LuaObject)") | ||
local reallyForceSpell = EEex_Action_ParseResponseString('ReallyForceSpellRES("CDCLEAVE",EEex_LuaObject)') | ||
-- | ||
local targetGeneralState = CGameSprite.m_derivedStats.m_generalState + CGameSprite.m_bonusStats.m_generalState | ||
-- | ||
if EEex_IsBitSet(targetGeneralState, 11) then -- STATE_DEAD (BIT11) | ||
local spriteArray = {} | ||
if sourceSprite.m_typeAI.m_EnemyAlly > 200 then -- EVILCUTOFF | ||
spriteArray = EEex_Sprite_GetAllOfTypeStringInRange(sourceSprite, "[GOODCUTOFF]", sourceSprite:virtual_GetVisualRange(), nil, nil, nil) | ||
elseif sourceSprite.m_typeAI.m_EnemyAlly < 30 then -- GOODCUTOFF | ||
spriteArray = EEex_Sprite_GetAllOfTypeStringInRange(sourceSprite, "[EVILCUTOFF]", sourceSprite:virtual_GetVisualRange(), nil, nil, nil) | ||
end | ||
-- | ||
for _, itrSprite in ipairs(spriteArray) do | ||
EEex_LuaObject = itrSprite -- must be global | ||
local spriteGeneralState = itrSprite.m_derivedStats.m_generalState + itrSprite.m_bonusStats.m_generalState | ||
-- | ||
if inWeaponRange:evalConditionalAsAIBase(sourceSprite) and EEex_IsBitUnset(spriteGeneralState, 11) then | ||
if EEex_IsBitUnset(spriteGeneralState, 0x4) or sourceSeeInvisible > 0 then | ||
reallyForceSpell:executeResponseAsAIBaseInstantly(sourceSprite) | ||
break | ||
end | ||
end | ||
end | ||
end | ||
-- | ||
inWeaponRange:free() | ||
reallyForceSpell:free() | ||
end | ||
|
||
-- cdtweaks, NWN-ish Cleave feat for Fighters -- | ||
|
||
function GTCLV02(CGameEffect, CGameSprite) | ||
local sourceSprite = EEex_GameObject_Get(CGameEffect.m_sourceId) | ||
-- | ||
local equipment = sourceSprite.m_equipment | ||
local selectedWeapon = equipment.m_items:get(equipment.m_selectedWeapon) | ||
local itemHeader = selectedWeapon.pRes.pHeader -- Item_Header_st | ||
-- | ||
local itemAbility = EEex_Resource_GetItemAbility(itemHeader, equipment.m_selectedWeaponAbility) -- Item_ability_st | ||
-- | ||
local randomValue = math.random(0, 1) | ||
local damageType = {16, 0, 256, 128, 2048, 16 * randomValue, randomValue == 0 and 16 or 256, 256 * randomValue} -- piercing, crushing, slashing, missile, non-lethal, piercing/crushing, piercing/slashing, slashing/crushing | ||
if damageType[itemAbility.damageType] then | ||
EEex_GameObject_ApplyEffect(CGameSprite, | ||
{ | ||
["effectID"] = 12, -- Damage | ||
["dwFlags"] = damageType[itemAbility.damageType] * 0x10000, -- Normal | ||
["durationType"] = 1, | ||
["numDice"] = itemAbility.damageDiceCount, | ||
["diceSize"] = itemAbility.damageDice, | ||
["effectAmount"] = itemAbility.damageDiceBonus, | ||
["m_sourceRes"] = CGameEffect.m_sourceRes:get(), | ||
["m_sourceType"] = CGameEffect.m_sourceType, | ||
["sourceID"] = CGameEffect.m_sourceId, | ||
["sourceTarget"] = CGameEffect.m_sourceTarget, | ||
}) | ||
end | ||
end |
Oops, something went wrong.