Adjustments.
This commit is contained in:
parent
2312128864
commit
2587d6c505
14 changed files with 275 additions and 59 deletions
|
|
@ -77,11 +77,7 @@ server bool sting_olsmp = false; // adds the stupid oldskool SMP 7243 to
|
||||||
server bool sting_msentry = false; // allows the new Minigun Sentry, which
|
server bool sting_msentry = false; // allows the new Minigun Sentry, which
|
||||||
// is an original creation for this mod
|
// is an original creation for this mod
|
||||||
server bool sting_dubious = false; // allows weapons of dubious origin
|
server bool sting_dubious = false; // allows weapons of dubious origin
|
||||||
// (Demolisher and Razorclaw)
|
// (Demolisher, Razorclaw, Autocannon)
|
||||||
// along with the Minigun Sentry, since
|
|
||||||
// it's an original creation
|
|
||||||
server bool sting_proto = true; // enable all prototype items and
|
|
||||||
// features
|
|
||||||
server bool sting_autoscuba = false; // SCUBA gear toggles automatically
|
server bool sting_autoscuba = false; // SCUBA gear toggles automatically
|
||||||
// when needed
|
// when needed
|
||||||
server bool sting_ehold = false; // eightball can be held fully loaded
|
server bool sting_ehold = false; // eightball can be held fully loaded
|
||||||
|
|
|
||||||
|
|
@ -33,8 +33,10 @@ O_FLAMETHROWER = "%o was thoroughly roasted by %k's Flamethrower.";
|
||||||
O_BIGGUN = "%k blew a hole through %o with the Demolisher.";
|
O_BIGGUN = "%k blew a hole through %o with the Demolisher.";
|
||||||
O_SMINI = "%o got blasted into steaming chunks by %k's Autocannon.";
|
O_SMINI = "%o got blasted into steaming chunks by %k's Autocannon.";
|
||||||
O_SENTRY = "%%o shouldn't have walked into the sights of %s.";
|
O_SENTRY = "%%o shouldn't have walked into the sights of %s.";
|
||||||
|
O_ROGUESENTRY = "%o was gunned down by a Minigun Sentry.";
|
||||||
O_OWNSENTRY = "%o was gunned down by %p own Minigun Sentry.";
|
O_OWNSENTRY = "%o was gunned down by %p own Minigun Sentry.";
|
||||||
O_OSENTRY = "%%o took a bullet from %s.";
|
O_OSENTRY = "%%o took a bullet from %s.";
|
||||||
|
O_ROGUEOSENTRY = "%o took a bullet from a Light Sentry.";
|
||||||
O_OWNOSENTRY = "%o took a bullet from %p own Light Sentry.";
|
O_OWNOSENTRY = "%o took a bullet from %p own Light Sentry.";
|
||||||
O_STINGERX = "%o ate flaming Tarydium death thanks to %k.";
|
O_STINGERX = "%o ate flaming Tarydium death thanks to %k.";
|
||||||
O_STINGERX2 = "%o ate flaming Tarydium death.";
|
O_STINGERX2 = "%o ate flaming Tarydium death.";
|
||||||
|
|
@ -230,7 +232,7 @@ STING_PSHIELD = "Power Shield does not drain over time";
|
||||||
STING_NOPSTART = "Players don't start up with an Automag";
|
STING_NOPSTART = "Players don't start up with an Automag";
|
||||||
STING_OLSMP = "Enable SMP 7243 from Oldskool Amp'd";
|
STING_OLSMP = "Enable SMP 7243 from Oldskool Amp'd";
|
||||||
STING_MSENTRY = "Enable new Minigun Sentry";
|
STING_MSENTRY = "Enable new Minigun Sentry";
|
||||||
STING_DUBIOUS = "Disable weapons of dubious origin (Demolisher, Razorclaw)";
|
STING_DUBIOUS = "Enable Demolisher, Razorclaw and Autocannon";
|
||||||
STING_QOPTS = "Convenience features";
|
STING_QOPTS = "Convenience features";
|
||||||
STING_AUTOSCUBA = "Automatic SCUBA Gear toggling";
|
STING_AUTOSCUBA = "Automatic SCUBA Gear toggling";
|
||||||
STING_MCREDS = "Unreal Credits";
|
STING_MCREDS = "Unreal Credits";
|
||||||
|
|
@ -277,8 +279,10 @@ O_FLAMETHROWER = "%o fue asad@[ao_esp] a conciencia por el Lanzallamas de %k.";
|
||||||
O_BIGGUN = "%k abrió un hoyo a través de %o con el Demoledor.";
|
O_BIGGUN = "%k abrió un hoyo a través de %o con el Demoledor.";
|
||||||
O_SMINI = "%o fue reventad@[ao_esp] en pedazos humeantes por el Autocañón de %k.";
|
O_SMINI = "%o fue reventad@[ao_esp] en pedazos humeantes por el Autocañón de %k.";
|
||||||
O_SENTRY = "%%o no debería haberse metido en el punto de mira de la %s.";
|
O_SENTRY = "%%o no debería haberse metido en el punto de mira de la %s.";
|
||||||
|
O_ROGUESENTRY = "%o fue abatid@[ao_esp] por una Torreta.";
|
||||||
O_OWNSENTRY = "%o fue abatid@[ao_esp] por su propi@[ao_esp] Torreta.";
|
O_OWNSENTRY = "%o fue abatid@[ao_esp] por su propi@[ao_esp] Torreta.";
|
||||||
O_OSENTRY = "%%o se llevó un tiro de la %s.";
|
O_OSENTRY = "%%o se llevó un tiro de la %s.";
|
||||||
|
O_ROGUEOSENTRY = "%o se llevó un tiro de una Torreta Ligera.";
|
||||||
O_OWNOSENTRY = "%o se llevó un tiro de su propi@[ao_esp] Torreta Ligera.";
|
O_OWNOSENTRY = "%o se llevó un tiro de su propi@[ao_esp] Torreta Ligera.";
|
||||||
O_STINGERX = "%o tragó muerte ardiente de Tarydium gracias a %k.";
|
O_STINGERX = "%o tragó muerte ardiente de Tarydium gracias a %k.";
|
||||||
O_STINGERX2 = "%o tragó muerte ardiente de Tarydium.";
|
O_STINGERX2 = "%o tragó muerte ardiente de Tarydium.";
|
||||||
|
|
@ -455,6 +459,8 @@ STING_DPISTOL = "El fuego alternativo de la Pistola de Dispersión no es mejorad
|
||||||
STING_PSHIELD = "El Escudo de Fuerza no pierde carga con el tiempo";
|
STING_PSHIELD = "El Escudo de Fuerza no pierde carga con el tiempo";
|
||||||
STING_NOPSTART = "Los jugadores no empiezan la partida con un Automag";
|
STING_NOPSTART = "Los jugadores no empiezan la partida con un Automag";
|
||||||
STING_OLSMP = "Habilitar SMP 7243 de Oldskool Amp'd";
|
STING_OLSMP = "Habilitar SMP 7243 de Oldskool Amp'd";
|
||||||
|
STING_MSENTRY = "Habilitar nueva Torreta";
|
||||||
|
STING_DUBIOUS = "Habilitar Demoledor, Garra y Autocañón";
|
||||||
STING_QOPTS = "Características de comodidad";
|
STING_QOPTS = "Características de comodidad";
|
||||||
STING_AUTOSCUBA = "Uso automático de Kit de Buceo";
|
STING_AUTOSCUBA = "Uso automático de Kit de Buceo";
|
||||||
STING_MCREDS = "Créditos de Unreal";
|
STING_MCREDS = "Créditos de Unreal";
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,8 @@ OptionMenu "UnrealOptionMenu"
|
||||||
Option "$STING_PSHIELD", "sting_pshield", "YesNo"
|
Option "$STING_PSHIELD", "sting_pshield", "YesNo"
|
||||||
Option "$STING_NOPSTART", "sting_nopstart", "YesNo"
|
Option "$STING_NOPSTART", "sting_nopstart", "YesNo"
|
||||||
Option "$STING_OLSMP", "sting_olsmp", "YesNo"
|
Option "$STING_OLSMP", "sting_olsmp", "YesNo"
|
||||||
|
Option "$STING_MSENTRY", "sting_msentry", "YesNo"
|
||||||
|
Option "$STING_DUBIOUS", "sting_dubious", "YesNo"
|
||||||
StaticText " "
|
StaticText " "
|
||||||
StaticText "$STING_QOPTS", "Gold"
|
StaticText "$STING_QOPTS", "Gold"
|
||||||
Option "$STING_AUTOSCUBA", "sting_autoscuba", "YesNo"
|
Option "$STING_AUTOSCUBA", "sting_autoscuba", "YesNo"
|
||||||
|
|
|
||||||
|
|
@ -226,6 +226,8 @@ sentry/wind sentwind
|
||||||
sentry/fire sentfire
|
sentry/fire sentfire
|
||||||
sentry/unwind sentuwnd
|
sentry/unwind sentuwnd
|
||||||
sentry/explode cannonex
|
sentry/explode cannonex
|
||||||
|
sentry/move sentmovs
|
||||||
|
sentry/movestop sentmove
|
||||||
|
|
||||||
vfrag/bounce1 glasstk1
|
vfrag/bounce1 glasstk1
|
||||||
vfrag/bounce2 glasstk2
|
vfrag/bounce2 glasstk2
|
||||||
|
|
|
||||||
BIN
sounds/SentMovE.ogg
Normal file
BIN
sounds/SentMovE.ogg
Normal file
Binary file not shown.
BIN
sounds/SentMovS.ogg
Normal file
BIN
sounds/SentMovS.ogg
Normal file
Binary file not shown.
|
|
@ -18,6 +18,47 @@ Class BigAmmo : Ammo
|
||||||
if ( PickupMsg.Length() > 0 ) return Super.PickupMessage();
|
if ( PickupMsg.Length() > 0 ) return Super.PickupMessage();
|
||||||
return String.Format("%s%d%s",StringTable.Localize("$I_BIGAMMOL"),Amount,StringTable.Localize("$I_BIGAMMOR"));
|
return String.Format("%s%d%s",StringTable.Localize("$I_BIGAMMOL"),Amount,StringTable.Localize("$I_BIGAMMOR"));
|
||||||
}
|
}
|
||||||
|
override bool TryPickup( in out Actor toucher )
|
||||||
|
{
|
||||||
|
if ( !sting_dubious ) return false; // not allowed
|
||||||
|
return Super.TryPickup(toucher);
|
||||||
|
}
|
||||||
|
override void Tick()
|
||||||
|
{
|
||||||
|
Super.Tick();
|
||||||
|
if ( sting_dubious ) return;
|
||||||
|
if ( !Owner )
|
||||||
|
{
|
||||||
|
let r = Spawn((GetClass()=="BigAmmo")?"CellPack":"Cell",pos,ALLOW_REPLACE);
|
||||||
|
r.spawnangle = spawnangle;
|
||||||
|
r.spawnpoint = spawnpoint;
|
||||||
|
r.angle = angle;
|
||||||
|
r.pitch = pitch;
|
||||||
|
r.roll = roll;
|
||||||
|
r.special = special;
|
||||||
|
r.args[0] = args[0];
|
||||||
|
r.args[1] = args[1];
|
||||||
|
r.args[2] = args[2];
|
||||||
|
r.args[3] = args[3];
|
||||||
|
r.args[4] = args[4];
|
||||||
|
r.ChangeTid(tid);
|
||||||
|
r.SpawnFlags = SpawnFlags&~MTF_SECRET;
|
||||||
|
r.HandleSpawnFlags();
|
||||||
|
r.SpawnFlags = SpawnFlags;
|
||||||
|
r.bCountSecret = SpawnFlags&MTF_SECRET;
|
||||||
|
r.vel = vel;
|
||||||
|
r.master = master;
|
||||||
|
r.target = target;
|
||||||
|
r.tracer = tracer;
|
||||||
|
r.bDropped = bDropped;
|
||||||
|
Destroy();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Owner.RemoveInventory(self);
|
||||||
|
Destroy();
|
||||||
|
}
|
||||||
|
}
|
||||||
States
|
States
|
||||||
{
|
{
|
||||||
Spawn:
|
Spawn:
|
||||||
|
|
@ -70,12 +111,53 @@ Class BigCasing : UTCasing
|
||||||
{
|
{
|
||||||
Default
|
Default
|
||||||
{
|
{
|
||||||
BounceSound "flak/bounce"; // much heavier sound
|
BounceSound "big/bounce"; // much heavier sound
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Class BigGun : UnrealWeapon
|
Class BigGun : UnrealWeapon
|
||||||
{
|
{
|
||||||
|
override bool TryPickup( in out Actor toucher )
|
||||||
|
{
|
||||||
|
if ( !sting_dubious ) return false; // not allowed
|
||||||
|
return Super.TryPickup(toucher);
|
||||||
|
}
|
||||||
|
override void Tick()
|
||||||
|
{
|
||||||
|
Super.Tick();
|
||||||
|
if ( sting_dubious ) return;
|
||||||
|
if ( !Owner )
|
||||||
|
{
|
||||||
|
let r = Spawn("BFG9000",pos,ALLOW_REPLACE);
|
||||||
|
r.spawnangle = spawnangle;
|
||||||
|
r.spawnpoint = spawnpoint;
|
||||||
|
r.angle = angle;
|
||||||
|
r.pitch = pitch;
|
||||||
|
r.roll = roll;
|
||||||
|
r.special = special;
|
||||||
|
r.args[0] = args[0];
|
||||||
|
r.args[1] = args[1];
|
||||||
|
r.args[2] = args[2];
|
||||||
|
r.args[3] = args[3];
|
||||||
|
r.args[4] = args[4];
|
||||||
|
r.ChangeTid(tid);
|
||||||
|
r.SpawnFlags = SpawnFlags&~MTF_SECRET;
|
||||||
|
r.HandleSpawnFlags();
|
||||||
|
r.SpawnFlags = SpawnFlags;
|
||||||
|
r.bCountSecret = SpawnFlags&MTF_SECRET;
|
||||||
|
r.vel = vel;
|
||||||
|
r.master = master;
|
||||||
|
r.target = target;
|
||||||
|
r.tracer = tracer;
|
||||||
|
r.bDropped = bDropped;
|
||||||
|
Destroy();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Owner.RemoveInventory(self);
|
||||||
|
Destroy();
|
||||||
|
}
|
||||||
|
}
|
||||||
Default
|
Default
|
||||||
{
|
{
|
||||||
Tag "$T_BIGGUN";
|
Tag "$T_BIGGUN";
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,46 @@
|
||||||
Class Bonesaw : UnrealWeapon
|
Class Bonesaw : UnrealWeapon
|
||||||
{
|
{
|
||||||
|
override bool TryPickup( in out Actor toucher )
|
||||||
|
{
|
||||||
|
if ( !sting_dubious ) return false; // not allowed
|
||||||
|
return Super.TryPickup(toucher);
|
||||||
|
}
|
||||||
|
override void Tick()
|
||||||
|
{
|
||||||
|
Super.Tick();
|
||||||
|
if ( sting_dubious ) return;
|
||||||
|
if ( !Owner )
|
||||||
|
{
|
||||||
|
let r = Spawn("Chainsaw",pos,ALLOW_REPLACE);
|
||||||
|
r.spawnangle = spawnangle;
|
||||||
|
r.spawnpoint = spawnpoint;
|
||||||
|
r.angle = angle;
|
||||||
|
r.pitch = pitch;
|
||||||
|
r.roll = roll;
|
||||||
|
r.special = special;
|
||||||
|
r.args[0] = args[0];
|
||||||
|
r.args[1] = args[1];
|
||||||
|
r.args[2] = args[2];
|
||||||
|
r.args[3] = args[3];
|
||||||
|
r.args[4] = args[4];
|
||||||
|
r.ChangeTid(tid);
|
||||||
|
r.SpawnFlags = SpawnFlags&~MTF_SECRET;
|
||||||
|
r.HandleSpawnFlags();
|
||||||
|
r.SpawnFlags = SpawnFlags;
|
||||||
|
r.bCountSecret = SpawnFlags&MTF_SECRET;
|
||||||
|
r.vel = vel;
|
||||||
|
r.master = master;
|
||||||
|
r.target = target;
|
||||||
|
r.tracer = tracer;
|
||||||
|
r.bDropped = bDropped;
|
||||||
|
Destroy();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Owner.RemoveInventory(self);
|
||||||
|
Destroy();
|
||||||
|
}
|
||||||
|
}
|
||||||
Default
|
Default
|
||||||
{
|
{
|
||||||
Tag "$T_BONESAW";
|
Tag "$T_BONESAW";
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,18 @@ Class SMiniAmmo : Ammo
|
||||||
Ammo.BackpackAmount 0;
|
Ammo.BackpackAmount 0;
|
||||||
Ammo.BackpackMaxAmount 32;
|
Ammo.BackpackMaxAmount 32;
|
||||||
}
|
}
|
||||||
|
override bool TryPickup( in out Actor toucher )
|
||||||
|
{
|
||||||
|
if ( !sting_dubious ) return false; // not allowed
|
||||||
|
return Super.TryPickup(toucher);
|
||||||
|
}
|
||||||
|
override void Tick()
|
||||||
|
{
|
||||||
|
Super.Tick();
|
||||||
|
if ( sting_dubious ) return;
|
||||||
|
if ( Owner ) Owner.RemoveInventory(self);
|
||||||
|
Destroy();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Class SMiniBlast : Actor
|
Class SMiniBlast : Actor
|
||||||
|
|
@ -16,6 +28,47 @@ Class SMiniBlast : Actor
|
||||||
|
|
||||||
Class SMiniGun : UnrealWeapon
|
Class SMiniGun : UnrealWeapon
|
||||||
{
|
{
|
||||||
|
override bool TryPickup( in out Actor toucher )
|
||||||
|
{
|
||||||
|
if ( !sting_dubious ) return false; // not allowed
|
||||||
|
return Super.TryPickup(toucher);
|
||||||
|
}
|
||||||
|
override void Tick()
|
||||||
|
{
|
||||||
|
Super.Tick();
|
||||||
|
if ( sting_dubious ) return;
|
||||||
|
if ( !Owner )
|
||||||
|
{
|
||||||
|
let r = Spawn("BFG9000",pos,ALLOW_REPLACE);
|
||||||
|
r.spawnangle = spawnangle;
|
||||||
|
r.spawnpoint = spawnpoint;
|
||||||
|
r.angle = angle;
|
||||||
|
r.pitch = pitch;
|
||||||
|
r.roll = roll;
|
||||||
|
r.special = special;
|
||||||
|
r.args[0] = args[0];
|
||||||
|
r.args[1] = args[1];
|
||||||
|
r.args[2] = args[2];
|
||||||
|
r.args[3] = args[3];
|
||||||
|
r.args[4] = args[4];
|
||||||
|
r.ChangeTid(tid);
|
||||||
|
r.SpawnFlags = SpawnFlags&~MTF_SECRET;
|
||||||
|
r.HandleSpawnFlags();
|
||||||
|
r.SpawnFlags = SpawnFlags;
|
||||||
|
r.bCountSecret = SpawnFlags&MTF_SECRET;
|
||||||
|
r.vel = vel;
|
||||||
|
r.master = master;
|
||||||
|
r.target = target;
|
||||||
|
r.tracer = tracer;
|
||||||
|
r.bDropped = bDropped;
|
||||||
|
Destroy();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Owner.RemoveInventory(self);
|
||||||
|
Destroy();
|
||||||
|
}
|
||||||
|
}
|
||||||
Default
|
Default
|
||||||
{
|
{
|
||||||
Tag "$T_SMINI";
|
Tag "$T_SMINI";
|
||||||
|
|
|
||||||
|
|
@ -1432,17 +1432,35 @@ Class SentryItem : UnrealInventory
|
||||||
UnrealInventory.Charge MinigunSentryBase.sentryhealth;
|
UnrealInventory.Charge MinigunSentryBase.sentryhealth;
|
||||||
+UNREALINVENTORY.DRAWSPECIAL;
|
+UNREALINVENTORY.DRAWSPECIAL;
|
||||||
}
|
}
|
||||||
|
override bool TryPickup( in out Actor toucher )
|
||||||
|
{
|
||||||
|
if ( !sting_msentry ) return false; // not allowed
|
||||||
|
return Super.TryPickup(toucher);
|
||||||
|
}
|
||||||
|
override void Tick()
|
||||||
|
{
|
||||||
|
Super.Tick();
|
||||||
|
if ( sting_msentry ) return;
|
||||||
|
if ( Owner ) Owner.RemoveInventory(self);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// TODO replace
|
||||||
|
}
|
||||||
|
Destroy();
|
||||||
|
}
|
||||||
override bool HandlePickup( Inventory item )
|
override bool HandlePickup( Inventory item )
|
||||||
{
|
{
|
||||||
if ( item.GetClass() == GetClass() ) return true; // can never get more than one
|
if ( item.GetClass() == GetClass() ) return true; // can never get more than one
|
||||||
return Super.HandlePickup(item);
|
return Super.HandlePickup(item);
|
||||||
}
|
}
|
||||||
static void TransferOwnership( Actor newowner, Actor sentry )
|
static bool TransferOwnership( Actor newowner, Actor sentry )
|
||||||
{
|
{
|
||||||
if ( sentry.master ) sentry.master.TakeInventory("SentryItem",200);
|
if ( sentry.master == newowner ) return false;
|
||||||
|
if ( sentry.master ) sentry.master.TakeInventory("SentryItem",1);
|
||||||
sentry.master = newowner;
|
sentry.master = newowner;
|
||||||
sentry.SetTag(String.Format(StringTable.Localize("$T_OWNEDSENTRY"),newowner.player.GetUserName()));
|
sentry.SetTag(String.Format(StringTable.Localize("$T_OWNEDSENTRY"),newowner.player.GetUserName()));
|
||||||
sentry.tracer.A_ClearTarget();
|
sentry.tracer.A_ClearTarget();
|
||||||
|
sentry.tracer.bFRIENDLY = true;
|
||||||
sentry.tracer.SetFriendPlayer(newowner.player);
|
sentry.tracer.SetFriendPlayer(newowner.player);
|
||||||
let si = SentryItem(newowner.FindInventory("SentryItem"));
|
let si = SentryItem(newowner.FindInventory("SentryItem"));
|
||||||
if ( si )
|
if ( si )
|
||||||
|
|
@ -1457,6 +1475,7 @@ Class SentryItem : UnrealInventory
|
||||||
si.bActive = true;
|
si.bActive = true;
|
||||||
si.tracer = sentry;
|
si.tracer = sentry;
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
override void AttachToOwner( Actor other )
|
override void AttachToOwner( Actor other )
|
||||||
{
|
{
|
||||||
|
|
@ -1632,7 +1651,7 @@ Class MinigunSentry : Actor
|
||||||
angle = clamp(angle+clamp(angledelta,-angleturn,angleturn),master.angle-maxangle,master.angle+maxangle);
|
angle = clamp(angle+clamp(angledelta,-angleturn,angleturn),master.angle-maxangle,master.angle+maxangle);
|
||||||
pitch = clamp(pitch+clamp(pitchdelta,-pitchturn,pitchturn),master.pitch-maxpitch,master.pitch+maxpitch);
|
pitch = clamp(pitch+clamp(pitchdelta,-pitchturn,pitchturn),master.pitch-maxpitch,master.pitch+maxpitch);
|
||||||
}
|
}
|
||||||
void A_SentryFaceDir( int dest, statelabel next )
|
void A_SentryFaceDir( double dest, statelabel next )
|
||||||
{
|
{
|
||||||
double angledelta = DeltaAngle(angle,master.angle+dest);
|
double angledelta = DeltaAngle(angle,master.angle+dest);
|
||||||
double pitchdelta = DeltaAngle(pitch,master.pitch);
|
double pitchdelta = DeltaAngle(pitch,master.pitch);
|
||||||
|
|
@ -1714,34 +1733,31 @@ Class MinigunSentry : Actor
|
||||||
SENR ABCDEFGHIJKLMNO 3;
|
SENR ABCDEFGHIJKLMNO 3;
|
||||||
Goto Idle;
|
Goto Idle;
|
||||||
Idle:
|
Idle:
|
||||||
SENI A 1 A_SentryFaceDir(0,1);
|
SENI A 0
|
||||||
Wait;
|
|
||||||
SENI A 1
|
|
||||||
{
|
{
|
||||||
A_LookEx(LOF_NOSOUNDCHECK|LOF_NOJUMP);
|
A_PlaySound("sentry/move",CHAN_BODY,0.4,true,pitch:0.8);
|
||||||
A_SentryFaceDir(-maxangle,1);
|
if ( specialf1 > 0 ) specialf1 = -maxangle;
|
||||||
return A_JumpIf(TargetVisible(),"See");
|
else specialf1 = maxangle;
|
||||||
}
|
special2 = 0;
|
||||||
Wait;
|
|
||||||
SENI AAAAAA 1
|
|
||||||
{
|
|
||||||
A_LookEx(LOF_NOSOUNDCHECK|LOF_NOJUMP);
|
|
||||||
return A_JumpIf(TargetVisible(),"See");
|
|
||||||
}
|
}
|
||||||
SENI A 1
|
SENI A 1
|
||||||
{
|
{
|
||||||
A_LookEx(LOF_NOSOUNDCHECK|LOF_NOJUMP);
|
A_LookEx(LOF_NOSOUNDCHECK|LOF_NOJUMP);
|
||||||
A_SentryFaceDir(maxangle,1);
|
A_SentryFaceDir(specialf1,"IdleStop");
|
||||||
return A_JumpIf(TargetVisible(),"See");
|
return A_JumpIf(TargetVisible(),"See");
|
||||||
}
|
}
|
||||||
Wait;
|
Wait;
|
||||||
SENI AAAAAA 1
|
IdleStop:
|
||||||
|
SENI A 0 A_PlaySound("sentry/movestop",CHAN_BODY,0.4,pitch:0.8);
|
||||||
|
SENI A 1
|
||||||
{
|
{
|
||||||
A_LookEx(LOF_NOSOUNDCHECK|LOF_NOJUMP);
|
A_LookEx(LOF_NOSOUNDCHECK|LOF_NOJUMP);
|
||||||
|
if ( special2++ > 20 ) return ResolveState("Idle");
|
||||||
return A_JumpIf(TargetVisible(),"See");
|
return A_JumpIf(TargetVisible(),"See");
|
||||||
}
|
}
|
||||||
Goto Idle+1;
|
Wait;
|
||||||
See:
|
See:
|
||||||
|
SENI A 0 A_PlaySound("sentry/movestop",CHAN_BODY,0.4,pitch:0.8);
|
||||||
SENI A 1
|
SENI A 1
|
||||||
{
|
{
|
||||||
if ( !TargetVisible() )
|
if ( !TargetVisible() )
|
||||||
|
|
@ -1992,6 +2008,7 @@ Class MinigunSentryBase : Actor
|
||||||
|
|
||||||
Default
|
Default
|
||||||
{
|
{
|
||||||
|
Tag "$T_SENTRY";
|
||||||
Health sentryhealth;
|
Health sentryhealth;
|
||||||
Mass int.max;
|
Mass int.max;
|
||||||
Radius 12;
|
Radius 12;
|
||||||
|
|
@ -2000,7 +2017,6 @@ Class MinigunSentryBase : Actor
|
||||||
+SHOOTABLE;
|
+SHOOTABLE;
|
||||||
+NOBLOOD;
|
+NOBLOOD;
|
||||||
+DONTTHRUST;
|
+DONTTHRUST;
|
||||||
+SPECIAL;
|
|
||||||
}
|
}
|
||||||
override void PostBeginPlay()
|
override void PostBeginPlay()
|
||||||
{
|
{
|
||||||
|
|
@ -2012,8 +2028,8 @@ Class MinigunSentryBase : Actor
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SetTag(StringTable.Localize("$T_SENTRY"));
|
|
||||||
rememberedplayer = -1;
|
rememberedplayer = -1;
|
||||||
|
special1 = sentryammo; // rogue sentries need ammo assigned
|
||||||
}
|
}
|
||||||
tracer = Spawn("MinigunSentry",pos);
|
tracer = Spawn("MinigunSentry",pos);
|
||||||
tracer.special1 = special1;
|
tracer.special1 = special1;
|
||||||
|
|
@ -2026,15 +2042,23 @@ Class MinigunSentryBase : Actor
|
||||||
tracer.SetOrigin(level.Vec3Offset(pos,z*38),false);
|
tracer.SetOrigin(level.Vec3Offset(pos,z*38),false);
|
||||||
if ( !deathmatch )
|
if ( !deathmatch )
|
||||||
{
|
{
|
||||||
if ( !master || !master.player ) bFRIENDLY = false;
|
if ( !master || !master.player ) tracer.bFRIENDLY = bFRIENDLY;
|
||||||
|
bFRIENDLY = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ( master && master.player ) tracer.SetFriendPlayer(master.player);
|
if ( master && master.player ) tracer.SetFriendPlayer(master.player);
|
||||||
else tracer.bFRIENDLY = false;
|
else tracer.bFRIENDLY = bFRIENDLY;
|
||||||
|
bFRIENDLY = false;
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
Super.Tick();
|
Super.Tick();
|
||||||
|
if ( !sting_msentry )
|
||||||
|
{
|
||||||
|
if ( tracer ) tracer.Destroy();
|
||||||
|
Destroy();
|
||||||
|
return;
|
||||||
|
}
|
||||||
// hub return support
|
// hub return support
|
||||||
if ( !master && (rememberedplayer != -1) && playeringame[rememberedplayer] )
|
if ( !master && (rememberedplayer != -1) && playeringame[rememberedplayer] )
|
||||||
{
|
{
|
||||||
|
|
@ -2056,25 +2080,28 @@ Class MinigunSentryBase : Actor
|
||||||
}
|
}
|
||||||
override string GetObituary( Actor victim, Actor inflictor, Name mod, bool playerattack )
|
override string GetObituary( Actor victim, Actor inflictor, Name mod, bool playerattack )
|
||||||
{
|
{
|
||||||
if ( victim == master ) return String.Format(StringTable.Localize("$O_OWNSENTRY"),GetTag());
|
if ( victim == master ) return StringTable.Localize("$O_OWNSENTRY");
|
||||||
return String.Format(StringTable.Localize("$O_SENTRY"),GetTag());
|
else if ( master && master.player ) return String.Format(StringTable.Localize("$O_SENTRY"),GetTag());
|
||||||
|
return StringTable.Localize("$O_ROGUESENTRY");
|
||||||
}
|
}
|
||||||
override void Touch( Actor toucher )
|
override bool Used( Actor user )
|
||||||
{
|
{
|
||||||
if ( !toucher.player || !bSPECIAL ) return;
|
if ( !user.player || !InStateSequence(CurState,FindState("Idle")) ) return false;
|
||||||
if ( abs(DeltaAngle(angle,AngleTo(toucher))) < 120 ) return;
|
if ( abs(DeltaAngle(angle,AngleTo(user))) < 120 ) return false;
|
||||||
if ( deathmatch || !master )
|
if ( deathmatch || !master )
|
||||||
{
|
{
|
||||||
if ( master && (toucher != master) && master.CheckLocalView() )
|
if ( master && (user != master) && master.CheckLocalView() )
|
||||||
Console.Printf(StringTable.Localize("$M_SENTRYHIJACK"));
|
Console.Printf(StringTable.Localize("$M_SENTRYHIJACK"));
|
||||||
SentryItem.TransferOwnership(toucher,self);
|
if ( SentryItem.TransferOwnership(user,self) )
|
||||||
|
return false; // on first touch only transfer ownership
|
||||||
}
|
}
|
||||||
let amo = toucher.FindInventory("UMiniAmmo");
|
let amo = user.FindInventory("UMiniAmmo");
|
||||||
if ( !amo || (amo.Amount <= 0) || (tracer.special1 >= sentryammo) ) return;
|
if ( !amo || (amo.Amount <= 0) || (tracer.special1 >= sentryammo) ) return false;
|
||||||
A_PlaySound("misc/i_pkup",CHAN_ITEM);
|
A_PlaySound("misc/i_pkup",CHAN_ITEM);
|
||||||
int xammo = min(sentryammo-tracer.special1,amo.Amount);
|
int xammo = min(sentryammo-tracer.special1,amo.Amount);
|
||||||
special1 = tracer.special1 += xammo;
|
special1 = tracer.special1 += xammo;
|
||||||
amo.Amount -= xammo;
|
amo.Amount -= xammo;
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
override int DamageMobj( Actor inflictor, Actor source, int damage, Name mod, int flags, double angle )
|
override int DamageMobj( Actor inflictor, Actor source, int damage, Name mod, int flags, double angle )
|
||||||
{
|
{
|
||||||
|
|
@ -2110,7 +2137,6 @@ Class MinigunSentryBase : Actor
|
||||||
PackUp:
|
PackUp:
|
||||||
SENI A -1
|
SENI A -1
|
||||||
{
|
{
|
||||||
bSPECIAL = false;
|
|
||||||
tracer.SetStateLabel("PackUp");
|
tracer.SetStateLabel("PackUp");
|
||||||
}
|
}
|
||||||
Stop;
|
Stop;
|
||||||
|
|
@ -2222,6 +2248,7 @@ Class SentryGun : Actor
|
||||||
int rememberedplayer;
|
int rememberedplayer;
|
||||||
Default
|
Default
|
||||||
{
|
{
|
||||||
|
Tag "$T_OSENTRY";
|
||||||
Health 50;
|
Health 50;
|
||||||
Mass int.max;
|
Mass int.max;
|
||||||
Radius 10;
|
Radius 10;
|
||||||
|
|
@ -2240,11 +2267,7 @@ Class SentryGun : Actor
|
||||||
SetTag(String.Format(StringTable.Localize("$T_OWNEDOSENTRY"),master.player.GetUserName()));
|
SetTag(String.Format(StringTable.Localize("$T_OWNEDOSENTRY"),master.player.GetUserName()));
|
||||||
rememberedplayer = master.playernumber();
|
rememberedplayer = master.playernumber();
|
||||||
}
|
}
|
||||||
else
|
else rememberedplayer = -1;
|
||||||
{
|
|
||||||
SetTag(StringTable.Localize("$T_OSENTRY"));
|
|
||||||
rememberedplayer = -1;
|
|
||||||
}
|
|
||||||
if ( !deathmatch )
|
if ( !deathmatch )
|
||||||
{
|
{
|
||||||
if ( !master || !master.player ) bFRIENDLY = false;
|
if ( !master || !master.player ) bFRIENDLY = false;
|
||||||
|
|
@ -2255,8 +2278,9 @@ Class SentryGun : Actor
|
||||||
}
|
}
|
||||||
override string GetObituary( Actor victim, Actor inflictor, Name mod, bool playerattack )
|
override string GetObituary( Actor victim, Actor inflictor, Name mod, bool playerattack )
|
||||||
{
|
{
|
||||||
if ( victim == master ) return String.Format(StringTable.Localize("$O_OWNOSENTRY"),GetTag());
|
if ( victim == master ) return StringTable.Localize("$O_OWNOSENTRY");
|
||||||
return String.Format(StringTable.Localize("$O_OSENTRY"),GetTag());
|
else if ( master && master.player ) return String.Format(StringTable.Localize("$O_OSENTRY"),GetTag());
|
||||||
|
return StringTable.Localize("$O_ROGUEOSENTRY");
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -264,6 +264,11 @@ Class TarydiumDebuff : Thinker
|
||||||
|
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
|
if ( !sting_stinger )
|
||||||
|
{
|
||||||
|
Destroy();
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ( !victim || (victim.Health <= 0) )
|
if ( !victim || (victim.Health <= 0) )
|
||||||
{
|
{
|
||||||
BlowUp();
|
BlowUp();
|
||||||
|
|
@ -316,6 +321,7 @@ Class TarydiumDebuff : Thinker
|
||||||
static void Apply( Actor victim, Actor instigator, int amount )
|
static void Apply( Actor victim, Actor instigator, int amount )
|
||||||
{
|
{
|
||||||
if ( !victim || (victim.Health <= 0) || !victim.bISMONSTER ) return;
|
if ( !victim || (victim.Health <= 0) || !victim.bISMONSTER ) return;
|
||||||
|
if ( !sting_stinger ) return;
|
||||||
let ti = ThinkerIterator.Create("TarydiumDebuff",STAT_USER);
|
let ti = ThinkerIterator.Create("TarydiumDebuff",STAT_USER);
|
||||||
TarydiumDebuff t;
|
TarydiumDebuff t;
|
||||||
while ( t = TarydiumDebuff(ti.Next()) )
|
while ( t = TarydiumDebuff(ti.Next()) )
|
||||||
|
|
|
||||||
|
|
@ -68,14 +68,14 @@ Class URocketTrail : Actor
|
||||||
override void PostBeginPlay()
|
override void PostBeginPlay()
|
||||||
{
|
{
|
||||||
Super.PostBeginPlay();
|
Super.PostBeginPlay();
|
||||||
let l = Spawn("RocketLight",pos);
|
A_AttachLight('RocketLight',DynamicLight.PointLight,Color(255,224,128),32,32);
|
||||||
l.target = self;
|
|
||||||
}
|
}
|
||||||
override void Tick()
|
override void Tick()
|
||||||
{
|
{
|
||||||
Super.Tick();
|
Super.Tick();
|
||||||
if ( !target || target.InStateSequence(target.CurState,target.FindState("Death")) )
|
if ( !target || !target.bMISSILE )
|
||||||
{
|
{
|
||||||
|
A_RemoveLight('RocketLight');
|
||||||
Destroy();
|
Destroy();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -830,10 +830,10 @@ Class UnrealMainHandler : EventHandler
|
||||||
{
|
{
|
||||||
if ( (e.Replacee == 'Chainsaw') || (e.Replacee == 'Gauntlets') )
|
if ( (e.Replacee == 'Chainsaw') || (e.Replacee == 'Gauntlets') )
|
||||||
{
|
{
|
||||||
if ( !Random[Replacements](0,3) ) e.Replacement = 'WeaponPowerUp';
|
if ( (sting_dubious || sting_olsmp) && !Random[Replacements](0,3) ) e.Replacement = 'WeaponPowerUp';
|
||||||
else if ( Random[Replacements](0,2) )
|
else if ( Random[Replacements](0,2) )
|
||||||
{
|
{
|
||||||
if ( Random[Replacements](0,1) ) e.Replacement = 'Bonesaw';
|
if ( sting_dubious && Random[Replacements](0,1) ) e.Replacement = 'Bonesaw';
|
||||||
else e.Replacement = 'Stunner';
|
else e.Replacement = 'Stunner';
|
||||||
}
|
}
|
||||||
else if ( !Random[Replacements](0,2) ) e.Replacement = 'Betamag';
|
else if ( !Random[Replacements](0,2) ) e.Replacement = 'Betamag';
|
||||||
|
|
@ -888,9 +888,13 @@ Class UnrealMainHandler : EventHandler
|
||||||
}
|
}
|
||||||
else if ( (e.Replacee == 'BFG9000') || (e.Replacee == 'Mace') )
|
else if ( (e.Replacee == 'BFG9000') || (e.Replacee == 'Mace') )
|
||||||
{
|
{
|
||||||
if ( sting_olsmp && Random[Replacements](0,1) ) e.Replacement = 'OLSMP';
|
if ( sting_olsmp && (!sting_dubious || Random[Replacements](0,1)) ) e.Replacement = 'OLSMP';
|
||||||
else if ( Random[Replacements](0,1) ) e.Replacement = 'SMiniGun';
|
else if ( sting_dubious )
|
||||||
else e.Replacement = 'BigGun';
|
{
|
||||||
|
if ( Random[Replacements](0,1) ) e.Replacement = 'SMiniGun';
|
||||||
|
else e.Replacement = 'BigGun';
|
||||||
|
}
|
||||||
|
else e.Replacement = 'WeaponPowerup'; // lousy, I know
|
||||||
}
|
}
|
||||||
else if ( (e.Replacee == 'Clip') || (e.Replacee == 'GoldWandAmmo') || (e.Replacee == 'GoldWandHefty') ) e.Replacement = 'UClip';
|
else if ( (e.Replacee == 'Clip') || (e.Replacee == 'GoldWandAmmo') || (e.Replacee == 'GoldWandHefty') ) e.Replacement = 'UClip';
|
||||||
else if ( (e.Replacee == 'ClipBox') )
|
else if ( (e.Replacee == 'ClipBox') )
|
||||||
|
|
@ -957,7 +961,7 @@ Class UnrealMainHandler : EventHandler
|
||||||
}
|
}
|
||||||
else if ( (e.Replacee == 'Cell') || (e.Replacee == 'SkullRodAmmo') )
|
else if ( (e.Replacee == 'Cell') || (e.Replacee == 'SkullRodAmmo') )
|
||||||
{
|
{
|
||||||
if ( !Random[Replacements](0,4) )
|
if ( sting_dubious && !Random[Replacements](0,4) )
|
||||||
{
|
{
|
||||||
if ( !Random[Replacements](0,2) ) e.Replacement = 'BigAmmo2';
|
if ( !Random[Replacements](0,2) ) e.Replacement = 'BigAmmo2';
|
||||||
else e.Replacement = 'BigAmmo3';
|
else e.Replacement = 'BigAmmo3';
|
||||||
|
|
@ -980,7 +984,7 @@ Class UnrealMainHandler : EventHandler
|
||||||
}
|
}
|
||||||
else if ( (e.Replacee == 'CellPack') || (e.Replacee == 'SkullRodHefty') )
|
else if ( (e.Replacee == 'CellPack') || (e.Replacee == 'SkullRodHefty') )
|
||||||
{
|
{
|
||||||
if ( !Random[Replacements](0,4) )
|
if ( sting_dubious && !Random[Replacements](0,4) )
|
||||||
{
|
{
|
||||||
if ( !Random[Replacements](0,2) ) e.Replacement = 'BigAmmo';
|
if ( !Random[Replacements](0,2) ) e.Replacement = 'BigAmmo';
|
||||||
else e.Replacement = 'BigAmmo2';
|
else e.Replacement = 'BigAmmo2';
|
||||||
|
|
@ -993,8 +997,8 @@ Class UnrealMainHandler : EventHandler
|
||||||
else if ( (e.Replacee == 'InvulnerabilitySphere') || (e.Replacee == 'ArtiInvulnerability') ) e.Replacement = 'PowerShield';
|
else if ( (e.Replacee == 'InvulnerabilitySphere') || (e.Replacee == 'ArtiInvulnerability') ) e.Replacement = 'PowerShield';
|
||||||
else if ( (e.Replacee == 'Berserk') || (e.Replacee == 'ArtiTomeOfPower') )
|
else if ( (e.Replacee == 'Berserk') || (e.Replacee == 'ArtiTomeOfPower') )
|
||||||
{
|
{
|
||||||
if ( !Random[Replacements](0,9) ) e.Replacement = 'SentryItem';
|
if ( sting_msentry && !Random[Replacements](0,9) ) e.Replacement = 'SentryItem';
|
||||||
else if ( !Random[Replacements](0,2) ) e.Replacement = 'WeaponPowerUp';
|
else if ( (sting_dubious || sting_olsmp) && !Random[Replacements](0,2) ) e.Replacement = 'WeaponPowerUp';
|
||||||
else e.Replacement = 'Amplifier';
|
else e.Replacement = 'Amplifier';
|
||||||
}
|
}
|
||||||
else if ( e.Replacee == 'ArtiEgg' ) e.Replacement = 'VoiceBox';
|
else if ( e.Replacee == 'ArtiEgg' ) e.Replacement = 'VoiceBox';
|
||||||
|
|
|
||||||
|
|
@ -190,7 +190,7 @@ Class UnrealHUD : BaseStatusBar
|
||||||
|
|
||||||
private void DrawNumberOf( Inventory i, double x, double y )
|
private void DrawNumberOf( Inventory i, double x, double y )
|
||||||
{
|
{
|
||||||
if ( (i.Amount <= 1) && !((i is 'UnrealInventory') || !UnrealInventory(i).bDRAWSPECIAL) ) return;
|
if ( (i.Amount <= 1) && !((i is 'UnrealInventory') && UnrealInventory(i).bDRAWSPECIAL) ) return;
|
||||||
double TempX = CurX, TempY = CurY;
|
double TempX = CurX, TempY = CurY;
|
||||||
string itxt = String.Format("%d",((i is 'UnrealInventory')&&UnrealInventory(i).bDRAWSPECIAL)?i.special1:i.Amount);
|
string itxt = String.Format("%d",((i is 'UnrealInventory')&&UnrealInventory(i).bDRAWSPECIAL)?i.special1:i.Amount);
|
||||||
CurX += 30;
|
CurX += 30;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue