mirror of
https://github.com/1dot13/source.git
synced 2026-08-05 14:00:23 +02:00
We can now use interactive actions to alter decals on walls, so it is possible to simulate taking off an object from the scenery and add it as an item.
For more info, see http://thepit.ja-galaxy-forum.com/index.php?t=msg&goto=363513&#msg_363513 Requires GameDir >= r2601 git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@9141 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+31
-47
@@ -137,6 +137,10 @@ INT8 FromWorldFlagsToSmokeType( UINT16 ubWorldFlags )
|
||||
{
|
||||
return(DEBRIS_SMOKE_EFFECT);
|
||||
}
|
||||
else if ( ubWorldFlags & MAPELEMENT_EXT_FIRERETARDANT_SMOKE )
|
||||
{
|
||||
return FIRERETARDANT_SMOKE_EFFECT;
|
||||
}
|
||||
|
||||
return(NO_SMOKE_EFFECT);
|
||||
}
|
||||
@@ -180,6 +184,10 @@ UINT16 FromSmokeTypeToWorldFlags( INT8 bType )
|
||||
return(MAPELEMENT_EXT_DEBRIS_SMOKE);
|
||||
break;
|
||||
|
||||
case FIRERETARDANT_SMOKE_EFFECT:
|
||||
return MAPELEMENT_EXT_FIRERETARDANT_SMOKE;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
return( 0 );
|
||||
@@ -288,6 +296,10 @@ INT32 NewSmokeEffect( INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT8 ubOwner,
|
||||
case EXPLOSV_SMOKE_DEBRIS:
|
||||
bSmokeEffectType = DEBRIS_SMOKE_EFFECT;
|
||||
break;
|
||||
|
||||
case EXPLOSV_SMOKE_FIRERETARDANT:
|
||||
bSmokeEffectType = FIRERETARDANT_SMOKE_EFFECT;
|
||||
break;
|
||||
}
|
||||
|
||||
pSmoke->ubDuration = (UINT8)Explosive[ Item[ usItem ].ubClassIndex ].ubDuration;
|
||||
@@ -395,6 +407,9 @@ INT32 NewSmokeEffect(INT32 sGridNo, UINT16 usItem, INT8 bLevel, UINT8 ubOwner, B
|
||||
case EXPLOSV_SMOKE_DEBRIS:
|
||||
bSmokeEffectType = DEBRIS_SMOKE_EFFECT;
|
||||
break;
|
||||
case EXPLOSV_SMOKE_FIRERETARDANT:
|
||||
bSmokeEffectType = FIRERETARDANT_SMOKE_EFFECT;
|
||||
break;
|
||||
}
|
||||
|
||||
// sevenfm: use custom duration/radius
|
||||
@@ -607,59 +622,19 @@ void AddSmokeEffectToTile( INT32 iSmokeEffectID, INT8 bType, INT32 sGridNo, INT8
|
||||
break;
|
||||
|
||||
case CREATURE_SMOKE_EFFECT:
|
||||
|
||||
if ( !( gGameSettings.fOptions[ TOPTION_ANIMATE_SMOKE ] ) )
|
||||
{
|
||||
strcpy( AniParams.zCachedFile, "TILECACHE\\spit_gas.STI" );
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( fDissipating )
|
||||
{
|
||||
strcpy( AniParams.zCachedFile, "TILECACHE\\spit_gas.STI" );
|
||||
}
|
||||
else
|
||||
{
|
||||
strcpy( AniParams.zCachedFile, "TILECACHE\\spit_gas.STI" );
|
||||
}
|
||||
}
|
||||
strcpy( AniParams.zCachedFile, "TILECACHE\\spit_gas.STI" );
|
||||
break;
|
||||
|
||||
case SIGNAL_SMOKE_EFFECT:
|
||||
|
||||
if ( !( gGameSettings.fOptions[ TOPTION_ANIMATE_SMOKE ] ) )
|
||||
{
|
||||
strcpy( AniParams.zCachedFile, "TILECACHE\\signal_gas.STI" );
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( fDissipating )
|
||||
{
|
||||
strcpy( AniParams.zCachedFile, "TILECACHE\\signal_gas.STI" );
|
||||
}
|
||||
else
|
||||
{
|
||||
strcpy( AniParams.zCachedFile, "TILECACHE\\signal_gas.STI" );
|
||||
}
|
||||
}
|
||||
strcpy( AniParams.zCachedFile, "TILECACHE\\signal_gas.STI" );
|
||||
break;
|
||||
|
||||
case DEBRIS_SMOKE_EFFECT:
|
||||
if ( !(gGameSettings.fOptions[TOPTION_ANIMATE_SMOKE]) )
|
||||
{
|
||||
strcpy( AniParams.zCachedFile, "TILECACHE\\debris_smoke.STI" );
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( fDissipating )
|
||||
{
|
||||
strcpy( AniParams.zCachedFile, "TILECACHE\\debris_smoke.STI" );
|
||||
}
|
||||
else
|
||||
{
|
||||
strcpy( AniParams.zCachedFile, "TILECACHE\\debris_smoke.STI" );
|
||||
}
|
||||
}
|
||||
strcpy( AniParams.zCachedFile, "TILECACHE\\debris_smoke.STI" );
|
||||
break;
|
||||
|
||||
case FIRERETARDANT_SMOKE_EFFECT:
|
||||
strcpy( AniParams.zCachedFile, "TILECACHE\\white_smoke.STI" );
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -769,6 +744,15 @@ void DecaySmokeEffects( UINT32 uiTime )
|
||||
}
|
||||
}
|
||||
|
||||
// Flugente: if tile has a fire retardant effect, don't create new fire
|
||||
if ( Explosive[Item[pSmoke->usItem].ubClassIndex].ubType == EXPLOSV_BURNABLEGAS )
|
||||
{
|
||||
if ( gpWorldLevelData[pSmoke->sGridNo].ubExtFlags[bLevel] & MAPELEMENT_EXT_FIRERETARDANT_SMOKE )
|
||||
{
|
||||
pSmoke->bAge = pSmoke->ubDuration + 1;
|
||||
}
|
||||
}
|
||||
|
||||
if ( fUpdate )
|
||||
{
|
||||
pSmoke->uiTimeOfLastUpdate = uiTime;
|
||||
|
||||
Reference in New Issue
Block a user