-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Showing
11 changed files
with
1,264 additions
and
163 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,28 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<events> | ||
<!-- Creature methods --> | ||
<event class="Creature" method="onChangeOutfit" enabled="0" /> | ||
<event class="Creature" method="onAreaCombat" enabled="0" /> | ||
<event class="Creature" method="onTargetCombat" enabled="0" /> | ||
|
||
<!-- Party methods --> | ||
<event class="Party" method="onJoin" enabled="0" /> | ||
<event class="Party" method="onLeave" enabled="0" /> | ||
<event class="Party" method="onDisband" enabled="0" /> | ||
<event class="Party" method="onShareExperience" enabled="1" /> | ||
|
||
<!-- Player methods --> | ||
<event class="Player" method="onLook" enabled="1" /> | ||
<event class="Player" method="onLookInBattleList" enabled="1" /> | ||
<event class="Player" method="onLookInTrade" enabled="1" /> | ||
<event class="Player" method="onMoveItem" enabled="1" /> | ||
<event class="Player" method="onItemMoved" enabled="0" /> | ||
<event class="Player" method="onMoveCreature" enabled="0" /> | ||
<event class="Player" method="onReportBug" enabled="1" /> | ||
<event class="Player" method="onTurn" enabled="0" /> | ||
<event class="Player" method="onTradeRequest" enabled="0" /> | ||
<event class="Player" method="onTradeAccept" enabled="0" /> | ||
<event class="Player" method="onGainExperience" enabled="1" /> | ||
<event class="Player" method="onLoseExperience" enabled="0" /> | ||
<event class="Player" method="onGainSkillTries" enabled="1" /> | ||
</events> |
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,11 @@ | ||
function Creature:onChangeOutfit(outfit) | ||
return true | ||
end | ||
|
||
function Creature:onAreaCombat(tile, isAggressive) | ||
return RETURNVALUE_NOERROR | ||
end | ||
|
||
function Creature:onTargetCombat(target) | ||
return RETURNVALUE_NOERROR | ||
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,35 @@ | ||
function Party:onJoin(player) | ||
return true | ||
end | ||
|
||
function Party:onLeave(player) | ||
return true | ||
end | ||
|
||
function Party:onDisband() | ||
return true | ||
end | ||
|
||
function Party:onShareExperience(exp) | ||
local sharedExperienceMultiplier = 1.20 --20% | ||
local vocationsIds = {} | ||
|
||
local vocationId = self:getLeader():getVocation():getBase():getId() | ||
if vocationId ~= VOCATION_NONE then | ||
table.insert(vocationsIds, vocationId) | ||
end | ||
|
||
for _, member in ipairs(self:getMembers()) do | ||
vocationId = member:getVocation():getBase():getId() | ||
if not table.contains(vocationsIds, vocationId) and vocationId ~= VOCATION_NONE then | ||
table.insert(vocationsIds, vocationId) | ||
end | ||
end | ||
|
||
local size = #vocationsIds | ||
if size > 1 then | ||
sharedExperienceMultiplier = 1.0 + ((size * (5 * (size - 1) + 10)) / 100) | ||
end | ||
|
||
return (exp * sharedExperienceMultiplier) / (#self:getMembers() + 1) | ||
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,166 @@ | ||
function Player:onLook(thing, position, distance) | ||
local description = "You see " .. thing:getDescription(distance) | ||
if self:getGroup():getAccess() then | ||
if thing:isItem() then | ||
description = string.format("%s\nItem ID: %d", description, thing:getId()) | ||
|
||
local actionId = thing:getActionId() | ||
if actionId ~= 0 then | ||
description = string.format("%s, Action ID: %d", description, actionId) | ||
end | ||
|
||
local uniqueId = thing:getAttribute(ITEM_ATTRIBUTE_MOVEMENTID) | ||
if uniqueId > 0 and uniqueId < 65536 then | ||
description = string.format("%s, Movement ID: %d", description, uniqueId) | ||
end | ||
|
||
local itemType = thing:getType() | ||
|
||
local transformEquipId = itemType:getTransformEquipId() | ||
local transformDeEquipId = itemType:getTransformDeEquipId() | ||
if transformEquipId ~= 0 then | ||
description = string.format("%s\nTransforms to: %d (onEquip)", description, transformEquipId) | ||
elseif transformDeEquipId ~= 0 then | ||
description = string.format("%s\nTransforms to: %d (onDeEquip)", description, transformDeEquipId) | ||
end | ||
|
||
local decayId = itemType:getDecayId() | ||
if decayId ~= -1 then | ||
description = string.format("%s\nDecays to: %d", description, decayId) | ||
end | ||
elseif thing:isCreature() then | ||
local str = "%s\nHealth: %d / %d" | ||
if thing:isPlayer() and thing:getMaxMana() > 0 then | ||
str = string.format("%s, Mana: %d / %d", str, thing:getMana(), thing:getMaxMana()) | ||
end | ||
description = string.format(str, description, thing:getHealth(), thing:getMaxHealth()) .. "." | ||
end | ||
|
||
local position = thing:getPosition() | ||
description = string.format( | ||
"%s\nPosition: %d, %d, %d", | ||
description, position.x, position.y, position.z | ||
) | ||
|
||
if thing:isCreature() then | ||
if thing:isPlayer() then | ||
description = string.format("%s\nIP: %s.", description, Game.convertIpToString(thing:getIp())) | ||
end | ||
end | ||
end | ||
self:sendTextMessage(MESSAGE_INFO_DESCR, description) | ||
end | ||
|
||
function Player:onLookInBattleList(creature, distance) | ||
local description = "You see " .. creature:getDescription(distance) | ||
if self:getGroup():getAccess() then | ||
local str = "%s\nHealth: %d / %d" | ||
if creature:isPlayer() and creature:getMaxMana() > 0 then | ||
str = string.format("%s, Mana: %d / %d", str, creature:getMana(), creature:getMaxMana()) | ||
end | ||
description = string.format(str, description, creature:getHealth(), creature:getMaxHealth()) .. "." | ||
|
||
local position = creature:getPosition() | ||
description = string.format( | ||
"%s\nPosition: %d, %d, %d", | ||
description, position.x, position.y, position.z | ||
) | ||
|
||
if creature:isPlayer() then | ||
description = string.format("%s\nIP: %s", description, Game.convertIpToString(creature:getIp())) | ||
end | ||
end | ||
self:sendTextMessage(MESSAGE_INFO_DESCR, description) | ||
end | ||
|
||
function Player:onLookInTrade(partner, item, distance) | ||
self:sendTextMessage(MESSAGE_INFO_DESCR, "You see " .. item:getDescription(distance)) | ||
end | ||
|
||
function Player:onMoveItem(item, count, fromPosition, toPosition, fromCylinder, toCylinder) | ||
return true | ||
end | ||
|
||
function Player:onItemMoved(item, count, fromPosition, toPosition, fromCylinder, toCylinder) | ||
end | ||
|
||
function Player:onMoveCreature(creature, fromPosition, toPosition) | ||
return true | ||
end | ||
|
||
function Player:onReportBug(message, position, category) | ||
if self:getAccountType() == ACCOUNT_TYPE_NORMAL then | ||
return false | ||
end | ||
|
||
local name = self:getName() | ||
local file = io.open("data/reports/bugs/" .. name .. " report.txt", "a") | ||
|
||
if not file then | ||
self:sendTextMessage(MESSAGE_EVENT_DEFAULT, "There was an error when processing your report, please contact a gamemaster.") | ||
return true | ||
end | ||
|
||
io.output(file) | ||
io.write("------------------------------\n") | ||
io.write("Name: " .. name) | ||
if category == BUG_CATEGORY_MAP then | ||
io.write(" [Map position: " .. position.x .. ", " .. position.y .. ", " .. position.z .. "]") | ||
end | ||
local playerPosition = self:getPosition() | ||
io.write(" [Player Position: " .. playerPosition.x .. ", " .. playerPosition.y .. ", " .. playerPosition.z .. "]\n") | ||
io.write("Comment: " .. message .. "\n") | ||
io.close(file) | ||
|
||
self:sendTextMessage(MESSAGE_EVENT_DEFAULT, "Your report has been sent to " .. configManager.getString(configKeys.SERVER_NAME) .. ".") | ||
return true | ||
end | ||
|
||
function Player:onTurn(direction) | ||
return true | ||
end | ||
|
||
function Player:onTradeRequest(target, item) | ||
return true | ||
end | ||
|
||
function Player:onTradeAccept(target, item, targetItem) | ||
return true | ||
end | ||
|
||
local soulCondition = Condition(CONDITION_SOUL, CONDITIONID_DEFAULT) | ||
soulCondition:setTicks(4 * 60 * 1000) | ||
soulCondition:setParameter(CONDITION_PARAM_SOULGAIN, 1) | ||
|
||
function Player:onGainExperience(source, exp, rawExp) | ||
if not source or source:isPlayer() then | ||
return exp | ||
end | ||
|
||
-- Soul regeneration | ||
local vocation = self:getVocation() | ||
if self:getSoul() < vocation:getMaxSoul() and exp >= self:getLevel() then | ||
soulCondition:setParameter(CONDITION_PARAM_SOULTICKS, vocation:getSoulGainTicks() * 1000) | ||
self:addCondition(soulCondition) | ||
end | ||
|
||
-- Apply experience stage multiplier | ||
exp = exp * Game.getExperienceStage(self:getLevel()) | ||
|
||
return exp | ||
end | ||
|
||
function Player:onLoseExperience(exp) | ||
return exp | ||
end | ||
|
||
function Player:onGainSkillTries(skill, tries) | ||
if APPLY_SKILL_MULTIPLIER == false then | ||
return tries | ||
end | ||
|
||
if skill == SKILL_MAGLEVEL then | ||
return tries * configManager.getNumber(configKeys.RATE_MAGIC) | ||
end | ||
return tries * configManager.getNumber(configKeys.RATE_SKILL) | ||
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
Oops, something went wrong.