void CGameControllerOpenFNG::HandleSacr(int Killer, int Victim, int ShrineTeam) {//assertion: Killer >= 0, victim anyways CCharacter *pVictim = CHAR(Victim); if (!pVictim) //due to HandleFreeze, i suspect this COULD also possibly happen. { D("no pVictim in HandleSacr(%d, %d, %d)", Killer, Victim, ShrineTeam); return; } int FailTeam = pVictim->GetPlayer()->GetTeam(); bool Wrong = ShrineTeam != -1 && FailTeam == ShrineTeam; m_aTeamscore[1-FailTeam] += Wrong?CFG(WrongSacrTeamscore):(ShrineTeam == -1 ? CFG(SacrTeamscore) : CFG(RightSacrTeamscore)); if (!Wrong) { if (CFG(SacrSound) == 1) GameServer()->CreateSoundGlobal(SOUND_CTF_CAPTURE); else if (CFG(SacrSound) == 2) GameServer()->CreateSound(pVictim->m_Pos, SOUND_CTF_CAPTURE); } if (((Wrong && CFG(WrongSacrTeamscore)) || (!Wrong && (ShrineTeam == -1 ? CFG(SacrTeamscore) : CFG(RightSacrTeamscore)))) && CFG(SacrBroadcast)) { char aBuf[64]; str_format(aBuf, sizeof aBuf, "%s sacrificed%s (%+d)", GetTeamName(1-FailTeam), Wrong?" in wrong shrine":(ShrineTeam == -1 ? "" : ", pleasing their gods"), Wrong?CFG(WrongSacrTeamscore):(ShrineTeam == -1 ? CFG(SacrTeamscore):CFG(RightSacrTeamscore))); m_Broadcast.Update(-1, aBuf, CFG(BroadcastTime) * TS); } CPlayer *pPlKiller = TPLAYER(Killer); if (!pPlKiller) return; pPlKiller->m_Score += Wrong?CFG(WrongSacrScore):(ShrineTeam == -1 ? CFG(SacrScore) : CFG(RightSacrScore)); SendKill(Killer, Victim, WEAPON_NINJA); if(!Wrong && pPlKiller->GetCharacter()) GameServer()->GetPlayerChar(Killer)->AddSpree(); if (Wrong && pPlKiller->GetCharacter() && CFG(PunishWrongSacr)) { pPlKiller->GetCharacter()->Freeze(CFG(PunishWrongSacr) * TS); GS->CreateSound(pPlKiller->GetCharacter()->m_Pos, SOUND_PLAYER_PAIN_LONG); GS->SendChatTarget(pPlKiller->GetCID(), "The gods are not pleased with this sacrifice!"); } if (!Wrong && pPlKiller->GetCharacter()) pPlKiller->GetCharacter()->SetEmote(EMOTE_HAPPY, TICK + TS * 2); if (pPlKiller->GetCharacter() && CFG(SacrLoltext) && ((!Wrong && CFG(SacrScore)) || (Wrong && CFG(WrongSacrScore)))) { char aBuf[64]; str_format(aBuf, sizeof aBuf, "%+d", Wrong?CFG(WrongSacrScore):(ShrineTeam == -1 ? CFG(SacrScore) : CFG(RightSacrScore))); GS->CreateLolText(pPlKiller->GetCharacter(), false, vec2(0.f, -50.f), vec2(0.f, 0.f), 50, aBuf); } }
void PythonInterpCtrl::KillProcess() { if(IsDead()) return; if(m_killlevel==0) { SendKill(); m_killlevel=1; return; } if(m_killlevel==1) { m_pyinterp->KillProcess(); return; } }