void parse_partymsg(char *msg) { char *prefix = strtok_r(NULL, "|", &msg); prefix = strtok_r(NULL, "|", &msg); // it's a chat message to this party only if (strcmp(prefix, CHATMSG_PREFIX) == 0) { char *nick = strtok_r(NULL, "|", &msg); wattron(log_win, A_BOLD); char buf[20] = "(party) "; strncat(buf, nick, NAME_MAX_LENGTH); ncurs_log_chatmsg(msg, buf); wattroff(log_win, A_BOLD); } if (strcmp(prefix, CTRLMSG_PREFIX) == 0) { char *ctrlprefix = strtok_r(NULL, "|", &msg); // a party member has committed turn in combat if (strcmp(ctrlprefix, TURNREADY) == 0) { // who committed the turn char *nick = strtok_r(NULL, "|", &msg); // what skill used char *skill = strtok_r(NULL, "|", &msg); // what target chosen char *target = strtok_r(NULL, "|", &msg); // set player_party.characters[i].turnready to chosen skill AND combattarget to chosen target for (int i = 0; i <= 2; i++) if (strcmp(nick, player_party.characters[i]->name) == 0) { player_party.characters[i]->turnready = atoi(skill); player_party.characters[i]->combattarget = atoi(target); // display info about the committed turn ncurs_log_sysmsg("Player %s committed turn", nick); ncurs_fightinfo(player_party.characters[i], i); break; } // TODO: does this make sense? // if in combat, calculate combat stuff if (player.incombat) combat_seeifready(); } // when a player has ran from a fight if (strcmp(ctrlprefix, RUNMSG) == 0) { char *nick = strtok_r(NULL, "|", &msg); // only care about this if you are in combat if (player.incombat) combat_plr_ran(nick); } } }
void use_skill(int keypress) { /* this function is entered with a keypress from ac_fight0 and so on*/ /* the keypress is used to determine what attack is used */ /* 1. the player already chose the attack (int keypress), now it's time for the enemy */ // TODO enemy always uses skill 0 /* 2. calculate damage */ /* player does damage */ /* Wu Xing cycles: Wood causes +FIRE, -EARTH Fire causes +EARTH, -METAL Earth causes +METAL, -WATER Metal causes +WATER, -WOOD Water causes +WOOD, -FIRE */ if (keypress <= 4 && strcmp(player.skill[keypress]->name,"Unused") != 0) { // Player attacks skill_effect(&player, &enemy, player.skill[keypress]); // Enemy attack skill_effect(&enemy, &player, enemy.skill[0]); /* 3. check for dead player/enemy */ int enemy_dead = fight_check_dead(); /* 4. update stats and display them IF THE ENEMY DIDN'T DIE */ if (!enemy_dead) { ncurs_fightinfo(&player, 0); ncurs_fightinfo(&enemy, 3); } wrefresh(game_win); } else { ncurs_log_sysmsg(_("You dont have a skill in slot %d"), keypress+1); } }