/** * @brief Informs the AI if needed that it's been hit. * * @param p Pilot being hit. * @param shooter Pilot that shot. * @param dmg Damage done to p. */ static void weapon_hitAI( Pilot *p, Pilot *shooter, double dmg ) { /* Must be a valid shooter. */ if (shooter == NULL) return; /* Player is handled differently. */ if (shooter->faction == FACTION_PLAYER) { /* Increment damage done to by player. */ p->player_damage += dmg / (p->shield_max + p->armour_max); /* If damage is over threshold, inform pilot or if is targetted. */ if ((p->player_damage > PILOT_HOSTILE_THRESHOLD) || (shooter->target==p->id)) { /* Inform attacked. */ ai_attacked( p, shooter->id ); /* Set as hostile. */ pilot_setHostile(p); pilot_rmFlag( p, PILOT_BRIBED ); pilot_rmFlag( p, PILOT_FRIENDLY ); } } /* Otherwise just inform of being attacked. */ else ai_attacked( p, shooter->id ); }
/** * @brief Sets the pilot as hostile to player. * * @usage p:setHostile() * * @luaparam p Pilot to set as hostile. * @luafunc setHostile( p ) */ static int pilotL_setHostile( lua_State *L ) { LuaPilot *lp; Pilot *p; /* Get the pilot. */ lp = luaL_checkpilot(L,1); p = pilot_get(lp->pilot); if (p==NULL) { NLUA_ERROR(L,"Pilot is invalid."); return 0; } /* Set as hostile. */ pilot_setHostile(p); return 0; }