Merge branch 'maint'

This commit is contained in:
Christoph Oelckers 2013-08-09 12:51:26 +02:00
commit 21bce3b0c4
12 changed files with 77 additions and 6 deletions

View file

@ -186,6 +186,7 @@ Note: All <bool> fields default to false unless mentioned otherwise.
soundsequence = <string>; // The sound sequence to play when this sector moves. Placing a soundsequence = <string>; // The sound sequence to play when this sector moves. Placing a
// sound sequence thing in the sector will override this property. // sound sequence thing in the sector will override this property.
hidden = <bool>; // if true this sector will not be drawn on the textured automap. hidden = <bool>; // if true this sector will not be drawn on the textured automap.
waterzone = <bool>; // Sector is under water and swimmable
* Note about dropactors * Note about dropactors
@ -328,6 +329,9 @@ Added back locknumber property.
1.20 25.02.2012 1.20 25.02.2012
Added arg0str thing property. Added arg0str thing property.
1.21 09.08.2013
Added waterzone sector property.
=============================================================================== ===============================================================================
EOF EOF
=============================================================================== ===============================================================================

View file

@ -141,6 +141,7 @@ public:
FNameNoInit MorphWeapon; FNameNoInit MorphWeapon;
fixed_t AttackZOffset; // attack height, relative to player center fixed_t AttackZOffset; // attack height, relative to player center
fixed_t UseRange; // [NS] Distance at which player can +use fixed_t UseRange; // [NS] Distance at which player can +use
fixed_t AirCapacity; // Multiplier for air supply underwater.
const PClass *FlechetteType; const PClass *FlechetteType;
// [CW] Fades for when you are being damaged. // [CW] Fades for when you are being damaged.

View file

@ -101,15 +101,20 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_VileTarget)
// //
// A_VileAttack // A_VileAttack
// //
// A_VileAttack flags
#define VAF_DMGTYPEAPPLYTODIRECT 1
DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_VileAttack) DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_VileAttack)
{ {
ACTION_PARAM_START(6); ACTION_PARAM_START(7);
ACTION_PARAM_SOUND(snd,0); ACTION_PARAM_SOUND(snd,0);
ACTION_PARAM_INT(dmg,1); ACTION_PARAM_INT(dmg,1);
ACTION_PARAM_INT(blastdmg,2); ACTION_PARAM_INT(blastdmg,2);
ACTION_PARAM_INT(blastrad,3); ACTION_PARAM_INT(blastrad,3);
ACTION_PARAM_FIXED(thrust,4); ACTION_PARAM_FIXED(thrust,4);
ACTION_PARAM_NAME(dmgtype,5); ACTION_PARAM_NAME(dmgtype,5);
ACTION_PARAM_INT(flags,6);
AActor *fire, *target; AActor *fire, *target;
angle_t an; angle_t an;
@ -123,7 +128,15 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_VileAttack)
return; return;
S_Sound (self, CHAN_WEAPON, snd, 1, ATTN_NORM); S_Sound (self, CHAN_WEAPON, snd, 1, ATTN_NORM);
int newdam = P_DamageMobj (target, self, self, dmg, NAME_None);
int newdam;
if (flags & VAF_DMGTYPEAPPLYTODIRECT)
newdam = P_DamageMobj (target, self, self, dmg, dmgtype);
else
newdam = P_DamageMobj (target, self, self, dmg, NAME_None);
P_TraceBleed (newdam > 0 ? newdam : dmg, target); P_TraceBleed (newdam > 0 ? newdam : dmg, target);
an = self->angle >> ANGLETOFINESHIFT; an = self->angle >> ANGLETOFINESHIFT;

View file

@ -442,6 +442,7 @@ xx(Alphafloor)
xx(Alphaceiling) xx(Alphaceiling)
xx(Renderstylefloor) xx(Renderstylefloor)
xx(Renderstyleceiling) xx(Renderstyleceiling)
xx(Waterzone)
xx(offsetx_top) xx(offsetx_top)
xx(offsety_top) xx(offsety_top)

View file

@ -3512,6 +3512,8 @@ enum
APROP_Radius = 36, APROP_Radius = 36,
APROP_ReactionTime = 37, APROP_ReactionTime = 37,
APROP_MeleeRange = 38, APROP_MeleeRange = 38,
APROP_ViewHeight = 39,
APROP_AttackZOffset = 40
}; };
// These are needed for ACS's APROP_RenderStyle // These are needed for ACS's APROP_RenderStyle
@ -3727,6 +3729,16 @@ void DLevelScript::DoSetActorProperty (AActor *actor, int property, int value)
actor->reactiontime = value; actor->reactiontime = value;
break; break;
case APROP_ViewHeight:
if (actor->IsKindOf (RUNTIME_CLASS (APlayerPawn)))
static_cast<APlayerPawn *>(actor)->ViewHeight = value;
break;
case APROP_AttackZOffset:
if (actor->IsKindOf (RUNTIME_CLASS (APlayerPawn)))
static_cast<APlayerPawn *>(actor)->AttackZOffset = value;
break;
default: default:
// do nothing. // do nothing.
break; break;
@ -3799,6 +3811,23 @@ int DLevelScript::GetActorProperty (int tid, int property, const SDWORD *stack,
case APROP_Radius: return actor->radius; case APROP_Radius: return actor->radius;
case APROP_ReactionTime:return actor->reactiontime; case APROP_ReactionTime:return actor->reactiontime;
case APROP_MeleeRange: return actor->meleerange; case APROP_MeleeRange: return actor->meleerange;
case APROP_ViewHeight: if (actor->IsKindOf (RUNTIME_CLASS (APlayerPawn)))
{
return static_cast<APlayerPawn *>(actor)->ViewHeight;
}
else
{
return 0;
}
case APROP_AttackZOffset:
if (actor->IsKindOf (RUNTIME_CLASS (APlayerPawn)))
{
return static_cast<APlayerPawn *>(actor)->AttackZOffset;
}
else
{
return 0;
}
case APROP_SeeSound: return GlobalACSStrings.AddString(actor->SeeSound, stack, stackdepth); case APROP_SeeSound: return GlobalACSStrings.AddString(actor->SeeSound, stack, stackdepth);
case APROP_AttackSound: return GlobalACSStrings.AddString(actor->AttackSound, stack, stackdepth); case APROP_AttackSound: return GlobalACSStrings.AddString(actor->AttackSound, stack, stackdepth);
@ -3851,6 +3880,8 @@ int DLevelScript::CheckActorProperty (int tid, int property, int value)
case APROP_Radius: case APROP_Radius:
case APROP_ReactionTime: case APROP_ReactionTime:
case APROP_MeleeRange: case APROP_MeleeRange:
case APROP_ViewHeight:
case APROP_AttackZOffset:
return (GetActorProperty(tid, property, NULL, 0) == value); return (GetActorProperty(tid, property, NULL, 0) == value);
// Boolean values need to compare to a binary version of value // Boolean values need to compare to a binary version of value

View file

@ -1326,7 +1326,11 @@ public:
continue; continue;
case NAME_hidden: case NAME_hidden:
sec->MoreFlags |= SECF_HIDDEN; Flag(sec->MoreFlags, SECF_HIDDEN, key);
break;
case NAME_Waterzone:
Flag(sec->MoreFlags, SECF_UNDERWATER, key);
break; break;
default: default:

View file

@ -477,6 +477,10 @@ void APlayerPawn::Serialize (FArchive &arc)
{ {
arc << UseRange; arc << UseRange;
} }
if (SaveVersion >= 4503)
{
arc << AirCapacity;
}
} }
//=========================================================================== //===========================================================================
@ -1066,7 +1070,7 @@ bool APlayerPawn::ResetAirSupply (bool playgasp)
{ {
S_Sound (this, CHAN_VOICE, "*gasp", 1, ATTN_NORM); S_Sound (this, CHAN_VOICE, "*gasp", 1, ATTN_NORM);
} }
if (level.airsupply> 0) player->air_finished = level.time + level.airsupply; if (level.airsupply> 0 && player->mo->AirCapacity > 0) player->air_finished = level.time + FixedMul(level.airsupply, player->mo->AirCapacity);
else player->air_finished = INT_MAX; else player->air_finished = INT_MAX;
return wasdrowning; return wasdrowning;
} }

View file

@ -2419,6 +2419,15 @@ DEFINE_CLASS_PROPERTY_PREFIX(player, userange, F, PlayerPawn)
defaults->UseRange = z; defaults->UseRange = z;
} }
//==========================================================================
//
//==========================================================================
DEFINE_CLASS_PROPERTY_PREFIX(player, aircapacity, F, PlayerPawn)
{
PROP_FIXED_PARM(z, 0);
defaults->AirCapacity = z;
}
//========================================================================== //==========================================================================
// //
//========================================================================== //==========================================================================

View file

@ -76,7 +76,7 @@ const char *GetVersionString();
// Use 4500 as the base git save version, since it's higher than the // Use 4500 as the base git save version, since it's higher than the
// SVN revision ever got. // SVN revision ever got.
#define SAVEVER 4502 #define SAVEVER 4503
#define SAVEVERSTRINGIFY2(x) #x #define SAVEVERSTRINGIFY2(x) #x
#define SAVEVERSTRINGIFY(x) SAVEVERSTRINGIFY2(x) #define SAVEVERSTRINGIFY(x) SAVEVERSTRINGIFY2(x)

View file

@ -84,7 +84,7 @@ ACTOR Actor native //: Thinker
action native A_VileChase(); action native A_VileChase();
action native A_VileStart(); action native A_VileStart();
action native A_VileTarget(class<Actor> fire = "ArchvileFire"); action native A_VileTarget(class<Actor> fire = "ArchvileFire");
action native A_VileAttack(sound snd = "vile/stop", int initialdmg = 20, int blastdmg = 70, int blastradius = 70, float thrustfac = 1.0, name damagetype = "Fire"); action native A_VileAttack(sound snd = "vile/stop", int initialdmg = 20, int blastdmg = 70, int blastradius = 70, float thrustfac = 1.0, name damagetype = "Fire", int flags = 0);
action native A_StartFire(); action native A_StartFire();
action native A_Fire(float spawnheight = 0); action native A_Fire(float spawnheight = 0);
action native A_FireCrackle(); action native A_FireCrackle();

View file

@ -4,6 +4,9 @@ const int PAF_NOSKULLATTACK = 1;
const int PAF_AIMFACING = 2; const int PAF_AIMFACING = 2;
const int PAF_NOTARGET = 4; const int PAF_NOTARGET = 4;
// Flags for A_VileAttack
const int VAF_DMGTYPEAPPLYTODIRECT = 1;
// Flags for A_Saw // Flags for A_Saw
const int SF_NORANDOM = 1; const int SF_NORANDOM = 1;
const int SF_RANDOMLIGHTMISS = 2; const int SF_RANDOMLIGHTMISS = 2;

View file

@ -32,6 +32,7 @@ Actor PlayerPawn : Actor native
Player.DamageScreenColor "ff 00 00" Player.DamageScreenColor "ff 00 00"
Player.MugShotMaxHealth 0 Player.MugShotMaxHealth 0
Player.FlechetteType "ArtiPoisonBag3" Player.FlechetteType "ArtiPoisonBag3"
Player.AirCapacity 1
Obituary "$OB_MPDEFAULT" Obituary "$OB_MPDEFAULT"
} }