Refactored NPC display state functions.

This commit is contained in:
MobiusDev 2015-10-13 12:46:58 +00:00
parent aa2a04b466
commit c39ac887e3
13 changed files with 56 additions and 61 deletions

View File

@ -105,7 +105,7 @@ public class HillsOfGold extends AbstractNpcAI
}
else
{
npc.setState(1);
npc.setDisplayEffect(1);
}
return super.onSpawn(npc);
}

View File

@ -125,16 +125,16 @@ public final class SelMahumSquad extends AbstractNpcAI
case "fire":
{
startQuestTimer("fire", 30000 + getRandom(5000), npc, null);
npc.setState(FIRE_EFFECT_NONE);
npc.setDisplayEffect(FIRE_EFFECT_NONE);
if (getRandom(GameTimeController.getInstance().isNight() ? 2 : 4) < 1)
{
npc.setState(FIRE_EFFECT_BURN); // fire burns
npc.setDisplayEffect(FIRE_EFFECT_BURN); // fire burns
npc.broadcastEvent("SCE_CAMPFIRE_START", 600, null);
}
else
{
npc.setState(FIRE_EFFECT_NONE); // fire goes out
npc.setDisplayEffect(FIRE_EFFECT_NONE); // fire goes out
npc.broadcastEvent("SCE_CAMPFIRE_END", 600, null);
}
break;
@ -148,12 +148,12 @@ public final class SelMahumSquad extends AbstractNpcAI
if (npc.isNoRndWalk())
{
npc.doCast(SkillData.getInstance().getSkill(6331, 1));
npc.setState(MAHUM_EFFECT_SLEEP);
npc.setDisplayEffect(MAHUM_EFFECT_SLEEP);
}
if (npc.getVariables().getInt("BUSY_STATE") == 1) // Eating
{
npc.doCast(SkillData.getInstance().getSkill(6332, 1));
npc.setState(MAHUM_EFFECT_EAT);
npc.setDisplayEffect(MAHUM_EFFECT_EAT);
}
startQuestTimer("remove_effects", 300000, npc, null);
@ -168,7 +168,7 @@ public final class SelMahumSquad extends AbstractNpcAI
{
// myself.i_quest0 = 0;
npc.setIsRunning(true);
npc.setState(MAHUM_EFFECT_NONE);
npc.setDisplayEffect(MAHUM_EFFECT_NONE);
break;
}
case "reset_full_bottle_prize":
@ -226,7 +226,7 @@ public final class SelMahumSquad extends AbstractNpcAI
{
if (receiver.getId() == FIRE)
{
receiver.setState(FIRE_EFFECT_BURN);
receiver.setDisplayEffect(FIRE_EFFECT_BURN);
final L2Npc stove = addSpawn(STOVE, receiver.getX(), receiver.getY(), receiver.getZ() + 100, 0, false, 0);
stove.setSummoner(receiver);
startQuestTimer("notify_dinner", 2000, receiver, null); // @SCE_DINNER_EAT
@ -353,7 +353,7 @@ public final class SelMahumSquad extends AbstractNpcAI
}
else if (Util.contains(SQUAD_LEADERS, npc.getId()))
{
npc.setState(3);
npc.setDisplayEffect(3);
npc.setIsNoRndWalk(false);
}
return super.onSpawn(npc);
@ -390,7 +390,7 @@ public final class SelMahumSquad extends AbstractNpcAI
cancelQuestTimer("remove_effects", attacked, null);
attacked.getVariables().remove("BUSY_STATE");
attacked.setIsNoRndWalk(false);
attacked.setState(MAHUM_EFFECT_NONE);
attacked.setDisplayEffect(MAHUM_EFFECT_NONE);
if (attacked.getRightHandItem() == OHS_Weapon)
{
attacked.setRHandId(THS_Weapon);

View File

@ -60,7 +60,7 @@ public final class Anais extends AbstractNpcAI
private void burnerOnAttack(int pot, L2Npc anais)
{
L2Npc npc = _divineBurners.get(pot);
npc.setState(1);
npc.setDisplayEffect(1);
npc.setIsRunning(false);
if (pot < 4)
{
@ -99,7 +99,7 @@ public final class Anais extends AbstractNpcAI
}
final L2Npc b = _divineBurners.get(_pot);
_pot = _pot + 1;
b.setState(1);
b.setDisplayEffect(1);
b.setIsRunning(false);
L2Npc ward = addSpawn(GRAIL_WARD, new Location(b.getX(), b.getY(), b.getZ()), true, 0);
((L2Attackable) ward).addDamageHate(_nextTarget, 0, 999);
@ -134,7 +134,7 @@ public final class Anais extends AbstractNpcAI
cancelQuestTimer("GUARD_ATTACK", npc, _nextTarget);
if (_current != null)
{
_current.setState(2);
_current.setDisplayEffect(2);
_current.setIsRunning(false);
_current = null;
}
@ -186,7 +186,7 @@ public final class Anais extends AbstractNpcAI
cancelQuestTimer("CHECK", npc, null);
if (_current != null)
{
_current.setState(2);
_current.setDisplayEffect(2);
_current.setIsRunning(false);
_current = null;
}

View File

@ -112,14 +112,14 @@ public final class Minigame extends AbstractNpcAI
{
if (npc.getId() == BURNER)
{
npc.setState(2);
npc.setDisplayEffect(2);
npc.setIsRunning(false);
}
else
{
for (L2Npc burner : room.getBurners())
{
burner.setState(2);
burner.setDisplayEffect(2);
burner.setIsRunning(false);
}
}
@ -147,7 +147,7 @@ public final class Minigame extends AbstractNpcAI
if (room.getCurrentPot() < 9)
{
L2Npc b = room.getBurners()[room.getOrder()[room.getCurrentPot()]];
b.setState(1);
b.setDisplayEffect(1);
b.setIsRunning(false);
startQuestTimer("off", 2000, b, null); // Stopping burning each pot 2s after
startQuestTimer("timer", TIMER_INTERVAL * 1000, npc, null);
@ -279,7 +279,7 @@ public final class Minigame extends AbstractNpcAI
{
if (room.getCurrentPot() < 8)
{
npc.setState(1);
npc.setDisplayEffect(1);
npc.setIsRunning(false);
startQuestTimer("off", 2000, npc, null);
room.setCurrentPot(room.getCurrentPot() + 1);
@ -427,7 +427,7 @@ public final class Minigame extends AbstractNpcAI
{
for (L2Npc burner : _burners)
{
burner.setState(1);
burner.setDisplayEffect(1);
burner.setIsRunning(false);
}
}

View File

@ -121,7 +121,7 @@ public final class Maguen extends AbstractNpcAI
{
npc.getAI().stopFollow();
final int randomEffect = getRandom(1, 3);
npc.setState(randomEffect);
npc.setDisplayEffect(randomEffect);
npc.getVariables().set("NPC_EFFECT", randomEffect);
startQuestTimer("SECOND_TIMER", 5000 + getRandom(300), npc, player);
npc.broadcastSocialAction(getRandom(1, 3));
@ -130,7 +130,7 @@ public final class Maguen extends AbstractNpcAI
case "SECOND_TIMER":
{
final int randomEffect = getRandom(1, 3);
npc.setState(randomEffect);
npc.setDisplayEffect(randomEffect);
npc.getVariables().set("NPC_EFFECT", randomEffect);
startQuestTimer("THIRD_TIMER", 4600 + getRandom(600), npc, player);
npc.broadcastSocialAction(getRandom(1, 3));
@ -139,7 +139,7 @@ public final class Maguen extends AbstractNpcAI
case "THIRD_TIMER":
{
final int randomEffect = getRandom(1, 3);
npc.setState(randomEffect);
npc.setDisplayEffect(randomEffect);
npc.getVariables().set("NPC_EFFECT", randomEffect);
startQuestTimer("FORTH_TIMER", 4200 + getRandom(900), npc, player);
npc.broadcastSocialAction(getRandom(1, 3));
@ -148,7 +148,7 @@ public final class Maguen extends AbstractNpcAI
case "FORTH_TIMER":
{
npc.getVariables().set("NPC_EFFECT", 0);
npc.setState(4);
npc.setDisplayEffect(4);
startQuestTimer("END_TIMER", 500, npc, player);
npc.broadcastSocialAction(getRandom(1, 3));
break;
@ -249,7 +249,7 @@ public final class Maguen extends AbstractNpcAI
{
startQuestTimer("END_TIMER", 1000, npc, player);
}
npc.setState(4);
npc.setDisplayEffect(4);
return super.onSpellFinished(npc, player, skill);
}

View File

@ -268,7 +268,7 @@ public class SeedOfAnnihilation extends AbstractNpcAI
for (int j = 0; j < _regionsData[i].af_spawns.length; j++)
{
_regionsData[i].af_npcs[j] = addSpawn(ANNIHILATION_FURNACE, _regionsData[i].af_spawns[j][0], _regionsData[i].af_spawns[j][1], _regionsData[i].af_spawns[j][2], _regionsData[i].af_spawns[j][3], false, 0);
_regionsData[i].af_npcs[j].setState(_regionsData[i].activeBuff);
_regionsData[i].af_npcs[j].setDisplayEffect(_regionsData[i].activeBuff);
}
ZoneManager.getInstance().getZoneById(_regionsData[i].buff_zone, L2EffectZone.class).addSkill(ZONE_BUFFS[_regionsData[i].activeBuff], 1);
}
@ -311,7 +311,7 @@ public class SeedOfAnnihilation extends AbstractNpcAI
for (L2Npc af : _regionsData[i].af_npcs)
{
af.setState(_regionsData[i].activeBuff);
af.setDisplayEffect(_regionsData[i].activeBuff);
}
L2EffectZone zone = ZoneManager.getInstance().getZoneById(_regionsData[i].buff_zone, L2EffectZone.class);

View File

@ -639,7 +639,7 @@ public class AdminEffects implements IAdminCommandHandler
{
String type = st.nextToken();
int diplayeffect = Integer.parseInt(type);
npc.setState(diplayeffect);
npc.setDisplayEffect(diplayeffect);
}
catch (Exception e)
{

View File

@ -302,9 +302,9 @@ public final class CavernOfThePirateCaptain extends AbstractInstance
{
case "BURN_BLUE":
{
if (npc.isState(0))
if (npc.getDisplayEffect() == 0)
{
npc.setState(1); // Burning
npc.setDisplayEffect(1); // Burning
startQuestTimer("BURN_BLUE2", 3000, npc, player);
if (world._blueFounded == 4)
{
@ -315,27 +315,27 @@ public final class CavernOfThePirateCaptain extends AbstractInstance
}
case "BURN_BLUE2":
{
if (npc.isState(1)) // Burning
if (npc.getDisplayEffect() == 1) // Burning
{
npc.setState(3); // Blue glow
npc.setDisplayEffect(3); // Blue glow
}
break;
}
case "BURN_RED":
{
if (npc.isState(0))
if (npc.getDisplayEffect() == 0)
{
npc.setState(1); // Burning
npc.setDisplayEffect(1); // Burning
startQuestTimer("BURN_RED2", 3000, npc, player);
}
break;
}
case "BURN_RED2":
{
if (npc.isState(1)) // Burning
if (npc.getDisplayEffect() == 1) // Burning
{
final int room = getRoomByCandle(npc);
npc.setState(2); // Red glow
npc.setDisplayEffect(2); // Red glow
manageScreenMsg(world, NpcStringId.THE_CANDLES_CAN_LEAD_YOU_TO_ZAKEN_DESTROY_HIM);
spawnNpc(world._is83 ? DOLL_BLADER_83 : DOLL_BLADER_60, room, player, world);
spawnNpc(world._is83 ? VALE_MASTER_83 : VALE_MASTER_60, room, player, world);

View File

@ -504,7 +504,7 @@ public final class IceQueensCastleBattle extends AbstractInstance
{
final L2Attackable knight = (L2Attackable) addSpawn((world.isHardCore ? KNIGHT_HARD : KNIGHT_EASY), loc, false, 0, false, world.getInstanceId());
knight.disableCoreAI(true);
knight.setState(1);
knight.setDisplayEffect(1);
knight.getSpawn().setLocation(loc);
world.spawnedMobs.add(knight);
startQuestTimer("ICE_RUPTURE", getRandom(2, 5) * 1000, knight, null);
@ -525,7 +525,7 @@ public final class IceQueensCastleBattle extends AbstractInstance
knight.getVariables().set("SPAWNED_NPC", npc);
knight.disableCoreAI(true);
knight.setIsImmobilized(true);
knight.setState(1);
knight.setDisplayEffect(1);
knight.getSpawn().setLocation(loc);
world.spawnedMobs.add(knight);
@ -540,7 +540,7 @@ public final class IceQueensCastleBattle extends AbstractInstance
{
final Location loc = new Location(MIDDLE_POINT.getX() + getRandom(-1000, 1000), MIDDLE_POINT.getY() + getRandom(-1000, 1000), MIDDLE_POINT.getZ());
final L2Attackable glacier = (L2Attackable) addSpawn(GLACIER, loc, false, 0, false, world.getInstanceId());
glacier.setState(1);
glacier.setDisplayEffect(1);
glacier.disableCoreAI(true);
glacier.setIsImmobilized(true);
world.spawnedMobs.add(glacier);
@ -554,7 +554,7 @@ public final class IceQueensCastleBattle extends AbstractInstance
{
npc.disableCoreAI(false);
npc.setIsImmobilized(false);
npc.setState(2);
npc.setDisplayEffect(2);
manageRandomAttack(world, (L2Attackable) npc);
}
break;
@ -566,7 +566,7 @@ public final class IceQueensCastleBattle extends AbstractInstance
}
case "CHANGE_STATE":
{
npc.setState(2);
npc.setDisplayEffect(2);
startQuestTimer("CAST_SKILL", 20000, npc, null);
break;
}
@ -582,7 +582,7 @@ public final class IceQueensCastleBattle extends AbstractInstance
}
case "SUICIDE":
{
npc.setState(3);
npc.setDisplayEffect(3);
npc.setIsMortal(true);
npc.doDie(null);
break;
@ -989,7 +989,7 @@ public final class IceQueensCastleBattle extends AbstractInstance
manageRandomAttack(world, (L2Attackable) npc);
npc.disableCoreAI(false);
npc.setIsImmobilized(false);
npc.setState(2);
npc.setDisplayEffect(2);
cancelQuestTimer("ICE_RUPTURE", npc, null);
}
break;

View File

@ -254,7 +254,7 @@ public final class LabyrinthOfBelis extends AbstractInstance
case "room_3":
{
world.setStatus(7);
world.generator.setState(1);
world.generator.setDisplayEffect(1);
final L2ZoneType dmgZone = ZoneManager.getInstance().getZoneById(DAMAGE_ZONE_ID);
if (dmgZone != null)
{

View File

@ -210,7 +210,7 @@ public final class Q10294_SevenSignsToTheMonasteryOfSilence extends Quest
case "RIGHT_BOOK1":
{
qs.set("good1", "1");
npc.setState(1);
npc.setDisplayEffect(1);
startQuestTimer("SPAWN_MOBS", 22000, npc, player);
htmltext = "32821-02.html";
if (hasCheckedAllRightBooks(qs))
@ -222,7 +222,7 @@ public final class Q10294_SevenSignsToTheMonasteryOfSilence extends Quest
case "RIGHT_BOOK2":
{
qs.set("good2", "1");
npc.setState(1);
npc.setDisplayEffect(1);
npc.setTarget(player);
npc.doCast(VAMPIRIC_RAGE.getSkill());
htmltext = "32821-02.html";
@ -235,7 +235,7 @@ public final class Q10294_SevenSignsToTheMonasteryOfSilence extends Quest
case "RIGHT_BOOK3":
{
qs.set("good3", "1");
npc.setState(1);
npc.setDisplayEffect(1);
final L2Npc jude = addSpawn(JUDE_VAN_ETINA, 85783, -253471, -8320, 65, false, 0, false, player.getInstanceId());
jude.setTarget(player);
jude.doCast(RESIST_HOLY.getSkill());
@ -249,7 +249,7 @@ public final class Q10294_SevenSignsToTheMonasteryOfSilence extends Quest
case "RIGHT_BOOK4":
{
qs.set("good4", "1");
npc.setState(1);
npc.setDisplayEffect(1);
final L2Npc solina = addSpawn(SOLINAS_EVIL_THOUGHTS, 85793, -247581, -8320, 0, false, 0, false, player.getInstanceId());
solina.setTarget(player);
solina.doCast(RESIST_HOLY.getSkill());

View File

@ -141,7 +141,7 @@ public class L2Npc extends L2Character
private int _soulshotamount = 0;
private int _spiritshotamount = 0;
private int _state = 0;
private int _displayEffect = 0;
private int _shotsMask = 0;
private int _killingBlowWeaponId;
@ -1423,23 +1423,18 @@ public class L2Npc extends L2Character
return getTemplate().getAIType();
}
public void setState(int state)
public void setDisplayEffect(int val)
{
if (state != _state)
if (val != _displayEffect)
{
_state = state;
broadcastPacket(new ExChangeNpcState(getObjectId(), state));
_displayEffect = val;
broadcastPacket(new ExChangeNpcState(getObjectId(), val));
}
}
public boolean isState(int state)
public int getDisplayEffect()
{
return _state == state;
}
public int getState()
{
return _state;
return _displayEffect;
}
public int getColorEffect()

View File

@ -89,7 +89,7 @@ public class NpcInfo extends AbstractMaskPacket<NpcInfoType>
addComponentType(NpcInfoType.TEAM);
}
if (npc.getState() > 0)
if (npc.getDisplayEffect() > 0)
{
addComponentType(NpcInfoType.DISPLAY_EFFECT);
}
@ -327,7 +327,7 @@ public class NpcInfo extends AbstractMaskPacket<NpcInfoType>
}
if (containsMask(NpcInfoType.DISPLAY_EFFECT))
{
writeD(_npc.getState());
writeD(_npc.getDisplayEffect());
}
if (containsMask(NpcInfoType.TRANSFORMATION))
{