Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Sublime Self-Sacrifice(баг)
#1
Сборка "ребеллион" - овер
Хроники High Five

Скил Sublime Self-Sacrifice - Принесение себя в жертву(расходует 4000хп), благодаря чему восстанавливает все HP\CP\MP союзников. А также придает эффект неуязвимости. Время действия 15 сек.

Проблема заключается в следующем. Тип таргета в оверах стоит как правило: "TARGET_AURA" В следствии чего появляется баг, можно ресать фул статы мобам, варам и даже рейд боссам.
Поставил таргет "TARGET_PARTY" , теперь эффект распространяется на пати ну и на самого биша, т.е дает уд на 15 сек и ресает статы.
На лыжах же это сделано так "PARTY_NOTME"
А на овере я не вижу никакой альтернативы этому типу таргета.

В общем как мне сделать, чтобы скил распространялся только на пати, но не действовал на самого бишопа?

Код скила:
PHP код:
<?php 
<skill id="1505" levels="1" name="Sublime Self-Sacrifice">
<!--
Last modify: 23.08.2009

Description
: Sacrifices oneself to fully recover the HP/MP/CP of party members excluding oneself and to become invincible for 15 seconds.
-->
<
set name="magicType" val="MAGIC"/>
<
set name="icon" val="icon.skill1505"/>
<
set name="reuseDelay" val="3600000"/>
<
set name="magicLevel" val="81"/>
<
set name="hitTime" val="4000"/>
<
set name="hitCancelTime" val="500"/>
<
set name="hpConsume" val="4000"/>
<
set name="mpConsume1" val="44"/>
<
set name="mpConsume2" val="174"/>
<
set name="target" val="TARGET_PARTY"/>
<
set name="skillType" val="BUFF"/>
<
set name="skillRadius" val="1000"/>
<
set name="operateType" val="OP_ACTIVE"/>
<for>
<
effect count="1" name="HealPercent" time="0" val="100"/>
<
effect count="1" name="ManaHealPercent" time="0" val="100"/>
<
effect count="1" name="HealCPPercent" time="0" val="100"/>
<
effect abnormal="invul2" count="1" name="Invulnerable" stackOrder="-1" stackType="Invulnerable" time="15" val="0" cancelOnAction="true"/>
</for>
</
skill>
Ответ
#2
applyOnCaster="false" попробуйте
Ответ
#3
Также интересует скил Torumba's Constraint - скил рейд босса, который запрещает воскрешение.
У меня он просто напросто не реализован, нет эффекта.
Вот мой код:
PHP код:
<?php 
<skill id="6407" levels="1" name="Torumba's Constraint">
<
set name="magicType" val="MAGIC" />
<
set name="icon" val="icon.skill5919" />
<
set name="castRange" val="300" />
<
set name="hitCancelTime" val="500" />
<
set name="mpConsume1" val="15" />
<
set name="mpConsume2" val="60" />
<
set name="target" val="TARGET_ONE" />
<
set name="skillType" val="DEBUFF" />
<
set name="operateType" val="OP_ACTIVE" />
<for>
<
effect count="1" name="Debuff" time="300" val="0" />
</for>
</
skill>
На лыжах же он реализован и написан следующим образом.
PHP код:
<?php 
<skill id="6407" levels="1" name="Torumba's Constraint">
<!--
Confirmed CT2.5 -->
<
set name="abnormalLvl" val="1" />
<
set name="abnormalTime" val="300" />
<
set name="abnormalType" val="block_resurrection" />
<
set name="castRange" val="300" />
<
set name="effectRange" val="600" />
<
set name="isDebuff" val="true" />
<
set name="isMagic" val="1" /> <!-- Magic Skill -->
<
set name="mpConsume" val="60" />
<
set name="mpInitialConsume" val="15" />
<
set name="operateType" val="A2" />
<
set name="power" val="-1" /> <!-- Land Always -->
<
set name="pvp" val="true" />
<
set name="skillType" val="DEBUFF" />
<
set name="stayAfterDeath" val="true" />
<
set name="targetType" val="ONE" />
<for>
<
effect name="BlockResurrection" abnormalTime="300" val="0" abnormalLvl="1" abnormalType="block_resurrection" />
</for>
</
skill>

Добавлено через 10 минут
TonsFun Написал:applyOnCaster="false" попробуйте
не помогло.
Ответ
#4
собсно пробуйте, у меня это реализовано с помощью типа таргета
PHP код:
<?php 
case TARGET_FRIEND:
{
if(
activeChar.isMonster() || activeChar.isSiegeGuard())
{
targets.add(activeChar);
for(
Creature c : World.getAroundCharacters(activeChar, _skillRadius, 900))
{
if(!
c.isDead() && (c.isMonster() || c.isSiegeGuard()))
targets.add(c);
}
break;
}
Player player = activeChar.getPlayer();
for(
Player target : World.getAroundPlayers(player, _skillRadius, 600))
{
boolean check = false;
if(
check = player.getParty() != null && (player.getParty() == target.getParty()
||
player.getClanId() != 0 && target.getClanId() == player.getClanId()
||
player.getAllyId() != 0 && target.getAllyId() == player.getAllyId()))
check = true;

if(
target == player)
continue;
if(!
check)
continue;
if(
checkTarget(player, target, aimingTarget, forceUse, false) != null)
continue;
addTargetAndPetToList(targets, player, target);
}
addTargetAndPetToList(targets, player, player);
break;
}

PHP код:
<?php 
private void addTargetAndPetToList(List<Creature> targets, Player actor, Player target)
{
if((
actor == target || actor.isInRange(target, _skillRadius)) && target.isDead() == _isCorpse)
targets.add(target);
Summon pet = target.getPet();
if(
pet != null && actor.isInRange(pet, _skillRadius) && pet.isDead() == _isCorpse)
targets.add(pet);
}


По второму скилу(не знаю как на овере, беру пример с лыжи. адаптировать думаю будет не проблема):
Сам эффект:
PHP код:
<?php 
public final class BlockResurrection extends AbstractEffect
{
public
BlockResurrection(Condition attachCond, Condition applyCond, StatsSet set, StatsSet params)
{
super(attachCond, applyCond, set, params);
}

@
Override
public int getEffectFlags()
{
return
EffectFlag.BLOCK_RESURRECTION.getMask();
}
}
EffectFlag.BLOCK_RESURRECTION
PHP код:
<?php 
public enum EffectFlag
{
NONE,
CHARM_OF_COURAGE,
CHARM_OF_LUCK,
PHOENIX_BLESSING,
NOBLESS_BLESSING,
SILENT_MOVE,
PROTECTION_BLESSING,
RELAXING,
FEAR,
CONFUSED,
MUTED,
PSYCHICAL_MUTED,
PSYCHICAL_ATTACK_MUTED,
DISARMED,
ROOTED,
SLEEP,
STUNNED,
BETRAYED,
INVUL,
PARALYZED,
[
color=Red]BLOCK_RESURRECTION[/color],
SERVITOR_SHARE;

public
int getMask()
{
return
1 << ordinal();
}
}
L2Character функция beginCast добавить:
После:
PHP код:
<?php 
if (skill.hasEffectType(L2EffectType.RESURRECTION))
{
это
PHP код:
<?php 
if (isResurrectionBlocked() || target.isResurrectionBlocked())
{
sendPacket(SystemMessageId.REJECT_RESURRECTION); // Reject resurrection
target.sendPacket(SystemMessageId.REJECT_RESURRECTION);
функция isResurrectionBlocked
PHP код:
<?php 
public boolean isResurrectionBlocked()
{
return
isAffected(EffectFlag.BLOCK_RESURRECTION);
}
Добавить в енум AbnormalTypes
PHP код:
<?php 
BLOCK_RESURRECTION

Поправьте если где-то ошибсяSmile
Ответ
#5
<set name="target" val="TARGET_SELF" />
<set name="skillType" val="SELF_SACRIFICE" />
Ответ был прост без вмешательства в сурсы.
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)