-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Move spells to scripts folder (#4755)
* Move runes to dedicated folder * Redirect old XML and lib folder to new location * Drop unused custom spells
- Loading branch information
Showing
349 changed files
with
4,385 additions
and
2,014 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,325 @@ | ||
-- Pre-made areas | ||
|
||
-- Waves | ||
AREA_WAVE3 = { | ||
{1, 1, 1}, | ||
{1, 1, 1}, | ||
{0, 3, 0} | ||
} | ||
|
||
AREA_WAVE4 = { | ||
{1, 1, 1, 1, 1}, | ||
{0, 1, 1, 1, 0}, | ||
{0, 1, 1, 1, 0}, | ||
{0, 0, 3, 0, 0} | ||
} | ||
|
||
AREA_WAVE6 = { | ||
{0, 0, 0, 0, 0}, | ||
{0, 1, 3, 1, 0}, | ||
{0, 0, 0, 0, 0} | ||
} | ||
|
||
AREA_WAVE7 = { | ||
{1, 1, 1, 1, 1}, | ||
{1, 1, 1, 1, 1}, | ||
{0, 1, 1, 1, 0}, | ||
{0, 1, 1, 1, 0}, | ||
{0, 0, 3, 0, 0} | ||
} | ||
|
||
AREA_SQUAREWAVE5 = { | ||
{1, 1, 1}, | ||
{1, 1, 1}, | ||
{1, 1, 1}, | ||
{0, 1, 0}, | ||
{0, 3, 0} | ||
} | ||
|
||
AREA_SQUAREWAVE6 = { | ||
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, | ||
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, | ||
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, | ||
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, | ||
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, | ||
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, | ||
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, | ||
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, | ||
{0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, | ||
{0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, | ||
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, | ||
{0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0} | ||
} | ||
|
||
AREA_SQUAREWAVE7 = { | ||
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, | ||
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, | ||
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, | ||
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, | ||
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, | ||
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, | ||
{0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, | ||
{0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, | ||
{0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, | ||
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, | ||
{0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0} | ||
} | ||
|
||
-- Diagonal waves | ||
AREADIAGONAL_WAVE4 = { | ||
{0, 0, 0, 0, 1, 0}, | ||
{0, 0, 0, 1, 1, 0}, | ||
{0, 0, 1, 1, 1, 0}, | ||
{0, 1, 1, 1, 1, 0}, | ||
{1, 1, 1, 1, 1, 0}, | ||
{0, 0, 0, 0, 0, 3} | ||
} | ||
|
||
AREADIAGONAL_SQUAREWAVE5 = { | ||
{1, 1, 1, 0, 0}, | ||
{1, 1, 1, 0, 0}, | ||
{1, 1, 1, 0, 0}, | ||
{0, 0, 0, 1, 0}, | ||
{0, 0, 0, 0, 3} | ||
} | ||
|
||
AREADIAGONAL_WAVE6 = { | ||
{0, 0, 1}, | ||
{0, 3, 0}, | ||
{1, 0, 0} | ||
} | ||
|
||
AREADIAGONAL_WAVE7 = { | ||
{0, 0, 0, 0, 0, 1, 0}, | ||
{0, 0, 0, 0, 1, 1, 0}, | ||
{0, 0, 0, 1, 1, 1, 0}, | ||
{0, 0, 1, 1, 1, 1, 0}, | ||
{0, 1, 1, 1, 1, 1, 0}, | ||
{1, 1, 1, 1, 1, 1, 0}, | ||
{0, 0, 0, 0, 0, 0, 3} | ||
} | ||
|
||
-- Beams | ||
AREA_BEAM1 = { | ||
{3} | ||
} | ||
|
||
AREA_BEAM5 = { | ||
{1}, | ||
{1}, | ||
{1}, | ||
{1}, | ||
{3} | ||
} | ||
|
||
AREA_BEAM7 = { | ||
{1}, | ||
{1}, | ||
{1}, | ||
{1}, | ||
{1}, | ||
{1}, | ||
{3} | ||
} | ||
|
||
AREA_BEAM8 = { | ||
{1}, | ||
{1}, | ||
{1}, | ||
{1}, | ||
{1}, | ||
{1}, | ||
{1}, | ||
{3} | ||
} | ||
|
||
-- Diagonal Beams | ||
AREADIAGONAL_BEAM5 = { | ||
{1, 0, 0, 0, 0}, | ||
{0, 1, 0, 0, 0}, | ||
{0, 0, 1, 0, 0}, | ||
{0, 0, 0, 1, 0}, | ||
{0, 0, 0, 0, 3} | ||
} | ||
|
||
AREADIAGONAL_BEAM7 = { | ||
{1, 0, 0, 0, 0, 0, 0}, | ||
{0, 1, 0, 0, 0, 0, 0}, | ||
{0, 0, 1, 0, 0, 0, 0}, | ||
{0, 0, 0, 1, 0, 0, 0}, | ||
{0, 0, 0, 0, 1, 0, 0}, | ||
{0, 0, 0, 0, 0, 1, 0}, | ||
{0, 0, 0, 0, 0, 0, 3} | ||
} | ||
|
||
-- Circles | ||
AREA_CIRCLE2X2 = { | ||
{0, 1, 1, 1, 0}, | ||
{1, 1, 1, 1, 1}, | ||
{1, 1, 3, 1, 1}, | ||
{1, 1, 1, 1, 1}, | ||
{0, 1, 1, 1, 0} | ||
} | ||
|
||
AREA_CIRCLE3X3 = { | ||
{0, 0, 1, 1, 1, 0, 0}, | ||
{0, 1, 1, 1, 1, 1, 0}, | ||
{1, 1, 1, 1, 1, 1, 1}, | ||
{1, 1, 1, 3, 1, 1, 1}, | ||
{1, 1, 1, 1, 1, 1, 1}, | ||
{0, 1, 1, 1, 1, 1, 0}, | ||
{0, 0, 1, 1, 1, 0, 0} | ||
} | ||
|
||
-- Crosses | ||
AREA_CROSS1X1 = { | ||
{0, 1, 0}, | ||
{1, 3, 1}, | ||
{0, 1, 0} | ||
} | ||
|
||
AREA_CIRCLE5X5 = { | ||
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, | ||
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, | ||
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, | ||
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, | ||
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, | ||
{1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1}, | ||
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, | ||
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, | ||
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, | ||
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, | ||
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0} | ||
} | ||
|
||
AREA_CIRCLE6X6 = { | ||
{0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, | ||
{0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0}, | ||
{0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0}, | ||
{0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0}, | ||
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, | ||
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, | ||
{1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1}, | ||
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, | ||
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, | ||
{0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0}, | ||
{0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0}, | ||
{0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0}, | ||
{0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0} | ||
} | ||
|
||
-- Squares | ||
AREA_SQUARE1X1 = { | ||
{1, 1, 1}, | ||
{1, 3, 1}, | ||
{1, 1, 1} | ||
} | ||
|
||
-- Walls | ||
AREA_WALLFIELD = { | ||
{1, 1, 3, 1, 1} | ||
} | ||
|
||
AREADIAGONAL_WALLFIELD = { | ||
{0, 0, 0, 0, 1}, | ||
{0, 0, 0, 1, 1}, | ||
{0, 1, 3, 1, 0}, | ||
{1, 1, 0, 0, 0}, | ||
{1, 0, 0, 0, 0}, | ||
} | ||
|
||
-- This array contains all destroyable field items | ||
FIELDS = {1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1500, 1501, 1502, 1503, 1504} | ||
|
||
function Player:addPartyCondition(combat, variant, condition, baseMana) | ||
local party = self:getParty() | ||
if not party then | ||
self:sendCancelMessage(RETURNVALUE_NOPARTYMEMBERSINRANGE) | ||
self:getPosition():sendMagicEffect(CONST_ME_POFF) | ||
return false | ||
end | ||
|
||
local positions = combat:getPositions(self, variant) | ||
local members = party:getMembers() | ||
members[#members + 1] = party:getLeader() | ||
|
||
local affectedMembers = {} | ||
for _, member in ipairs(members) do | ||
local memberPosition = member:getPosition() | ||
for _, position in ipairs(positions) do | ||
if memberPosition == position then | ||
affectedMembers[#affectedMembers + 1] = member | ||
end | ||
end | ||
end | ||
|
||
if #affectedMembers <= 1 then | ||
self:sendCancelMessage(RETURNVALUE_NOPARTYMEMBERSINRANGE) | ||
self:getPosition():sendMagicEffect(CONST_ME_POFF) | ||
return false | ||
end | ||
|
||
local mana = math.ceil(#affectedMembers * math.pow(0.9, #affectedMembers - 1) * baseMana) | ||
if self:getMana() < mana then | ||
self:sendCancelMessage(RETURNVALUE_NOTENOUGHMANA) | ||
self:getPosition():sendMagicEffect(CONST_ME_POFF) | ||
return false | ||
end | ||
|
||
self:addMana(-mana) | ||
self:addManaSpent(mana) | ||
|
||
for _, member in ipairs(affectedMembers) do | ||
member:addCondition(condition) | ||
end | ||
|
||
for _, position in ipairs(positions) do | ||
position:sendMagicEffect(CONST_ME_MAGIC_BLUE) | ||
end | ||
return true | ||
end | ||
|
||
function Player:conjureItem(reagentId, conjureId, conjureCount, effect) | ||
if not conjureCount and conjureId ~= 0 then | ||
local itemType = ItemType(conjureId) | ||
if itemType:getId() == 0 then | ||
return false | ||
end | ||
|
||
local charges = itemType:getCharges() | ||
if charges ~= 0 then | ||
conjureCount = charges | ||
end | ||
end | ||
|
||
if reagentId ~= 0 and not self:removeItem(reagentId, 1, -1) then | ||
self:sendCancelMessage(RETURNVALUE_YOUNEEDAMAGICITEMTOCASTSPELL) | ||
self:getPosition():sendMagicEffect(CONST_ME_POFF) | ||
return false | ||
end | ||
|
||
local item = self:addItem(conjureId, conjureCount) | ||
if not item then | ||
self:sendCancelMessage(RETURNVALUE_NOTPOSSIBLE) | ||
self:getPosition():sendMagicEffect(CONST_ME_POFF) | ||
return false | ||
end | ||
|
||
if item:hasAttribute(ITEM_ATTRIBUTE_DURATION) then | ||
item:decay() | ||
end | ||
|
||
self:getPosition():sendMagicEffect(item:getType():isRune() and CONST_ME_MAGIC_RED or effect) | ||
return true | ||
end | ||
|
||
function Creature:addAttributeCondition(parameters) | ||
local condition = Condition(CONDITION_ATTRIBUTES) | ||
for _, parameter in ipairs(parameters) do | ||
if parameter.key and parameter.value then | ||
condition:setParameter(parameter.key, parameter.value) | ||
end | ||
end | ||
|
||
self:addCondition(condition) | ||
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
Oops, something went wrong.