vht/vhtzs/fnplayer.zsc

57 lines
1.1 KiB
Plaintext

class VhtFnPlayer abstract {
int m_player;
virtual bool vhtCall(PlayerInfo p) {return false;}
bool vhtRun() {
for(int i = 0; i < MAXPLAYERS; ++i) {
if(playerInGame[i] && vhtCall(players[i])) {
m_player = i;
return true;
}
}
return false;
}
}
class VhtFnPlayerInSector : VhtFnPlayer {
int m_idx;
VhtFnPlayer vhtInit(int idx) {
m_idx = idx;
return self;
}
override bool vhtCall(PlayerInfo p) {
return p.mo.curSector.index() == m_idx;
}
}
class VhtFnPlayerInv : VhtFnPlayer abstract {
class<Inventory> m_which;
Inventory m_result;
override bool vhtCall(PlayerInfo p) {
let inv = p.mo.findInventory(m_which);
if(inv) {
m_result = inv;
return true;
}
return false;
}
}
class VhtFnPlayerInvExist : VhtFnPlayerInv {
VhtFnPlayerInv vhtInit(class<Inventory> which) {
m_which = which;
return self;
}
}
class VhtFnPlayerInvAmount : VhtFnPlayerInv {
int m_amount;
VhtFnPlayerInv vhtInit(class<Inventory> which, int amount) {
m_which = which;
m_amount = amount;
return self;
}
override bool vhtCall(PlayerInfo p) {
return super.vhtCall(p) && m_result.amount >= m_amount;
}
}