Apresento-lhes as X-Weapons, uma pequena galeria com alguns scripts para armas especiais. O @Lucasmml me ajudou fazendo a primeira sprite pra incrementar a iniciativa.
- Magebane - o terror dos magos
Uma arma lendária: ela tem o poder de, a cada golpe, retirar um pouco do poder mágico do alvo.
weapons/scripts/x-weapons/magebane.lua:
-- Magebane local mana_min = 10 local mana_max = 35 function onUseWeapon(cid) local target = getCreatureTarget(cid) local random = math.random(mana_min, mana_max) doTargetCombatMana(cid, target, - random, - random, 10) return true end
Tag weapons.xml:
<melee id="id da arma" level="level necessário" unproperly="1" event="script" value="x-weapons\magebane.lua"/>
- Winter's Charm - o poder do inverno
Esse poderoso cajado se adapta aos poderes do mago que o utiliza, disparando gelo e atrapalhando a movimentação do alvo.
weapons/scripts/x-weapons/winterscharm.lua
-- Winter's Charm local AREA_SQUARE1X1 = { {1, 1, 1}, {1, 3, 1}, {1, 1, 1} } local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, true) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLICE) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1) local area = createCombatArea(AREA_SQUARE1X1) setCombatArea(combat, area) local condition = createConditionObject(CONDITION_PARALYZE) setConditionParam(condition, CONDITION_PARAM_TICKS, 5000) setConditionFormula(condition, -0.3, 0, -0.3, 0) setCombatCondition(combat, condition) function onUseWeapon(cid) local var = numberToVariant(getCreatureTarget(cid)) return doCombat(cid, combat, var) end
Tag weapons.xml:
<wand id="id da wand" level="level necessario" mana="mana consumida por hit" min="0" max="0" type="ice" event="script" value="x-weapons/winterscharm.lua"> <vocation id="2"/> <vocation id="6" showInDescription="0"/> <vocation id="10" showInDescription="0"/> </wand>
- Maul of Doom - o martelo dos amaldiçoados
Esse martelo foi submetido a rituais profanos, recebendo poderes sobrenaturais que afligem com dores contínuas quem tem o azar de receber seus golpes.
-- Importante --
Esse código foi feito pelo @brun123 para uma magia, só adaptei ele pra criar uma arma.
weapons/scripts/x-weapons/maulofdoom.lua
-- The Maul of Doom local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, true) setCombatParam(combat, COMBAT_PARAM_EFFECT, 17) local conditions = {} local min, max, skip = 10, 150, 5 local callbackfunc = setCombatCallBack or setCombatCallback for damage = min, max, skip do local condition = createConditionObject(CONDITION_CURSED) setConditionParam(condition, CONDITION_PARAM_DELAYED, 10) addDamageCondition(condition, 15, 2000, -damage) conditions[damage] = condition end function TG_CALLBACK (caster, target) local damage = getPlayerLevel(caster) * 0.2 + getPlayerSkillLevel(caster, 1) * 2 damage = math.floor((damage - damage % skip)) damage = math.min(max, math.max(min, damage)) if conditions[damage] then doAddCondition(target, conditions[damage]) else doAddCondition(target, conditions[min]) end end callbackfunc(combat, CALLBACK_PARAM_TARGETCREATURE, "TG_CALLBACK") function onUseWeapon(cid) local var = numberToVariant(getCreatureTarget(cid)) return doCombat(cid, combat, var) end
Tag weapons.xml:
<melee id="id da arma" level="level necessário" unproperly="1" event="script" value="x-weapons\maulofdoom.lua"/>
- Fury's Edge - no pain, no gain
Essa espada se alimenta da raiva do seu usuário, causando maior dano conforme o percentual de vida decresce.
weapons/scripts/x-weapons/furysedge.lua
function onUseWeapon(cid) local factor = 1 - (getCreatureHealth(cid) / getCreatureMaxHealth(cid)) local skill, level = getPlayerSkillLevel(cid, 2), getPlayerLevel(cid) local damage = math.floor((skill * 4 + level) * 0.2 * factor) local target = getCreatureTarget(cid) doTargetCombatHealth(cid, target, COMBAT_PHYSICALDAMAGE, - damage * 0.7, - damage * 1.3, 0) return true end
Tag weapons.xml:
<melee id="id da arma" level="level necessário" unproperly="1" event="script" value="x-weapons\furysedge.lua"/>
- The Blood Drinker
Esse machado é capaz de se alimentar do sangue fresco de suas vítimas, absorvendo-o para aumentar sua força.
creaturescripts/scripts/blooddrinker.lua
-- OMS #1 06/11/2013 -- The Blood Drinker -- Id da arma blood drinker blood_drinker_id = 2400 -- Máximo atk que a blood drinker pode ganhar de suas vítimas blood_drinker_maxatk = 10 -- Razão máxima entre o level do jogador e o level do alvo para que a blood drinker se alimente blood_drinker_level_rate = 3 / 2 function onKill(cid, target) if isPlayer(target) then local weapon = getPlayerWeapon(cid) if weapon.itemid == blood_drinker_id then local level = getItemAttribute(weapon.uid, "extraattack") or 0 if level < blood_drinker_maxatk then if getPlayerLevel(cid) / getPlayerLevel(target) <= blood_drinker_level_rate then local desc = level == 0 and "victim" or "victims" doItemSetAttribute(weapon.uid, "extraattack", level + 1) doItemSetAttribute(weapon.uid, "description", "this weapon thirsts for blood. It has drunk the fresh blood of "..level + 1 .." "..desc.." now.") doPlayerSendTextMessage(cid, 27, "The blood drinker has been upgraded by your victim's blood.") else doPlayerSendTextMessage(cid, 27, "Your target was too weak to feed the blood drinker.") end end end end return true end
Tag creaturescripts.xml:
<event type="kill" name="Blood_Drinker" event="script" value="blooddrinker.lua"/>
Tag items.xml:
<item id="id da blood drinker" article="a" name="blood drinker"> <attribute key="description" value="It thirts for fresh blood." /> <attribute key="weight" value="3700" /> <attribute key="defense" value="20" /> <attribute key="attack" value="45" /> <attribute key="weaponType" value="sword" /> </item>
Adicionar em creaturescripts/scripts/login.lua:
registerCreatureEvent(cid, "Blood_Drinker")