/**
* cast_spell(void)
*
* @brief
* @param void
* @return void
*/
void cast_spell(void)
{
	buffer_t buffer;

	//Check for subscript out of range
	if(!tempdata()->spell_selected || tempdata()->spell_selected >= MAX_PLAYER_SPELLS)
		return;

	//Check if player has enough MP
	if(player(myindex())->spells[tempdata()->spell_selected]){
		if(player(myindex())->vitals[VITAL_MP] < spell(player(myindex())->spells[tempdata()->spell_selected])->mpreq){
			//	Call AddText("Not enough MP to cast " & Trim$(Spell(SpellSelected).Name) & ".", 12)
			return;
		}
		if(gettickcount() > player(myindex())->attacktimer + 1){
			if(player(myindex())->moving == 0){
				clear_buffer(&buffer);
				add_opcode(&buffer,CCAST);
				add_buffer(&buffer,&tempdata()->spell_selected, SIZE16);
				socketsend(&buffer);
				player(myindex())->attacking = TRUE;
				player(myindex())->attacktimer = gettickcount();
				tempdata()->castedspell = TRUE;
			}
			else{
				//Call AddText("Cannot cast while walking!", 12)
			}
		}
	}
	else{
		//Call AddText("No spell here.", 12)
	}
}
/**
* player_search(uint16 curx, uint16 cury)
*
* @brief
* @param curx
* @param cury
* @return void
*/
void player_search(uint16 curx, uint16 cury)
{
	buffer_t buffer;

	if(is_in_bounds()){
		clear_buffer(&buffer);
		add_opcode(&buffer, CSEARCH);
		add_buffer(&buffer, &tempdata()->curx, SIZE8);
		add_buffer(&buffer, &tempdata()->cury, SIZE8);
		socketsend(&buffer);
	}
}
/**
* check_attack(void)
*
* @brief Check attack
* @param void
* @return void
*/
void check_attack(void)
{
	buffer_t buffer;
	if(tempdata()->control){
		if(player(myindex())->attacktimer + 1 < gettickcount()){
			if(!player(myindex())->attacking){
				player(myindex())->attacking = 1;
				player(myindex())->attacktimer = gettickcount();

				clear_buffer(&buffer);
				add_opcode(&buffer, CATTACK);
				socketsend(&buffer);
			}
		}
	}
}
Example #4
0
void send_data(buffer_t *data)
{
	if(isconnected())
		socketsend(data);
}