public static void RegistryFragInfos(Room room,SLOT killer,out int score,bool isBotMode,bool isSuicide,FragInfos kills) { score = 0; ITEM_CLASS idStatics = (ITEM_CLASS)ComDiv.getIdStatics(kills.weapon,1); for (int index = 0; index < kills.frags.Count; ++index) { Frag frag = kills.frags[index]; CharaDeath charaDeath = (CharaDeath)((int)frag.hitspotInfo >> 4); if ((int)kills.killsCount - (isSuicide ? 1 : 0) > 1) { frag.killFlag |= charaDeath == CharaDeath.BOOM || charaDeath == CharaDeath.OBJECT_EXPLOSION || (charaDeath == CharaDeath.POISON || charaDeath == CharaDeath.HOWL) || (charaDeath == CharaDeath.TRAMPLED || idStatics == ITEM_CLASS.SHOTGUN) ? KillingMessage.MassKill : KillingMessage.PiercingShot; } else { int num1 = 0; switch (charaDeath) { case CharaDeath.DEFAULT: if (idStatics == ITEM_CLASS.KNIFE) { num1 = 6; break; } break; case CharaDeath.HEADSHOT: num1 = 4; break; } if (num1 > 0) { int num2 = killer.lastKillState >> 12; switch (num1) { case 4: if (num2 != 4) { killer.repeatLastState = false; } killer.lastKillState = num1 << 12 | killer.killsOnLife + 1; if (killer.repeatLastState) { frag.killFlag |= (killer.lastKillState & 16383) <= 1 ? KillingMessage.Headshot : KillingMessage.ChainHeadshot; break; } frag.killFlag |= KillingMessage.Headshot; killer.repeatLastState = true; break; case 6: if (num2 != 6) { killer.repeatLastState = false; } killer.lastKillState = num1 << 12 | killer.killsOnLife + 1; if (killer.repeatLastState && (killer.lastKillState & 16383) > 1) { frag.killFlag |= KillingMessage.ChainSlugger; break; } killer.repeatLastState = true; break; } } else { killer.lastKillState = 0; killer.repeatLastState = false; } } int victimSlot = frag.VictimSlot; SLOT slot = room._slots[victimSlot]; if (slot.killsOnLife > 3) { frag.killFlag |= KillingMessage.ChainStopper; } if ((kills.weapon != 19016 && kills.weapon != 19022 || (int)kills.killerIdx != victimSlot) && !slot.specGM) { ++slot.allDeaths; } if (killer._team != slot._team) { score += AllUtils.getKillScore(frag.killFlag); ++killer.allKills; if (killer._deathState == DeadEnum.isAlive) { ++killer.killsOnLife; } if (slot._team == 0) { ++room._redDeaths; ++room._blueKills; } else { ++room._blueDeaths; ++room._redKills; } if (room.room_type == (byte)7) { if (killer._team == 0) { room.red_dino += 4; } else { room.blue_dino += 4; } } } slot.lastKillState = 0; slot.killsOnLife = 0; slot.repeatLastState = false; slot.passSequence = 0; slot._deathState = DeadEnum.isDead; if (!isBotMode) { AllUtils.CompleteMission(room,slot,MISSION_TYPE.DEATH,0); } if (charaDeath == CharaDeath.HEADSHOT) { ++killer.headshots; } } }
public static void RegistryFragInfos(Room room,SLOT killer,out int score,bool isBotMode,bool isSuicide,FragInfos kills) { score = 0; ITEM_CLASS weaponClass = (ITEM_CLASS)ComDiv.getIdStatics(kills.weapon,1); for (int i = 0; i < kills.frags.Count; i++) { Frag frag = kills.frags[i]; CharaDeath deathType = (CharaDeath)(frag.hitspotInfo >> 4); if (kills.killsCount - (isSuicide ? 1 : 0) > 1) { frag.killFlag |= deathType == CharaDeath.BOOM || deathType == CharaDeath.OBJECT_EXPLOSION || deathType == CharaDeath.POISON || deathType == CharaDeath.HOWL || deathType == CharaDeath.TRAMPLED || weaponClass == ITEM_CLASS.SHOTGUN ? KillingMessage.MassKill : KillingMessage.PiercingShot; } else { int num2 = 0; if (deathType == CharaDeath.HEADSHOT) { num2 = 4; } else if (deathType == CharaDeath.DEFAULT && weaponClass == ITEM_CLASS.KNIFE) { num2 = 6; } if (num2 > 0) { int num3 = killer.lastKillState >> 12; if (num2 == 4) { if (num3 != 4) { killer.repeatLastState = false; } killer.lastKillState = num2 << 12 | (killer.killsOnLife + 1); if (killer.repeatLastState) { frag.killFlag |= (killer.lastKillState & 16383) <= 1 ? KillingMessage.Headshot : KillingMessage.ChainHeadshot; } else { frag.killFlag |= KillingMessage.Headshot; killer.repeatLastState = true; } } else if (num2 == 6) { if (num3 != 6) { killer.repeatLastState = false; } killer.lastKillState = num2 << 12 | (killer.killsOnLife + 1); if (killer.repeatLastState && (killer.lastKillState & 16383) > 1) { frag.killFlag |= KillingMessage.ChainSlugger; } else { killer.repeatLastState = true; } } } else { killer.lastKillState = 0; killer.repeatLastState = false; } } int victimId = frag.VictimSlot; SLOT victimSlot = room._slots[victimId]; if (victimSlot.killsOnLife > 3) { frag.killFlag |= KillingMessage.ChainStopper; } if ((kills.weapon == 19016 || kills.weapon == 19022) && kills.killerIdx == victimId || victimSlot.specGM) { } else { victimSlot.allDeaths++; //exprosao acid } if (killer._team != victimSlot._team) { score += AllUtils.getKillScore(frag.killFlag); killer.allKills++; if (killer._deathState == DeadEnum.isAlive) { killer.killsOnLife++; } if (victimSlot._team == 0) { room._redDeaths++; room._blueKills++; } else { room._blueDeaths++; room._redKills++; } if (room.room_type == 7) { if (killer._team == 0) { room.red_dino += 4; } else { room.blue_dino += 4; } } } victimSlot.lastKillState = 0; victimSlot.killsOnLife = 0; victimSlot.repeatLastState = false; victimSlot.passSequence = 0; victimSlot._deathState = DeadEnum.isDead; if (!isBotMode) { AllUtils.CompleteMission(room,victimSlot,MISSION_TYPE.DEATH,0); } if (deathType == CharaDeath.HEADSHOT) { killer.headshots++; } } }