void ExpulsarFaccionCaos(int UserIndex, bool Expulsado) { /* '*************************************************** */ /* 'Author: Unknown */ /* 'Last Modification: - */ /* ' 09/28/2010 C4b3z0n - Arreglado RT6 Overflow, el Desequipar() del escudo, ponía de parametro el ObjIndex del escudo en vez del EqpSlot. */ /* '*************************************************** */ UserList[UserIndex].Faccion.FuerzasCaos = 0; /* 'Call PerderItemsFaccionarios(UserIndex) */ if (Expulsado) { WriteConsoleMsg(UserIndex, "¡¡¡Has sido expulsado de la Legión Oscura!!!", FontTypeNames_FONTTYPE_FIGHT); } else { WriteConsoleMsg(UserIndex, "¡¡¡Te has retirado de la Legión Oscura!!!", FontTypeNames_FONTTYPE_FIGHT); } bool bRefresh = false; if (UserList[UserIndex].Invent.ArmourEqpObjIndex != 0) { /* 'Desequipamos la armadura de caos si está equipada */ if (ObjData[UserList[UserIndex].Invent.ArmourEqpObjIndex].Caos == 1) { Desequipar(UserIndex, UserList[UserIndex].Invent.ArmourEqpSlot, false); bRefresh = true; } } if (UserList[UserIndex].Invent.EscudoEqpObjIndex != 0) { /* 'Desequipamos el escudo de caos si está equipado */ if (ObjData[UserList[UserIndex].Invent.EscudoEqpObjIndex].Caos == 1) { Desequipar(UserIndex, UserList[UserIndex].Invent.EscudoEqpSlot, false); bRefresh = true; } } if (bRefresh) { ChangeUserChar(UserIndex, UserList[UserIndex].Char.body, UserList[UserIndex].Char.Head, UserList[UserIndex].Char.heading, UserList[UserIndex].Char.WeaponAnim, UserList[UserIndex].Char.ShieldAnim, UserList[UserIndex].Char.CascoAnim); WriteUpdateUserStats(UserIndex); } /* 'Actualizamos la barca si esta navegando (NicoNZ) */ if (UserList[UserIndex].flags.Navegando) { RefreshCharStatus(UserIndex); } }
void MuereNpc(int NpcIndex, int UserIndex) { /* '******************************************************** */ /* 'Author: Unknown */ /* 'Llamado cuando la vida de un NPC llega a cero. */ /* 'Last Modify Date: 13/07/2010 */ /* '22/06/06: (Nacho) Chequeamos si es pretoriano */ /* '24/01/2007: Pablo (ToxicWaste): Agrego para actualización de tag si cambia de status. */ /* '22/05/2010: ZaMa - Los caos ya no suben nobleza ni plebe al atacar npcs. */ /* '23/05/2010: ZaMa - El usuario pierde la pertenencia del npc. */ /* '13/07/2010: ZaMa - Optimizaciones de logica en la seleccion de pretoriano, y el posible cambio de alencion del usuario. */ /* '******************************************************** */ struct npc MiNPC; MiNPC = Npclist[NpcIndex]; bool EraCriminal; /* ' Es pretoriano? */ if (MiNPC.NPCtype == eNPCType_Pretoriano) { // ClanPretoriano[MiNPC.ClanIndex].MuerePretoriano(NpcIndex); } /* 'Quitamos el npc */ QuitarNPC(NpcIndex); /* ' Lo mato un usuario? */ if (UserIndex > 0) { if (MiNPC.flags.Snd3 > 0) { SendData(SendTarget_ToPCArea, UserIndex, dakara::protocol::server::BuildPlayWave(MiNPC.flags.Snd3, MiNPC.Pos.X, MiNPC.Pos.Y)); } UserList[UserIndex].flags.TargetNPC = 0; UserList[UserIndex].flags.TargetNpcTipo = eNPCType_Comun; /* 'El user que lo mato tiene mascotas? */ if (UserList[UserIndex].NroMascotas > 0) { int T; for (T = (1); T <= (MAXMASCOTAS); T++) { if (UserList[UserIndex].MascotasIndex[T] > 0) { if (Npclist[UserList[UserIndex].MascotasIndex[T]].TargetNPC == NpcIndex) { FollowAmo(UserList[UserIndex].MascotasIndex[T]); } } } } /* '[KEVIN] */ if (MiNPC.flags.ExpCount > 0) { if (UserList[UserIndex].PartyIndex > 0) { ObtenerExito(UserIndex, MiNPC.flags.ExpCount, MiNPC.Pos.Map, MiNPC.Pos.X, MiNPC.Pos.Y); } else { UserList[UserIndex].Stats.Exp = UserList[UserIndex].Stats.Exp + MiNPC.flags.ExpCount; if (UserList[UserIndex].Stats.Exp > MAXEXP) { UserList[UserIndex].Stats.Exp = MAXEXP; } WriteConsoleMsg(UserIndex, "Has ganado " + vb6::CStr(MiNPC.flags.ExpCount) + " puntos de experiencia.", FontTypeNames_FONTTYPE_FIGHT); } MiNPC.flags.ExpCount = 0; } /* '[/KEVIN] */ WriteConsoleMsg(UserIndex, "¡Has matado a la criatura!", FontTypeNames_FONTTYPE_FIGHT); if (UserList[UserIndex].Stats.NPCsMuertos < 32000) { UserList[UserIndex].Stats.NPCsMuertos = UserList[UserIndex].Stats.NPCsMuertos + 1; } EraCriminal = criminal(UserIndex); if (MiNPC.Stats.Alineacion == 0) { if (MiNPC.Numero == Guardias) { UserList[UserIndex].Reputacion.NobleRep = 0; UserList[UserIndex].Reputacion.PlebeRep = 0; UserList[UserIndex].Reputacion.AsesinoRep = UserList[UserIndex].Reputacion.AsesinoRep + 500; if (UserList[UserIndex].Reputacion.AsesinoRep > MAXREP) { UserList[UserIndex].Reputacion.AsesinoRep = MAXREP; } } if (MiNPC.MaestroUser == 0) { UserList[UserIndex].Reputacion.AsesinoRep = UserList[UserIndex].Reputacion.AsesinoRep + vlASESINO; if (UserList[UserIndex].Reputacion.AsesinoRep > MAXREP) { UserList[UserIndex].Reputacion.AsesinoRep = MAXREP; } } } else if (!esCaos(UserIndex)) { if (MiNPC.Stats.Alineacion == 1) { UserList[UserIndex].Reputacion.PlebeRep = UserList[UserIndex].Reputacion.PlebeRep + vlCAZADOR; if (UserList[UserIndex].Reputacion.PlebeRep > MAXREP) { UserList[UserIndex].Reputacion.PlebeRep = MAXREP; } } else if (MiNPC.Stats.Alineacion == 2) { UserList[UserIndex].Reputacion.NobleRep = UserList[UserIndex].Reputacion.NobleRep + vlASESINO / 2; if (UserList[UserIndex].Reputacion.NobleRep > MAXREP) { UserList[UserIndex].Reputacion.NobleRep = MAXREP; } } else if (MiNPC.Stats.Alineacion == 4) { UserList[UserIndex].Reputacion.PlebeRep = UserList[UserIndex].Reputacion.PlebeRep + vlCAZADOR; if (UserList[UserIndex].Reputacion.PlebeRep > MAXREP) { UserList[UserIndex].Reputacion.PlebeRep = MAXREP; } } } bool EsCriminal; EsCriminal = criminal(UserIndex); /* ' Cambio de alienacion? */ if (EraCriminal != EsCriminal) { /* ' Se volvio pk? */ if (EsCriminal) { if (esArmada(UserIndex)) { ExpulsarFaccionReal(UserIndex); } /* ' Se volvio ciuda */ } else { if (esCaos(UserIndex)) { ExpulsarFaccionCaos(UserIndex); } } RefreshCharStatus(UserIndex); } CheckUserLevel(UserIndex); if (NpcIndex == UserList[UserIndex].flags.ParalizedByNpcIndex) { RemoveParalisis(UserIndex); } /* ' Userindex > 0 */ } if (MiNPC.MaestroUser == 0) { /* 'Tiramos el inventario */ NPC_TIRAR_ITEMS(MiNPC, MiNPC.NPCtype == eNPCType_Pretoriano); /* 'ReSpawn o no */ ReSpawnNpc(MiNPC); } }
void EnlistarCaos(int UserIndex) { /* '*************************************************** */ /* 'Autor: Pablo (ToxicWaste) & Unknown (orginal version) */ /* 'Last Modification: 27/11/2009 */ /* '15/03/2009: ZaMa - No se puede enlistar el fundador de un clan con alineación neutral. */ /* '27/11/2009: ZaMa - Ahora no se puede enlistar un miembro de un clan neutro, por ende saque la antifaccion. */ /* 'Handles the entrance of users to the "Legión Oscura" */ /* '*************************************************** */ if (!criminal(UserIndex)) { WriteChatOverHead(UserIndex, "¡¡¡Lárgate de aquí, bufón!!!", (Npclist[UserList[UserIndex].flags.TargetNPC].Char.CharIndex), 0x00ffffff); return; } if (UserList[UserIndex].Faccion.FuerzasCaos == 1) { WriteChatOverHead(UserIndex, "¡¡¡Ya perteneces a la legión oscura!!!", (Npclist[UserList[UserIndex].flags.TargetNPC].Char.CharIndex), 0x00ffffff); return; } if (UserList[UserIndex].Faccion.ArmadaReal == 1) { WriteChatOverHead(UserIndex, "Las sombras reinarán en Argentum. ¡¡¡Fuera de aquí insecto real!!!", (Npclist[UserList[UserIndex].flags.TargetNPC].Char.CharIndex), 0x00ffffff); return; } /* '[Barrin 17-12-03] Si era miembro de la Armada Real no se puede enlistar */ /* 'Tomamos el valor de ahí: ¿Recibio la experiencia para entrar? */ if (UserList[UserIndex].Faccion.RecibioExpInicialReal == 1) { WriteChatOverHead(UserIndex, "No permitiré que ningún insecto real ingrese a mis tropas.", (Npclist[UserList[UserIndex].flags.TargetNPC].Char.CharIndex), 0x00ffffff); return; } /* '[/Barrin] */ if (!criminal(UserIndex)) { WriteChatOverHead(UserIndex, "¡¡Ja ja ja!! Tú no eres bienvenido aquí asqueroso ciudadano.", (Npclist[UserList[UserIndex].flags.TargetNPC].Char.CharIndex), 0x00ffffff); return; } if (UserList[UserIndex].Faccion.CiudadanosMatados < 70) { WriteChatOverHead(UserIndex, "Para unirte a nuestras fuerzas debes matar al menos 70 ciudadanos, sólo has matado " + vb6::CStr(UserList[UserIndex].Faccion.CiudadanosMatados) + ".", (Npclist[UserList[UserIndex].flags.TargetNPC].Char.CharIndex), 0x00ffffff); return; } if (UserList[UserIndex].Stats.ELV < 25) { WriteChatOverHead(UserIndex, "¡¡¡Para unirte a nuestras fuerzas debes ser al menos nivel 25!!!", (Npclist[UserList[UserIndex].flags.TargetNPC].Char.CharIndex), 0x00ffffff); return; } if (UserList[UserIndex].GuildIndex > 0) { if (GuildAlignment(UserList[UserIndex].GuildIndex) == "Neutral") { WriteChatOverHead(UserIndex, "¡¡¡Perteneces a un clan neutro, sal de él si quieres unirte a nuestras fuerzas!!!", (Npclist[UserList[UserIndex].flags.TargetNPC].Char.CharIndex), 0x00ffffff); return; } } if (UserList[UserIndex].Faccion.Reenlistadas > 4) { if (UserList[UserIndex].Faccion.Reenlistadas == 200) { WriteChatOverHead(UserIndex, "Has sido expulsado de las fuerzas oscuras y durante tu rebeldía has atacado a mi ejército. ¡Vete de aquí!", (Npclist[UserList[UserIndex].flags.TargetNPC].Char.CharIndex), 0x00ffffff); } else { WriteChatOverHead(UserIndex, "¡Has sido expulsado de las fuerzas oscuras demasiadas veces!", (Npclist[UserList[UserIndex].flags.TargetNPC].Char.CharIndex), 0x00ffffff); } return; } UserList[UserIndex].Faccion.Reenlistadas = UserList[UserIndex].Faccion.Reenlistadas + 1; UserList[UserIndex].Faccion.FuerzasCaos = 1; WriteChatOverHead(UserIndex, "¡¡¡Bienvenido al lado oscuro!!! Aquí tienes tus armaduras. Derrama sangre ciudadana y real, y serás recompensado, lo prometo.", (Npclist[UserList[UserIndex].flags.TargetNPC].Char.CharIndex), 0x00ffffff); if (UserList[UserIndex].Faccion.RecibioArmaduraCaos == 0) { GiveFactionArmours(UserIndex, true); GiveExpReward(UserIndex, 0); UserList[UserIndex].Faccion.RecibioArmaduraCaos = 1; UserList[UserIndex].Faccion.NivelIngreso = UserList[UserIndex].Stats.ELV; UserList[UserIndex].Faccion.FechaIngreso = vb6::dateToString(vb6::Now()); UserList[UserIndex].Faccion.RecibioExpInicialCaos = 1; UserList[UserIndex].Faccion.RecompensasCaos = 0; UserList[UserIndex].Faccion.NextRecompensa = 160; } /* 'Actualizamos la barca si esta navegando (NicoNZ) */ if (UserList[UserIndex].flags.Navegando) { RefreshCharStatus(UserIndex); } LogEjercitoCaos( UserList[UserIndex].Name + " ingresó el " + UserList[UserIndex].Faccion.FechaIngreso + " cuando era nivel " + vb6::CStr(UserList[UserIndex].Stats.ELV)); }
void EnlistarArmadaReal(int UserIndex) { /* '*************************************************** */ /* 'Autor: Pablo (ToxicWaste) & Unknown (orginal version) */ /* 'Last Modification: 15/04/2010 */ /* 'Handles the entrance of users to the "Armada Real" */ /* '15/03/2009: ZaMa - No se puede enlistar el fundador de un clan con alineación neutral. */ /* '27/11/2009: ZaMa - Ahora no se puede enlistar un miembro de un clan neutro, por ende saque la antifaccion. */ /* '15/04/2010: ZaMa - Cambio en recompensas iniciales. */ /* '*************************************************** */ if (UserList[UserIndex].Faccion.ArmadaReal == 1) { WriteChatOverHead(UserIndex, "¡¡¡Ya perteneces a las tropas reales!!! Ve a combatir criminales.", (Npclist[UserList[UserIndex].flags.TargetNPC].Char.CharIndex), 0x00ffffff); return; } if (UserList[UserIndex].Faccion.FuerzasCaos == 1) { WriteChatOverHead(UserIndex, "¡¡¡Maldito insolente!!! Vete de aquí seguidor de las sombras.", (Npclist[UserList[UserIndex].flags.TargetNPC].Char.CharIndex), 0x00ffffff); return; } if (criminal(UserIndex)) { WriteChatOverHead(UserIndex, "¡¡¡No se permiten criminales en el ejército real!!!", (Npclist[UserList[UserIndex].flags.TargetNPC].Char.CharIndex), 0x00ffffff); return; } if (UserList[UserIndex].Faccion.CriminalesMatados < 30) { WriteChatOverHead(UserIndex, "Para unirte a nuestras fuerzas debes matar al menos 30 criminales, sólo has matado " + vb6::CStr(UserList[UserIndex].Faccion.CriminalesMatados) + ".", (Npclist[UserList[UserIndex].flags.TargetNPC].Char.CharIndex), 0x00ffffff); return; } if (UserList[UserIndex].Stats.ELV < 25) { WriteChatOverHead(UserIndex, "¡¡¡Para unirte a nuestras fuerzas debes ser al menos de nivel 25!!!", (Npclist[UserList[UserIndex].flags.TargetNPC].Char.CharIndex), 0x00ffffff); return; } if (UserList[UserIndex].Faccion.CiudadanosMatados > 0) { WriteChatOverHead(UserIndex, "¡Has asesinado gente inocente, no aceptamos asesinos en las tropas reales!", (Npclist[UserList[UserIndex].flags.TargetNPC].Char.CharIndex), 0x00ffffff); return; } if (UserList[UserIndex].Faccion.Reenlistadas > 4) { WriteChatOverHead(UserIndex, "¡Has sido expulsado de las fuerzas reales demasiadas veces!", (Npclist[UserList[UserIndex].flags.TargetNPC].Char.CharIndex), 0x00ffffff); return; } if (UserList[UserIndex].Reputacion.NobleRep < 1000000) { WriteChatOverHead(UserIndex, "Necesitas ser aún más noble para integrar el ejército real, sólo tienes " + vb6::CStr(UserList[UserIndex].Reputacion.NobleRep) + "/1.000.000 puntos de nobleza", (Npclist[UserList[UserIndex].flags.TargetNPC].Char.CharIndex), 0x00ffffff); return; } if (UserList[UserIndex].GuildIndex > 0) { if (GuildAlignment(UserList[UserIndex].GuildIndex) == "Neutral") { WriteChatOverHead(UserIndex, "¡¡¡Perteneces a un clan neutro, sal de él si quieres unirte a nuestras fuerzas!!!", (Npclist[UserList[UserIndex].flags.TargetNPC].Char.CharIndex), 0x00ffffff); return; } } UserList[UserIndex].Faccion.ArmadaReal = 1; UserList[UserIndex].Faccion.Reenlistadas = UserList[UserIndex].Faccion.Reenlistadas + 1; WriteChatOverHead(UserIndex, "¡¡¡Bienvenido al ejército real!!! Aquí tienes tus vestimentas. Cumple bien tu labor exterminando criminales y me encargaré de recompensarte.", (Npclist[UserList[UserIndex].flags.TargetNPC].Char.CharIndex), 0x00ffffff); /* ' TODO: Dejo esta variable por ahora, pero con chequear las reenlistadas deberia ser suficiente :S */ if (UserList[UserIndex].Faccion.RecibioArmaduraReal == 0) { GiveFactionArmours(UserIndex, false); GiveExpReward(UserIndex, 0); UserList[UserIndex].Faccion.RecibioArmaduraReal = 1; UserList[UserIndex].Faccion.NivelIngreso = UserList[UserIndex].Stats.ELV; UserList[UserIndex].Faccion.FechaIngreso = vb6::dateToString(vb6::Now()); /* 'Esto por ahora es inútil, siempre va a ser cero, pero bueno, despues va a servir. */ UserList[UserIndex].Faccion.MatadosIngreso = UserList[UserIndex].Faccion.CiudadanosMatados; UserList[UserIndex].Faccion.RecibioExpInicialReal = 1; UserList[UserIndex].Faccion.RecompensasReal = 0; UserList[UserIndex].Faccion.NextRecompensa = 70; } /* 'Actualizamos la barca si esta navegando (NicoNZ) */ if (UserList[UserIndex].flags.Navegando) { RefreshCharStatus(UserIndex); } LogEjercitoReal( UserList[UserIndex].Name + " ingresó el " + UserList[UserIndex].Faccion.FechaIngreso + " cuando era nivel " + vb6::CStr(UserList[UserIndex].Stats.ELV)); }