int_t PBEM_Sender[]; int_t PBEM_receiver[]; int_t PBEM_Proposal[]; int_t PBEM_Response[]; int_t PBEM_HasBeenSent[]; // 0 for none, 1 reject, 2 accept, 2 counter, 4 threaten int_t PBEM_CanSendProposal; int_f StoreDiplomacyEvent(int_t sender, int_t receiver, int_t ProposalType, int_t response) { int_t i; int_t sucess; i = 0; while(i < PBEM_HasBeenSent.# && sucess == 0){ if(PBEM_HasBeenSent[i] == 1) { PBEM_Sender[i] = sender; PBEM_receiver[i] = receiver; PBEM_Proposal[i] = ProposalType; PBEM_Response[i] = response; PBEM_HasBeenSent[i] = 0; } i = i + 1; } if(sucess == 0) { i = PBEM_HasBeenSent.#; PBEM_Sender[i] = sender; PBEM_receiver[i] = receiver; PBEM_Proposal[i] = ProposalType; PBEM_Response[i] = response; PBEM_HasBeenSent[i] = 0; } } HandleEvent(NewProposal) 'PBEM_SaveProposal' pre { int_t ProposalType; //initial proposal if(PBEM_CanSendProposal == 0) { ProposalType = GetLastNewProposalType(player[0], player[1], 0); StoreDiplomacyEvent(player[0], player[1], ProposalType, 0); return STOP; } else{ PBEM_CanSendProposal = 0; } } HandleEvent(BeginTurn) 'SendStoragedProposal' post { int_t i; for(i = 0; i < PBEM_HasBeenSent.#; i = i + 1) { if(player[0] == PBEM_receiver[i] && PBEM_HasBeenSent[i] == 0) { if(PBEM_Response[i] == 0) { PBEM_CanSendProposal = 1; ConsiderNewProposal(PBEM_Sender[i], PBEM_receiver[i], 2000, PBEM_Proposal[i],0,ID_NONE,ID_NONE,ID_NONE); Event: NewProposal(PBEM_Sender[i], PBEM_receiver[i]); PBEM_HasBeenSent[i] = 1; // message(PBM_Sender[i],'YourProposalHasBeenSent'); } } } }