Commit graph

135 commits

Author SHA1 Message Date
Christoph Oelckers
9045615a7a - renamed g_shared folder to playsim. 2019-07-14 13:24:18 +02:00
Christoph Oelckers
3f90764faa - moved the contents of g_inventory to g_shared and gamedata subfolders.
a_pickups only contains a few native remains of the inventory code and the other two only the static data maintenance for their items.
2019-02-01 18:13:12 +01:00
Christoph Oelckers
014e04ce82 - copied inventory files to their own folder.
It's about time this stuff is getting cleaned up seriously. Both a_pickups.cpp and a_artifacts.cpp are so overstuffed that it has become a chore finding stuff in there.
2016-11-30 10:28:02 +01:00
Christoph Oelckers
3af9232fca - scriptified a_strifeitems.cpp and a_debris.cpp.
- Changed the glass shards so that they do not have to override FloorBounceMissile. It was the only place where this was virtually overridden and provided little usefulness.
- made 'out' variables work.
- fixed virtual call handling for HandlePickup.
2016-11-29 12:17:05 +01:00
Christoph Oelckers
9064a5b0ac - scriptified Strife's coins.
- added a String class to allow attaching methods to the builtin string type. This works by checking if the left side of the member accessor is a string and just replacing the tyoe in this one place, all the rest is automatic.
2016-11-28 18:15:18 +01:00
Christoph Oelckers
d2ce78fae7 - changed the return value of PickupMessage to an FString so that it can interface with scripts.
- use standard convention of prefacing localizable strings with "$" for C_MidPrint.
2016-11-28 16:19:01 +01:00
Christoph Oelckers
8551a4f6e1 - scriptified the Sigil. This isn't fully tested yet. 2016-11-28 14:39:25 +01:00
Christoph Oelckers
b10ffb5133 - exported a few more functions.
- refactored the ModifyDamage interface to be more scripting friendly.

In general it should be avoided having to call directly into chained inventory functions because they are very problematic and prone to errors. So this got wrapped into a single handler (on AActor, not AInventory!) which will later make it easier to refactor the parameters of ModifyDamage to work better for scripting and avoid the chaining.
2016-11-27 16:24:32 +01:00
Christoph Oelckers
096c51d546 - changed AInventory::HandlePickup to work iteratively instead of recursively.
Two reasons for this:

1. if this has to be routed through the VM each recursion will cost 1000 bytes of stack space which simply is not good.
2. having the virtual function only care about the item itself but not the entire inventory chain is a lot less error prone for scripting.

Since the scripting interface needs a separate caller function anyway this seemed like a good time to change it. The same will be done for the other chained inventory handlers as well.
2016-11-27 16:24:31 +01:00
Christoph Oelckers
e541c27622 - scriptified the weapon's state getter methods - as preparation for the fighter axe. 2016-11-26 19:48:30 +01:00
Christoph Oelckers
177aa6ec42 - converted half of ClericHoly. (Making a commit before starting on the more complex stuff.)
- added a 'constructor' for color values.
2016-11-26 13:18:48 +01:00
Christoph Oelckers
0d6f37835f - completed Heretic scriptification with the two remaining artifacts. 2016-11-25 18:41:00 +01:00
Christoph Oelckers
4f370ba181 - scriptified the Phoenix Rod, completing the Heretic weapons. 2016-11-25 18:13:08 +01:00
Christoph Oelckers
66d28a24b8 - disabled the scripted virtual function module after finding out that it only works if each single class that may serve as a parent for scripting is explicitly declared.
Needless to say, this is simply too volatile and would require constant active maintenance, not to mention a huge amount of work up front to get going.
It also hid a nasty problem with the Destroy method. Due to the way the garbage collector works, Destroy cannot be exposed to scripts as-is. It may be called from scripts but it may not be overridden from scripts because the garbage collector can call this function after all data needed for calling a scripted override has already been destroyed because if that data is also being collected there is no guarantee that proper order of destruction is observed. So for now Destroy is just a normal native method to scripted classes
2016-11-25 00:25:26 +01:00
Christoph Oelckers
0c95568d98 - exported native fields of several more classes. 2016-11-23 01:31:48 +01:00
Christoph Oelckers
099b9970ef - added proper definitions for all exported native fields.
- synthesize native fields for all declared flags, not just for AActor.
2016-11-22 23:43:32 +01:00
Christoph Oelckers
af34d82888 - scriptified A_Saw.
- implemented multiple-return-value assignment. Due to some grammar conflicts the originally intended Lua-inspired syntax of 'a, b = Function()' could not be done, so it's '[a, b] = Function()'
2016-11-20 00:25:38 +01:00
Christoph Oelckers
3ce699bf9b - implemented pass-by-reference arguments - so far only for memory based variables.
- changed Dehacked weapon function lookup to check the symbol table instead of directly referencing the VM functions. Once scriptified these pointers will no longer be available.
- removed all special ATAGs from the VM. While well intentioned any pointer tagged with them is basically unusable because it'd trigger asserts all over the place.
- scriptified A_Punch for testing pass-by-reference parameters and stack variables.
2016-11-19 01:23:56 +01:00
Christoph Oelckers
091da92819 - Added AStateProvider class which is used to define the special action function behavior of weapons and custom inventorys. The class itself does not do anything, but the compiler will use it to set up the action function prototypes differently which in turn will be used to do type checking during code generation. 2016-10-15 15:10:48 +02:00
Christoph Oelckers
59ed26c0b6 - resorted some of thingdef.cpp's contents into more appropriate files.
- split FinishActor into several functions. While DECORATE can, ZSCRIPT cannot do all this in one go.
- split the state finalization into several class-specific virtual functions.
2016-10-12 20:42:41 +02:00
Christoph Oelckers
e89d072abc - most thinkers are done. Some stuff about polyobject pointers is temporarily disabled right now because some of the required functions have already been pulled out. 2016-09-19 19:14:30 +02:00
Christoph Oelckers
7edf4c1afc - added new serializers to several classes and moved the old ones to the dump file. 2016-09-19 12:53:42 +02:00
Christoph Oelckers
d24aa5dec9 - reformatting for easier search. 2016-09-19 10:47:59 +02:00
MajorCooke
1322ef2449 Renamed NODEATHJUMP to NODEATHDESELECT. 2016-07-28 08:29:47 +02:00
Leonard2
797f3aec0a Added a weapon flag to ignore a player's input when dead
The reason this is not set by default is because before that anyone could call A_WeaponReady within their Deselect state which would have allowed players to fire even when dead
2016-07-28 08:29:46 +02:00
Leonard2
bcb18cf7d8 Added a flag to prevent the weapon from jumping to its Deselect state when the player dies 2016-07-28 08:29:46 +02:00
Christoph Oelckers
6557f3b8c8 - floatified quake and weapon code 2016-03-23 20:45:48 +01:00
Christoph Oelckers
af427b80bd - did some cleanup and consolidation on damage factor code while converting it all to floating point.
- made armor properties floating point.
2016-03-22 16:35:41 +01:00
Christoph Oelckers
51b05d331d - replaced AActor::vel and player_t::Vel with a floating point version.
- Converted P_MovePlayer and all associated variables to floating point because this wasn't working well with a mixture between float and fixed.

Like the angle commit this has just been patched up to compile, the bulk of work is yet to be done.
2016-03-20 00:54:18 +01:00
Randy Heit
55142078d8 Normalize line endings 2016-03-01 09:47:10 -06:00
Christoph Oelckers
21c55a090a - fixed: "take armor" cheat should only deplete the armor, not destroy it.
- fixed: Hexen armor cannot be depleted by the common function, it needs an override to achieve that.
2016-02-24 10:50:42 +01:00
Christoph Oelckers
3358181f18 - cleaned up the class data organization:
* moved RestrictedToPlayerClass and ForbiddenToPlayerClass arrays to AInventory.
 * moved all copy-from-parent code into DeriveData functions.
2016-02-10 00:46:51 +01:00
Christoph Oelckers
6ce0c9f78e - split up PClass::Derive and its child functions because part of them is also needed when initializing an inherited native class with the properties of its parent - but calling the base version in PClass is not possible.
- moved a few AActor properties out of the EXE so that I could easily test if it works.
2016-02-10 00:17:00 +01:00
Christoph Oelckers
b484cbf18a - fixed: It is not guaranteed that the class object that is created by FindClassTentative actually matches the real object that is required later, so it needs to be replaced wherever it could be referenced once the real object is created.
- removed some unneeded code from earlier attempts to fix the class type resolving issue.
2016-02-09 23:08:51 +01:00
Christoph Oelckers
cfcd2668cc Merge commit '772a5724313f2ad0bd6828fcc28545a9ee5e6068' into scripting
Conflicts:
	src/p_pspr.cpp
	src/thingdef/thingdef_codeptr.cpp
2016-01-17 20:00:45 +01:00
Christoph Oelckers
5207aa6cc0 Merge commit '125afcf3defb901e23bd44d32fa86681ef1748f6' into scripting
Conflicts:
	src/p_local.h
	src/p_mobj.cpp
	src/thingdef/thingdef_codeptr.cpp
	wadsrc/static/actors/shared/inventory.txt
2016-01-17 19:09:05 +01:00
Randy Heit
1d759283c0 Cleanup the zoom/reload/userX handling for A_WeaponReady
- There was lots of code duplication. Consolidated it.
- Renamed WRF_UserX to WRF_AllowUserX for consistancy.
2015-12-31 16:46:19 -06:00
MajorCooke
eed6680a67 Added support for weapon states User#.
- Added keybinds for the user state triggering.
- Added WRF_USER# flags which must be specified in order to use.
- # can be 1-4.
2015-12-31 16:46:16 -06:00
Christoph Oelckers
2d58a28cc3 - fixed: In Heretic an active Tome of Power should not freeze a teleporting player.
This was implemented by adding a new inventory flag INVENTORY.NOTELEPORTFREEZE so that the effect can both be activated for other items and deactivated for the two that currently have it.
2015-08-16 08:50:22 +02:00
Christoph Oelckers
646c135eff Merge branch 'master' into scripting
Conflicts:
	src/m_cheat.cpp
	src/p_acs.cpp
	src/thingdef/thingdef_codeptr.cpp
	src/thingdef/thingdef_properties.cpp
2015-04-28 23:04:10 +02:00
Edoardo Prezioso
b51fac344d Little TakeInventory refactoring.
Introduce AActor::TakeInventory, which unifies DoTakeInv from ACS and DoTakeInventory from Decorate, and AInventory::DepleteOrDestroy, which is extracted from the DoTakeInv core function, and use both where they're needed.
I don't know if the differences between DoTakeInv and DoTakeInventory were intentional, so I kept both behaviors.
2015-04-28 15:45:11 +02:00
Christoph Oelckers
56989d3422 Merge commit 'ec5817869592660af6837b9f4e20ed140972a2b2' into scripting
Conflicts:
	src/p_enemy.cpp
	src/p_enemy.h
	wadsrc/static/actors/constants.txt

(Scripting branch update part 1)
2015-04-28 09:34:51 +02:00
Randy Heit
fd7ed2bc25 Undo most of ZzZombo's changes
- "If it ain't broke, don't fix it."
- Some of the changes were downright wrong and some were pointless, so undo
  everything that doesn't look like an actual improvement.
2015-02-08 20:44:18 -06:00
ZzZombo
c4b742ebf0 - Part 2 of the sanity crusade. 2015-02-08 17:03:49 +08:00
Edward Richardson
de4097cc7b Added INVENTORY.TRANSFER
- INVENTORY.TRANSFER allows transferring all owned inventory to a new
owner on pickup.
2015-02-05 14:52:52 +13:00
Randy Heit
b5e4153c78 Merge branch 'master' into gonesolong
Conflicts:
	src/CMakeLists.txt
	src/b_think.cpp
	src/g_doom/a_doomweaps.cpp
	src/g_hexen/a_clericstaff.cpp
	src/g_hexen/a_fighterplayer.cpp
	src/namedef.h
	src/p_enemy.cpp
	src/p_local.h
	src/p_mobj.cpp
	src/p_teleport.cpp
	src/sc_man_tokens.h
	src/thingdef/thingdef_codeptr.cpp
	src/thingdef/thingdef_function.cpp
	src/thingdef/thingdef_parse.cpp
	wadsrc/static/actors/actor.txt
	wadsrc/static/actors/constants.txt
	wadsrc/static/actors/shared/inventory.txt

- Added register reuse to VMFunctionBuilder for FxPick's code emitter.
- Note to self: Need to reimplement IsPointerEqual and CheckClass, which
  were added to thingdef_function.cpp over the past year, as this file no
  longer exists in this branch.
2014-12-21 21:15:11 -06:00
John Palomo Jr
4496885366 Added Inventory.AlwaysRespawn flag. 2014-10-24 04:46:43 -04:00
Christoph Oelckers
f0eccb9d15 - BlueShadow's submission for keeping the max save amount of BasicArmorPickups around when picking up armor bonuses. 2014-08-11 10:08:49 +02:00
Christoph Oelckers
3e4678765b Merge branch 'master' into scripting
Conflicts:
	src/actor.h
	src/thingdef/thingdef_codeptr.cpp
2013-08-18 12:18:59 +02:00
Christoph Oelckers
aa03609b69 - added IF_TOSSED inventory flag. 2013-08-12 21:00:23 +02:00