Exemple #1
0
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);
			}
		
		}

}
Exemple #2
0
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);
	}
}