/** * 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); } } } }
void send_data(buffer_t *data) { if(isconnected()) socketsend(data); }