Commit graph

863 commits

Author SHA1 Message Date
Christoph Oelckers
4ca20e0297 - fixed: AActor::SetPortalTransition set an incorrect value for the previous position. 2017-02-19 21:35:06 +01:00
Christoph Oelckers
498da825a5 - made the Skins array scripting friendly and exported it. 2017-02-17 21:51:23 +01:00
Christoph Oelckers
d8ebbcfc08 - fixed: When loading a savegame the player class in the userinfo needs to be updated.
- fixed: Class pointers should not be added to the list of garbage collected pointers.
- fixed several warnings in the event code.
2017-02-15 11:55:08 +01:00
Christoph Oelckers
b7b0e64471 - separated splash detection from water level setting.
This could cause problems if 3D floors with different properties for slashing and waterlevel were occupied at the same time. By keeping the slash code separate both parts can be handled without having to look out for the other.
2017-02-14 20:11:30 +01:00
Christoph Oelckers
2234d36c7a Merge branch 'thereisnospoon' of https://github.com/jewalky/gzdoom
# Conflicts:
#	src/dobject.h
2017-02-14 19:10:02 +01:00
Christoph Oelckers
f37db344df - removed class pointers from AActor's pointer list. 2017-02-09 15:13:43 +01:00
alexey.lysiuk
4dd7e02721 AActor::GiveInventory() is now functional
See https://mantis.zdoom.org/view.php?id=213
2017-02-09 10:15:05 +02:00
Christoph Oelckers
8277299135 - Turned DropItem into a plain struct again like it was before the scripting branch got merged.
Making this an object had little to no advantage, except being able to remove the deleter code. Now, with some of the class data already being allocated in a memory arena so that freeing it is easier, this can also be used for the drop item lists which makes it unnecessary to subject them to the GC. This also merges the memory arenas for VM functions and flat pointers because both get deleted at the same time so they can share the same one.
2017-02-08 20:37:22 +01:00
Christoph Oelckers
c77f6636f8 - moved the three remaining variables from PClassInventory to PClassActor so that PClassInventory can be removed. 2017-02-08 18:11:23 +01:00
Christoph Oelckers
a6785afddb - optimized the FName versions of IsDescendantOf and IsKindOf. These can be done without first looking up the class type itself. 2017-02-08 15:47:22 +01:00
ZZYZX
b7e64a2bc5 Merge remote-tracking branch 'gz/master' into thereisnospoon 2017-02-06 14:14:23 +02:00
Christoph Oelckers
a4dbbf6969 - fixed P_NightmareRespawn did not respawn a map defined spawn health and neither made skill-related adjustments. 2017-02-05 21:43:16 +01:00
ZZYZX
5d8b3e8084 Fixed PlayerEntered for non-travel enters 2017-02-02 22:22:10 +02:00
ZZYZX
9942a59866 Almost forgot (x2): thing revived world event 2017-01-31 04:11:09 +02:00
ZZYZX
3c1cecfa2b Implemented WorldLightning and WorldThingDestroyed. 2017-01-31 02:15:57 +02:00
ZZYZX
83f868a049 Implemented WorldThingSpawned hook. Also changed Console.Printf to automatically add \n. Also fixed vararg calls with names. 2017-01-30 09:10:33 +02:00
Christoph Oelckers
729eade8f5 - enable terrain splashes for non-solid non-swimmable 3D floors. 2017-01-29 18:46:35 +01:00
Major Cooke
46ee2c5ec6 - Fixed HITTARGET, HITMASTER, HITTRACER, crash and xdeath states being broken on bouncing actors that die/explode. 2017-01-27 18:03:09 +01:00
alexey.lysiuk
935d49d75f Fixed returning of value from TakeInventory() function
Issuing take CCMD no longer causes assertion failure at src/scripting/vm/vmexec.h:662
assert(numret == C && "Number of parameters returned differs from what was expected by the caller")
2017-01-22 13:51:46 +02:00
alexey.lysiuk
5158b1c337 Fixed undefined behavior of DropInventory()
See https://mantis.zdoom.org/view.php?id=93
2017-01-21 11:43:11 +02:00
Christoph Oelckers
23a7fd40aa - fixed: The script wrapper for AActor::TakeInventory erroneously called RemoveInventory, not TakeInventory. 2017-01-20 20:04:57 +01:00
Christoph Oelckers
1750ded7c4 - more exporting of AInventory. 2017-01-19 20:56:31 +01:00
Christoph Oelckers
7c6542e595 - partial scriptification of AInventory.
- scriptification of CustomInventory.
2017-01-19 19:14:22 +01:00
Christoph Oelckers
8256f25a84 - no need to keep AArmor native, now that all child classes have been scriptified. 2017-01-18 23:46:19 +01:00
Christoph Oelckers
632a29e365 - scriptified HexenArmor. 2017-01-18 23:42:08 +01:00
Christoph Oelckers
2fcffd1fc1 - removed the remaining native parts of ABasicArmor.
- simplified some FindInventory calls using PClass::FindActor to call the variant taking a name directly.
2017-01-18 22:57:47 +01:00
Christoph Oelckers
2dd6fb9595 - scriptified BasicArmorBonus. 2017-01-18 20:23:13 +01:00
Christoph Oelckers
30a8541a15 - scriptified the weapon piece functions.
- fixed: ClearInventory did not process depleted items properly.
- changed HexenArmor from UNDROPPABLE to UNTOSSABLE because this allowed to remove some special handling in ClearInventory. The only other place which checks this flag also checks UNTOSSABLE.
2017-01-18 17:26:12 +01:00
Christoph Oelckers
d9fd2d509f - scriptified the remains of AAmmo. 2017-01-18 14:18:17 +01:00
Christoph Oelckers
534b2ebbfb - scriptified the remains of APowerup.
- ensure that actor defaults contain a valid virtual table and class pointer so that they can actually use virtual and class-dependent method functions. This is needed for retrieving script variables from them.
2017-01-18 10:33:03 +01:00
Christoph Oelckers
232b64d332 - eliminated the native PowerupGiver class.
- scriptified the respawn invulnerability code into a virtual OnRespawn function for PlayerPawn so that custom effects can be implemented.
2017-01-18 00:11:04 +01:00
Christoph Oelckers
14f2c39e58 - scriptified cht_Give and cht_Take and made them virtual function of PlayerPawn so that this can be better configured for mods that want other options in here.
- improved the class pointer to string cast to print the actual type it describes and not the class pointer's own type.
- fixed: The 'is' operator created non-working code when checking the inheritance of a class pointer, it only worked for objects.
2017-01-17 17:34:39 +01:00
Christoph Oelckers
8f6571241d - scriptified AÜpwerInvulnerable. 2017-01-16 23:45:25 +01:00
Christoph Oelckers
d3ab691afb - scriptified APowerInvisibility.
- changed AlterWeaponSprite so that it doesn't expose renderer internals to the script code.
2017-01-16 20:34:12 +01:00
Christoph Oelckers
cd1d96b83a - fixed compilation. 2017-01-16 10:36:56 +01:00
Christoph Oelckers
cd0d17dbd5 - made AbsorbDamage work iteratively to avoid large stack use in the VM. 2017-01-16 10:36:56 +01:00
Christoph Oelckers
bf52ce19e4 - fixed: AActor::ClearInventory should respect IF_KEEPDEPLETED for all items. 2017-01-15 18:58:17 +01:00
Christoph Oelckers
03c7b10fd6 - fully scriptified HealthPickup. 2017-01-15 18:46:40 +01:00
Christoph Oelckers
179b6e1a39 - added property definitions to the ZScript parser. This will allow defining custom properties for the default block in custom base classes. See 'Health' for an example.
- support transient object member variables for information that does not need to be put in a savegame.
- fixed: special initialization of objects needs to pass the proper defaults along, otherwise the parent classes will use their own, inappropriate one.
2017-01-15 16:55:30 +01:00
Christoph Oelckers
9f9cea4b4a - scriptified the health items. 2017-01-15 01:02:38 +01:00
Christoph Oelckers
e16713492f - scriptified A_FreezeDeath(Chunks). 2017-01-14 18:26:59 +01:00
Christoph Oelckers
96777273c4 - scriptified ASoundSequence.
- exported virtual Actor.MarkPrecacheSounds function.
2017-01-14 14:37:29 +01:00
Christoph Oelckers
40e7fa5be2 - scriptified the RandomSpawner.
- fixed: String constants were not processed by the compiler backend.
- added an explicit name cast for class types.
2017-01-14 02:05:52 +01:00
Christoph Oelckers
4be0767d7b - scriptified the moving camera. 2017-01-13 22:13:03 +01:00
Christoph Oelckers
51cc7feb4c - scriptified the particle fountains. 2017-01-13 19:29:54 +01:00
Christoph Oelckers
1400f401e7 - fixed use of multiple sector actions in the same sector.
The entire setup was quite broken with each item using its own activation result and the ones of the subsequent items in the list as the return value.
This rendered the STANDSTILL check in the main function totally unpredictable because the value it depended on could come from any item in the list.
Changed it so that the main dispatcher function is part of sector_t and does the stepping through the list iteratively instead of letting each item recursively call its successor and let this function decide for each item alone whether it should be removed.
The broken setup also had the effect that any MusicChanger would trigger all following SecActEnter specials right on msp start.
2017-01-13 01:34:43 +01:00
Christoph Oelckers
85a84b5e94 - scriptified FastProjectile. 2017-01-13 00:35:56 +01:00
Christoph Oelckers
7b7623d2c4 - split DObject::Destroy into the main method, a native OnDestroy and a scripted OnDestroy method and made the main method non-virtual
This was done to ensure it can be properly overridden in scripts without causing problems when called during engine shutdown for the type and symbol objects the VM needs to work and to have the scripted version always run first.
Since the scripted OnDestroy method never calls the native version - the native one is run after the scripted one - this can be simply skipped over during shutdown.
2017-01-12 22:49:18 +01:00
Christoph Oelckers
23482735a0 - removed PClassAmmo.
No need to maintain these clunky meta class for one single property. The overhead the mere existence of this class creates is far more than 100 spawned ammo items would cost.
There is no need to serialize AAmmo::DropAmount, this value has no meaning on an already spawned item.
2017-01-12 11:44:33 +01:00
Christoph Oelckers
cd7986b1b1 - refactored global sides array to be more VM friendly.
- moved FLevelLocals to its own header to resolve some circular include conflicts.
2017-01-08 18:46:17 +01:00