public StatusEffectContainer(Character owner)
 {
     this.owner                = owner;
     this.effects              = new Dictionary <uint, StatusEffect>();
     statusSubpackets          = new List <SubPacket>();
     statusTimerPropPacketUtil = new ActorPropertyPacketUtil("charawork/Status", owner);
 }
Exemplo n.º 2
0
        public override void PostUpdate(DateTime tick, List <SubPacket> packets = null)
        {
            if (updateFlags != ActorUpdateFlags.None)
            {
                packets = packets ?? new List <SubPacket>();

                if ((updateFlags & ActorUpdateFlags.Appearance) != 0)
                {
                    packets.Add(new SetActorAppearancePacket(modelId, appearanceIds).BuildPacket(actorId));
                }

                if ((updateFlags & ActorUpdateFlags.State) != 0)
                {
                    packets.Add(SetActorStatePacket.BuildPacket(actorId, currentMainState, 0x0));
                    packets.Add(CommandResultX00Packet.BuildPacket(actorId, 0x72000062, 0));
                    packets.Add(CommandResultX01Packet.BuildPacket(actorId, 0x7C000062, 21001, new CommandResult(actorId, 0, 1)));

                    updateFlags &= ~ActorUpdateFlags.State;
                    //DoBattleAction(21001, 0x7C000062, new BattleAction(this.actorId, 0, 1, 0, 0, 1)); //Attack Mode
                }

                if ((updateFlags & ActorUpdateFlags.SubState) != 0)
                {
                    packets.Add(SetActorSubStatePacket.BuildPacket(actorId, currentSubState));
                    packets.Add(CommandResultX00Packet.BuildPacket(actorId, 0x72000062, 0));
                    packets.Add(CommandResultX01Packet.BuildPacket(actorId, 0x7C000062, 21001, new CommandResult(actorId, 0, 1)));

                    updateFlags &= ~ActorUpdateFlags.SubState;
                    //DoBattleAction(21001, 0x7C000062, new BattleAction(this.actorId, 0, 1, 0, 0, 1)); //Attack Mode
                }

                if ((updateFlags & ActorUpdateFlags.Status) != 0)
                {
                    List <SubPacket> statusPackets = statusEffects.GetStatusPackets();
                    packets.AddRange(statusPackets);
                    statusPackets.Clear();
                    updateFlags &= ~ActorUpdateFlags.Status;
                }

                if ((updateFlags & ActorUpdateFlags.StatusTime) != 0)
                {
                    packets.AddRange(statusEffects.GetStatusTimerPackets());
                    statusEffects.ResetPropPacketUtil();
                    updateFlags &= ~ActorUpdateFlags.StatusTime;
                }

                if ((updateFlags & ActorUpdateFlags.HpTpMp) != 0)
                {
                    var propPacketUtil = new ActorPropertyPacketUtil("charaWork/stateAtQuicklyForAll", this);
                    propPacketUtil.AddProperty("charaWork.parameterSave.hp[0]");
                    propPacketUtil.AddProperty("charaWork.parameterSave.hpMax[0]");
                    propPacketUtil.AddProperty("charaWork.parameterSave.mp");
                    propPacketUtil.AddProperty("charaWork.parameterSave.mpMax");
                    propPacketUtil.AddProperty("charaWork.parameterTemp.tp");
                    packets.AddRange(propPacketUtil.Done());
                }

                base.PostUpdate(tick, packets);
            }
        }
Exemplo n.º 3
0
        //Set given proc to true and send packet if this is a player
        // todo: hidden status effects for timing when the procs fall off
        public void SetProc(int procId, bool val = true)
        {
            charaWork.battleTemp.timingCommandFlag[procId] = val;
            uint effectId = (uint)StatusEffectId.EvadeProc + (uint)procId;

            //If a proc just occurred, add a hidden effect effect
            if (val)
            {
                StatusEffect procEffect = Server.GetWorldManager().GetStatusEffect(effectId);
                procEffect.SetDuration(5);
                procEffect.SetSilent(true);
                statusEffects.AddStatusEffect(procEffect, this, true, true);
            }
            //Otherwise we're reseting a proc, remove the status
            else
            {
                statusEffects.RemoveStatusEffect(statusEffects.GetStatusEffectById((uint)effectId));
            }

            if (this is Player)
            {
                var propPacketUtil = new ActorPropertyPacketUtil("charaWork/timingCommand", this);
                propPacketUtil.AddProperty(String.Format("charaWork.battleTemp.timingCommandFlag[{0}]", procId));
                ((Player)this).QueuePackets(propPacketUtil.Done());
            }
        }
        public void UpdateUiState(int index, sbyte value)
        {
            guildleveWork.uiState[index] = value;
            ActorPropertyPacketUtil propertyBuilder = new ActorPropertyPacketUtil("guildleveWork/infoVariable", this);

            propertyBuilder.AddProperty(String.Format("guildleveWork.uiState[{0}]", index));
            SendPacketsToPlayers(propertyBuilder.Done());
        }
        public void SyncAllInfo()
        {
            ActorPropertyPacketUtil propertyBuilder = new ActorPropertyPacketUtil("guildleveWork/infoVariable", this);

            if (guildleveWork.aimNum[0] != 0)
            {
                propertyBuilder.AddProperty("guildleveWork.aimNum[0]");
            }
            if (guildleveWork.aimNum[1] != 0)
            {
                propertyBuilder.AddProperty("guildleveWork.aimNum[1]");
            }
            if (guildleveWork.aimNum[2] != 0)
            {
                propertyBuilder.AddProperty("guildleveWork.aimNum[2]");
            }
            if (guildleveWork.aimNum[3] != 0)
            {
                propertyBuilder.AddProperty("guildleveWork.aimNum[3]");
            }

            if (guildleveWork.aimNumNow[0] != 0)
            {
                propertyBuilder.AddProperty("guildleveWork.aimNumNow[0]");
            }
            if (guildleveWork.aimNumNow[1] != 0)
            {
                propertyBuilder.AddProperty("guildleveWork.aimNumNow[1]");
            }
            if (guildleveWork.aimNumNow[2] != 0)
            {
                propertyBuilder.AddProperty("guildleveWork.aimNumNow[2]");
            }
            if (guildleveWork.aimNumNow[3] != 0)
            {
                propertyBuilder.AddProperty("guildleveWork.aimNumNow[3]");
            }

            if (guildleveWork.uiState[0] != 0)
            {
                propertyBuilder.AddProperty("guildleveWork.uiState[0]");
            }
            if (guildleveWork.uiState[1] != 0)
            {
                propertyBuilder.AddProperty("guildleveWork.uiState[1]");
            }
            if (guildleveWork.uiState[2] != 0)
            {
                propertyBuilder.AddProperty("guildleveWork.uiState[2]");
            }
            if (guildleveWork.uiState[3] != 0)
            {
                propertyBuilder.AddProperty("guildleveWork.uiState[3]");
            }

            SendPacketsToPlayers(propertyBuilder.Done());
        }
        public void UpdateMarkers(int markerIndex, float x, float y, float z)
        {
            guildleveWork.markerX[markerIndex] = x;
            guildleveWork.markerY[markerIndex] = y;
            guildleveWork.markerZ[markerIndex] = z;
            ActorPropertyPacketUtil propertyBuilder = new ActorPropertyPacketUtil("guildleveWork/marker", this);

            propertyBuilder.AddProperty(String.Format("guildleveWork.markerX[{0}]", markerIndex));
            propertyBuilder.AddProperty(String.Format("guildleveWork.markerY[{0}]", markerIndex));
            propertyBuilder.AddProperty(String.Format("guildleveWork.markerZ[{0}]", markerIndex));
            SendPacketsToPlayers(propertyBuilder.Done());
        }
        public void EndGuildleve(bool wasCompleted)
        {
            if (isEnded)
            {
                return;
            }
            isEnded = true;

            completionTime = Utils.UnixTimeStampUTC() - guildleveWork.startTime;

            if (wasCompleted)
            {
                foreach (Actor a in GetPlayerMembers())
                {
                    Player player = (Player)a;
                    player.MarkGuildleve(guildleveId, true, true);
                    player.PlayAnimation(0x02000002, true);
                    player.ChangeMusic(81);
                    player.SendGameMessage(Server.GetWorldManager().GetActor(), 50023, 0x20, (object)(int)guildleveId);
                    player.SendDataPacket("attention", Server.GetWorldManager().GetActor(), "", 50023, (object)(int)guildleveId);
                }
            }

            foreach (Actor a in GetNpcMembers())
            {
                Npc npc = (Npc)a;
                npc.Despawn();
                RemoveMember(a);
            }

            guildleveWork.startTime = 0;
            guildleveWork.signal    = -1;
            ActorPropertyPacketUtil propertyBuilder = new ActorPropertyPacketUtil("guildleveWork/signal", this);

            propertyBuilder.AddProperty("guildleveWork.signal");
            propertyBuilder.NewTarget("guildleveWork/start");
            propertyBuilder.AddProperty("guildleveWork.startTime");
            SendPacketsToPlayers(propertyBuilder.Done());

            if (wasCompleted)
            {
                Npc aetheryteNode = zone.SpawnActor(1200040, String.Format("{0}:warpExit", guildleveOwner.actorName), guildleveOwner.positionX, guildleveOwner.positionY, guildleveOwner.positionZ);
                AddMember(aetheryteNode);

                foreach (Actor a in GetPlayerMembers())
                {
                    Player player = (Player)a;
                    player.SendGameMessage(Server.GetWorldManager().GetActor(), 50029, 0x20);
                    player.SendGameMessage(Server.GetWorldManager().GetActor(), 50032, 0x20);
                }
            }
        }
Exemplo n.º 8
0
        //This logic isn't correct, order of GetStatusEffects() is not necessarily the same as the actual effects in game. Also sending every time at once isn't needed
        public List <SubPacket> GetActorStatusPackets()
        {
            var propPacketUtil = new ActorPropertyPacketUtil("charaWork/status", this);
            var i = 0;

            foreach (var effect in statusEffects.GetStatusEffects())
            {
                if (!effect.GetHidden())
                {
                    propPacketUtil.AddProperty(String.Format("charaWork.statusShownTime[{0}]", i));
                    propPacketUtil.AddProperty(String.Format("charaWork.statusShownTime[{0}]", i));
                    i++;
                }
            }
            return(propPacketUtil.Done());
        }
Exemplo n.º 9
0
        public override void PostUpdate(DateTime tick, List <SubPacket> packets = null)
        {
            // todo: should probably add another flag for battleTemp since all this uses reflection
            packets = new List <SubPacket>();
            if ((updateFlags & ActorUpdateFlags.HpTpMp) != 0)
            {
                var propPacketUtil = new ActorPropertyPacketUtil("charaWork/stateAtQuicklyForAll", this);
                propPacketUtil.AddProperty("charaWork.parameterSave.state_mainSkill[0]");
                propPacketUtil.AddProperty("charaWork.parameterSave.state_mainSkillLevel");

                propPacketUtil.AddProperty("charaWork.battleTemp.castGauge_speed[0]");
                propPacketUtil.AddProperty("charaWork.battleTemp.castGauge_speed[1]");
                packets.AddRange(propPacketUtil.Done());
            }
            base.PostUpdate(tick, packets);
        }
Exemplo n.º 10
0
        public void doClassChange(byte classId)
        {
            //load hotbars
            //Calculate stats
            //Calculate hp/mp

            //Get Potenciel ??????

            //Set HP/MP/TP PARAMS

            //Set mainskill and level

            //Set Parameters

            //Set current EXP

            //Set Hotbar Commands 1
            //Set Hotbar Commands 2
            //Set Hotbar Commands 3

            //Check if bonus point available... set

            //Set rested EXP

            charaWork.parameterSave.state_mainSkill[0]   = classId;
            charaWork.parameterSave.state_mainSkillLevel = charaWork.battleSave.skillLevel[classId - 1];

            playerWork.restBonusExpRate = 0.0f;

            ActorPropertyPacketUtil propertyBuilder = new ActorPropertyPacketUtil("charaWork/stateForAll", this, actorId);

            propertyBuilder.addProperty("charaWork.parameterSave.state_mainSkill[0]");
            propertyBuilder.addProperty("charaWork.parameterSave.state_mainSkillLevel");
            propertyBuilder.newTarget("playerWork/expBonus");
            propertyBuilder.addProperty("playerWork.restBonusExpRate");

            List <SubPacket> packets = propertyBuilder.done();

            foreach (SubPacket packet in packets)
            {
                broadcastPacket(packet, true);
            }

            Database.savePlayerCurrentClass(this);
        }
Exemplo n.º 11
0
        public void SetCurrentContentGroup(ContentGroup group)
        {
            if (group != null)
            {
                charaWork.currentContentGroup = group.GetTypeId();
            }
            else
            {
                charaWork.currentContentGroup = 0;
            }

            currentContentGroup = group;

            ActorPropertyPacketUtil propPacketUtil = new ActorPropertyPacketUtil("charaWork/currentContentGroup", this);

            propPacketUtil.AddProperty("charaWork.currentContentGroup");
            zone.BroadcastPacketsAroundActor(this, propPacketUtil.Done());
        }
Exemplo n.º 12
0
        //Reset procs. Only send packet if any procs were actually reset.
        //This assumes you can't use weaponskills between getting a proc and using the procced ability
        public void ResetProcs()
        {
            var  propPacketUtil = new ActorPropertyPacketUtil("charaWork/timingCommand", this);
            bool shouldSend     = false;

            for (int i = 0; i < 4; i++)
            {
                if (charaWork.battleTemp.timingCommandFlag[i])
                {
                    shouldSend = true;
                    charaWork.battleTemp.timingCommandFlag[i] = false;
                    propPacketUtil.AddProperty(String.Format("charaWork.battleTemp.timingCommandFlag[{0}]", i));
                }
            }

            if (shouldSend && this is Player)
            {
                ((Player)this).QueuePackets(propPacketUtil.Done());
            }
        }
Exemplo n.º 13
0
        //This might need more work
        //I think there migh be something that ties mobs to parties
        //and the client checks if any mobs are tied to the current party
        //and bases the color on that. Adding mob to party obviously doesn't work
        //Based on depictionjudge script:
        //HATE_TYPE_NONE is for passive
        //HATE_TYPE_ENGAGED is for aggroed mobs
        //HATE_TYPE_ENGAGED_PARTY is for claimed mobs, client uses occupancy group to determine if mob is claimed by player's party
        //for now i'm just going to assume that occupancygroup will be BattleNpc's currentparties when they're in combat,
        //so if party isn't null, they're claimed.
        public SubPacket GetHateTypePacket(Player player)
        {
            npcWork.hateType = NpcWork.HATE_TYPE_NONE;
            if (player != null)
            {
                if (aiContainer.IsEngaged())
                {
                    npcWork.hateType = NpcWork.HATE_TYPE_ENGAGED;

                    if (this.currentParty != null)
                    {
                        npcWork.hateType = NpcWork.HATE_TYPE_ENGAGED_PARTY;
                    }
                }
            }
            npcWork.hateType = 3;
            var propPacketUtil = new ActorPropertyPacketUtil("npcWork/hate", this);

            propPacketUtil.AddProperty("npcWork.hateType");
            return(propPacketUtil.Done()[0]);
        }
        public void StartGuildleve()
        {
            foreach (Actor p in GetPlayerMembers())
            {
                Player player = (Player)p;

                //Set music
                if (guildleveData.location == 1)
                {
                    player.ChangeMusic(22);
                }
                else if (guildleveData.location == 2)
                {
                    player.ChangeMusic(14);
                }
                else if (guildleveData.location == 3)
                {
                    player.ChangeMusic(26);
                }
                else if (guildleveData.location == 4)
                {
                    player.ChangeMusic(16);
                }

                //Show Start Messages
                player.SendGameMessage(Server.GetWorldManager().GetActor(), 50022, 0x20, guildleveId, selectedDifficulty);
                player.SendDataPacket("attention", Server.GetWorldManager().GetActor(), "", 50022, guildleveId, selectedDifficulty);
                player.SendGameMessage(Server.GetWorldManager().GetActor(), 50026, 0x20, (object)(int)guildleveData.timeLimit);
            }

            guildleveWork.startTime = Utils.UnixTimeStampUTC();
            ActorPropertyPacketUtil propertyBuilder = new ActorPropertyPacketUtil("guildleveWork/start", this);

            propertyBuilder.AddProperty("guildleveWork.startTime");
            SendPacketsToPlayers(propertyBuilder.Done());
        }
Exemplo n.º 15
0
        public override List <SubPacket> GetInitPackets()
        {
            ActorPropertyPacketUtil propPacketUtil = new ActorPropertyPacketUtil("/_init", this);

            //Potential
            propPacketUtil.AddProperty("charaWork.battleSave.potencial");

            //Properties
            for (int i = 0; i < charaWork.property.Length; i++)
            {
                if (charaWork.property[i] != 0)
                {
                    propPacketUtil.AddProperty(String.Format("charaWork.property[{0}]", i));
                }
            }

            //Parameters
            propPacketUtil.AddProperty("charaWork.parameterSave.hp[0]");
            propPacketUtil.AddProperty("charaWork.parameterSave.hpMax[0]");
            propPacketUtil.AddProperty("charaWork.parameterSave.mp");
            propPacketUtil.AddProperty("charaWork.parameterSave.mpMax");
            propPacketUtil.AddProperty("charaWork.parameterTemp.tp");

            if (charaWork.parameterSave.state_mainSkill[0] != 0)
            {
                propPacketUtil.AddProperty("charaWork.parameterSave.state_mainSkill[0]");
            }
            if (charaWork.parameterSave.state_mainSkill[1] != 0)
            {
                propPacketUtil.AddProperty("charaWork.parameterSave.state_mainSkill[1]");
            }
            if (charaWork.parameterSave.state_mainSkill[2] != 0)
            {
                propPacketUtil.AddProperty("charaWork.parameterSave.state_mainSkill[2]");
            }
            if (charaWork.parameterSave.state_mainSkill[3] != 0)
            {
                propPacketUtil.AddProperty("charaWork.parameterSave.state_mainSkill[3]");
            }

            propPacketUtil.AddProperty("charaWork.parameterSave.state_mainSkillLevel");

            //Status Times
            for (int i = 0; i < charaWork.statusShownTime.Length; i++)
            {
                if (charaWork.statusShownTime[i] != 0)
                {
                    propPacketUtil.AddProperty(String.Format("charaWork.statusShownTime[{0}]", i));
                }
            }

            //General Parameters
            for (int i = 3; i < charaWork.battleTemp.generalParameter.Length; i++)
            {
                if (charaWork.battleTemp.generalParameter[i] != 0)
                {
                    propPacketUtil.AddProperty(String.Format("charaWork.battleTemp.generalParameter[{0}]", i));
                }
            }

            propPacketUtil.AddProperty("npcWork.hateType");

            if (npcWork.pushCommand != 0)
            {
                propPacketUtil.AddProperty("npcWork.pushCommand");
                if (npcWork.pushCommandSub != 0)
                {
                    propPacketUtil.AddProperty("npcWork.pushCommandSub");
                }
                propPacketUtil.AddProperty("npcWork.pushCommandPriority");
            }

            return(propPacketUtil.Done());
        }
Exemplo n.º 16
0
        public override BasePacket getInitPackets(uint playerActorId)
        {
            ActorPropertyPacketUtil propPacketUtil = new ActorPropertyPacketUtil("/_init", this, playerActorId);

            propPacketUtil.addProperty("charaWork.eventSave.bazaarTax");
            propPacketUtil.addProperty("charaWork.battleSave.potencial");

            //Properties
            for (int i = 0; i < charaWork.property.Length; i++)
            {
                if (charaWork.property[i] != 0)
                {
                    propPacketUtil.addProperty(String.Format("charaWork.property[{0}]", i));
                }
            }

            //Parameters
            propPacketUtil.addProperty("charaWork.parameterSave.hp[0]");
            propPacketUtil.addProperty("charaWork.parameterSave.hpMax[0]");
            propPacketUtil.addProperty("charaWork.parameterSave.mp");
            propPacketUtil.addProperty("charaWork.parameterSave.mpMax");
            propPacketUtil.addProperty("charaWork.parameterTemp.tp");
            propPacketUtil.addProperty("charaWork.parameterSave.state_mainSkill[0]");
            propPacketUtil.addProperty("charaWork.parameterSave.state_mainSkillLevel");

            //Status Times
            for (int i = 0; i < charaWork.statusShownTime.Length; i++)
            {
                if (charaWork.statusShownTime[i] != 0xFFFFFFFF)
                {
                    propPacketUtil.addProperty(String.Format("charaWork.statusShownTime[{0}]", i));
                }
            }

            //General Parameters
            for (int i = 3; i < charaWork.battleTemp.generalParameter.Length; i++)
            {
                if (charaWork.battleTemp.generalParameter[i] != 0)
                {
                    propPacketUtil.addProperty(String.Format("charaWork.battleTemp.generalParameter[{0}]", i));
                }
            }

            propPacketUtil.addProperty("charaWork.battleTemp.castGauge_speed[0]");
            propPacketUtil.addProperty("charaWork.battleTemp.castGauge_speed[1]");

            //Battle Save Skillpoint

            //Commands
            propPacketUtil.addProperty("charaWork.commandBorder");


            for (int i = 0; i < charaWork.command.Length; i++)
            {
                if (charaWork.command[i] != 0)
                {
                    propPacketUtil.addProperty(String.Format("charaWork.command[{0}]", i));
                }
            }


            for (int i = 0; i < charaWork.commandCategory.Length; i++)
            {
                charaWork.commandCategory[i] = 1;
                if (charaWork.commandCategory[i] != 0)
                {
                    propPacketUtil.addProperty(String.Format("charaWork.commandCategory[{0}]", i));
                }
            }

            for (int i = 0; i < charaWork.commandAcquired.Length; i++)
            {
                if (charaWork.commandAcquired[i] != false)
                {
                    propPacketUtil.addProperty(String.Format("charaWork.commandAcquired[{0}]", i));
                }
            }


            for (int i = 0; i < charaWork.additionalCommandAcquired.Length; i++)
            {
                if (charaWork.additionalCommandAcquired[i] != false)
                {
                    propPacketUtil.addProperty(String.Format("charaWork.additionalCommandAcquired[{0}]", i));
                }
            }

            for (int i = 0; i < charaWork.parameterSave.commandSlot_compatibility.Length; i++)
            {
                charaWork.parameterSave.commandSlot_compatibility[i] = true;
                if (charaWork.parameterSave.commandSlot_compatibility[i])
                {
                    propPacketUtil.addProperty(String.Format("charaWork.parameterSave.commandSlot_compatibility[{0}]", i));
                }
            }

            /*
             * for (int i = 0; i < charaWork.parameterSave.commandSlot_recastTime.Length; i++)
             * {
             * if (charaWork.parameterSave.commandSlot_recastTime[i] != 0)
             *   propPacketUtil.addProperty(String.Format("charaWork.parameterSave.commandSlot_recastTime[{0}]", i));
             * }
             */

            //System
            propPacketUtil.addProperty("charaWork.parameterTemp.forceControl_float_forClientSelf[0]");
            propPacketUtil.addProperty("charaWork.parameterTemp.forceControl_float_forClientSelf[1]");
            propPacketUtil.addProperty("charaWork.parameterTemp.forceControl_int16_forClientSelf[0]");
            propPacketUtil.addProperty("charaWork.parameterTemp.forceControl_int16_forClientSelf[1]");

            charaWork.parameterTemp.otherClassAbilityCount[0] = 4;
            charaWork.parameterTemp.otherClassAbilityCount[1] = 5;
            charaWork.parameterTemp.giftCount[1] = 5;

            propPacketUtil.addProperty("charaWork.parameterTemp.otherClassAbilityCount[0]");
            propPacketUtil.addProperty("charaWork.parameterTemp.otherClassAbilityCount[1]");
            propPacketUtil.addProperty("charaWork.parameterTemp.giftCount[1]");

            propPacketUtil.addProperty("charaWork.depictionJudge");

            //Scenario
            for (int i = 0; i < playerWork.questScenario.Length; i++)
            {
                if (playerWork.questScenario[i] != 0)
                {
                    propPacketUtil.addProperty(String.Format("playerWork.questScenario[{0}]", i));
                }
            }

            //Guildleve - Local
            for (int i = 0; i < playerWork.questGuildleve.Length; i++)
            {
                if (playerWork.questGuildleve[i] != 0)
                {
                    propPacketUtil.addProperty(String.Format("playerWork.questGuildleve[{0}]", i));
                }
            }

            //Guildleve - Regional
            for (int i = 0; i < work.guildleveId.Length; i++)
            {
                if (work.guildleveId[i] != 0)
                {
                    propPacketUtil.addProperty(String.Format("work.guildleveId[{0}]", i));
                }
                if (work.guildleveDone[i] != false)
                {
                    propPacketUtil.addProperty(String.Format("work.guildleveDone[{0}]", i));
                }
                if (work.guildleveChecked[i] != false)
                {
                    propPacketUtil.addProperty(String.Format("work.guildleveChecked[{0}]", i));
                }
            }

            //NPC Linkshell
            for (int i = 0; i < playerWork.npcLinkshellChatCalling.Length; i++)
            {
                if (playerWork.npcLinkshellChatCalling[i] != false)
                {
                    propPacketUtil.addProperty(String.Format("playerWork.npcLinkshellChatCalling[{0}]", i));
                }
                if (playerWork.npcLinkshellChatExtra[i] != false)
                {
                    propPacketUtil.addProperty(String.Format("playerWork.npcLinkshellChatExtra[{0}]", i));
                }
            }

            propPacketUtil.addProperty("playerWork.restBonusExpRate");

            //Profile
            propPacketUtil.addProperty("playerWork.tribe");
            propPacketUtil.addProperty("playerWork.guardian");
            propPacketUtil.addProperty("playerWork.birthdayMonth");
            propPacketUtil.addProperty("playerWork.birthdayDay");
            propPacketUtil.addProperty("playerWork.initialTown");

            return(BasePacket.createPacket(propPacketUtil.done(), true, false));
        }
 public void ResetPropPacketUtil()
 {
     statusTimerPropPacketUtil = new ActorPropertyPacketUtil("charaWork/status", owner);
 }
Exemplo n.º 18
0
        public override BasePacket getInitPackets(uint playerActorId)
        {
            ActorPropertyPacketUtil propPacketUtil = new ActorPropertyPacketUtil("/_init", this, playerActorId);

            //Properties
            for (int i = 0; i < charaWork.property.Length; i++)
            {
                if (charaWork.property[i] != 0)
                {
                    propPacketUtil.addProperty(String.Format("charaWork.property[{0}]", i));
                }
            }

            //Parameters
            propPacketUtil.addProperty("charaWork.parameterSave.hp[0]");
            propPacketUtil.addProperty("charaWork.parameterSave.hpMax[0]");
            propPacketUtil.addProperty("charaWork.parameterSave.mp");
            propPacketUtil.addProperty("charaWork.parameterSave.mpMax");
            propPacketUtil.addProperty("charaWork.parameterTemp.tp");

            if (charaWork.parameterSave.state_mainSkill[0] != 0)
            {
                propPacketUtil.addProperty("charaWork.parameterSave.state_mainSkill[0]");
            }
            if (charaWork.parameterSave.state_mainSkill[1] != 0)
            {
                propPacketUtil.addProperty("charaWork.parameterSave.state_mainSkill[1]");
            }
            if (charaWork.parameterSave.state_mainSkill[2] != 0)
            {
                propPacketUtil.addProperty("charaWork.parameterSave.state_mainSkill[2]");
            }
            if (charaWork.parameterSave.state_mainSkill[3] != 0)
            {
                propPacketUtil.addProperty("charaWork.parameterSave.state_mainSkill[3]");
            }

            propPacketUtil.addProperty("charaWork.parameterSave.state_mainSkillLevel");

            //Status Times
            for (int i = 0; i < charaWork.statusShownTime.Length; i++)
            {
                if (charaWork.statusShownTime[i] != 0xFFFFFFFF)
                {
                    propPacketUtil.addProperty(String.Format("charaWork.statusShownTime[{0}]", i));
                }
            }

            //General Parameters
            for (int i = 3; i < charaWork.battleTemp.generalParameter.Length; i++)
            {
                if (charaWork.battleTemp.generalParameter[i] != 0)
                {
                    propPacketUtil.addProperty(String.Format("charaWork.battleTemp.generalParameter[{0}]", i));
                }
            }

            propPacketUtil.addProperty("npcWork.hateType");

            return(BasePacket.createPacket(propPacketUtil.done(), true, false));
        }