예제 #1
0
ACS_S_SCRIPT void WaypointSpawn (void)
{
	if (!ACS_ActivatorTID())
		ACS_Thing_ChangeTID(0, ACS_UniqueTID(-32768, 0));
	int tid = ACS_ActivatorTID();
	ACS_SetActivatorToTarget(0);
	int plrNum = ACS_PlayerNumber();
	if (plrNum != -1)
	{
		player[plrNum].wayTid = tid;
		ACS_SetActorAngle(tid, player[plrNum].angle);
		ACS_SetActorPitch(tid, player[plrNum].pitch);
		ACS_SetActorProperty(player[plrNum].camTid, APROP_MasterTID, tid);
		ACS_GiveActorInventory(player[plrNum].camTid, s"ChaseCamWarp", 1);
		ACS_Delay(1);
		ACS_Thing_Remove(tid);
	}
	return;
}
예제 #2
0
파일: duh_arti.c 프로젝트: DavidPH/DUHeresy
void DUH_ArtifactReady(int frames)
{
   static int tics[MAX_PLAYERS];

   while(frames--)
   {
      int tic = ++tics[ACS_PlayerNumber()];
      int inv;

      int tid = ACS_ActivatorTID();

      if(!tid) ACS_Thing_ChangeTID(0, tid = DU_MakeTID());

      inv = ACS_CheckInventory(s"ArtiEgg");
      if(inv > 256) inv = 256;
      if(inv && !(tic % ((35 * 256) / inv)))
         ACS_Spawn(s"DUH_ChickenFriend", ACS_GetActorX(0), ACS_GetActorY(0),
            ACS_GetActorZ(0) + 56, 0, ACS_GetActorAngle(0)*256);

      inv = ACS_CheckInventory(s"ArtiFly");
      if(inv > 0x7FFF - 8) inv = 0x7FFF - 8;
      ACS_SetActorPropertyFixed(0, APROP_JumpZ, inv + 8.0k);

      inv = ACS_CheckInventory(s"ArtiHealth");
      if(inv > 35 * 4) inv = 35 * 4;
      if(inv && !(tic % ((35 * 4) / inv)))
         ACS_GiveInventory(s"Health", 1);

      inv = ACS_CheckInventory(s"ArtiInvisibility");
      if(inv > 35 * 8) inv = 35 * 8;
      if(inv && !(tic % ((35 * 8) / inv)))
         ACS_GiveInventory(s"DUH_ArmorBonus", 1);

      inv = ACS_CheckInventory(s"ArtiInvulnerability");
      if(inv > 35 * 1) inv = 35 * 1;
      if(inv && !(tic % ((35 * 1) / inv)))
         ACS_GiveInventory(s"DUH_ArmorBonus", 1);

      inv = ACS_CheckInventory(s"ArtiSuperHealth") + 4;
      if(inv > 0x7FFFFFFF / 25) inv = 0x7FFFFFFF / 25;
      ACS_SetActorProperty(0, APROP_SpawnHealth, inv * 25);

      inv = ACS_CheckInventory(s"ArtiTeleport");
      if(inv > 16) inv = 16;
      ACS_SetActorPropertyFixed(0, APROP_Speed, (inv / 10.0) + 1.0);

      inv = ACS_CheckInventory(s"ArtiTimeBomb");
      if(inv > 35 * 16) inv = 35 * 16;
      if(inv && !(tic % ((35 * 16) / inv)))
         ACS_SpawnProjectile(tid, s"DUH_TimeBombAura", 0, 0, 0, 0, 0);

      inv = ACS_CheckInventory(s"DUH_BagOfHolding") + 4;
      if(inv > 16) inv = 16;
      DUH_ArtifactTomeReady(DUH_ElvenWandAmmo,  inv *  50);
      DUH_ArtifactTomeReady(DUH_CrossbowAmmo,   inv *  25);
      DUH_ArtifactTomeReady(DUH_DragonClawAmmo, inv * 100);
      DUH_ArtifactTomeReady(DUH_HellstaffAmmo,  inv * 100);
      DUH_ArtifactTomeReady(DUH_PhoenixRodAmmo, inv *  10);
      DUH_ArtifactTomeReady(DUH_FiremaceAmmo,   inv *  75);

      inv = ACS_CheckInventory(s"ArtiTorch");
      if(inv > 64) inv = 64;
      if(inv && !(tic % ((35 * 64) / inv)))
         ACS_GiveInventory(s"ArtiTorch", 1);

      DUH_AmmoReady(tic, DUH_ElvenWandAmmo,   350);
      DUH_AmmoReady(tic, DUH_CrossbowAmmo,   1750);
      DUH_AmmoReady(tic, DUH_DragonClawAmmo,  700);
      DUH_AmmoReady(tic, DUH_HellstaffAmmo,  1050);
      DUH_AmmoReady(tic, DUH_PhoenixRodAmmo, 3500);
      DUH_AmmoReady(tic, DUH_FiremaceAmmo,   7000);

      if(frames) ACS_Delay(1);
   }
}