Tomb Raider Forums  

Go Back   Tomb Raider Forums > Tomb Raider Level Editor and Modding > Tomb Raider Level Editor

Reply
 
Thread Tools
Old 07-04-20, 10:56   #11
dcw123
Member
 
dcw123's Avatar
 
Joined: Nov 2007
Posts: 7,582
Default

Amazing work.
Having all items examinable is really neat.
The advanced collision on that box was cool too.

Shame this couldn't be used on a larger scale to make more complex level geometry like AOD
dcw123 is offline   Reply With Quote
Old 07-04-20, 12:28   #12
disapearing-boy
Member
 
disapearing-boy's Avatar
 
Joined: Oct 2006
Posts: 2,372
Default

Quote:
Originally Posted by smcandrew View Post

- Create a static mesh, it can be 512x512x512, with transparent textures. The collision box needs to be altered. Add 10 to each x axis and 10 to each z axis and half the y axis to allow collision above. The reason for this collision adjustment is to stop the collision with the bridge object, which means Lara won't do the glitchy step up.
Ah, making the collision box slight larger is very clever - solves the issues I was having. I think I was using 'Lara touching the bridge object' as the condition - but it's possible that the fragmented trigger was interfering with the detection of the object. I got stumped on a very silly mistake.

This would also work similarly on a 768 units tall block.

If you could get Lara to bypass the hanging animation and go straight to climbing up then it could work for any height.
disapearing-boy is offline   Reply With Quote
Old 07-04-20, 12:46   #13
sampiza
Member
 
sampiza's Avatar
 
Joined: Sep 2015
Posts: 520
Default

Nice features, looking forward.
sampiza is offline   Reply With Quote
Old 07-04-20, 15:01   #14
LGG_PRODUCTION
Member
 
LGG_PRODUCTION's Avatar
 
Joined: Jul 2010
Posts: 858
Default

Can I also make a pushable that can be climbed this way?
LGG_PRODUCTION is offline   Reply With Quote
Old 07-04-20, 16:09   #15
Gancian
Member
 
Gancian's Avatar
 
Joined: Jul 2010
Posts: 256
Default

I don't quite understand the box setup. Why the need for both an animating AND a static? Is an animating with the collision altered not enough?
Gancian is offline   Reply With Quote
Old 07-04-20, 16:29   #16
smcandrew
Member
 
smcandrew's Avatar
 
Joined: Aug 2008
Posts: 32
Default

Quote:
Originally Posted by Gancian View Post
I don't quite understand the box setup. Why the need for both an animating AND a static? Is an animating with the collision altered not enough?
The reason why I used a static as well is that by itself the moveable item has no collision due to the type it is. Only certain animating items have collisions and I couldn't enable any collision for the "MUMMY" object that I used for the box. If the box was in the animating slot, then I wouldn't need to use a static mesh. It's just a work around to avoid that strange behaviour with fragmented triggers and the bridges.

-------------------------------------------

COMBINING ITEMS IN INVENTORY



JMN's plugin is so powerful that you can create many new ways to customise the inventory. By default in the engine, you cannot create a combo of two of the same items. It just doesn't appear when you select combine. However, I needed to find a work around as some of the below combos meant combining two / three of the same:

HERB COMBOS:
  • Mixed Herb (G + G) - made from combining two green herbs
  • Mixed Herb (G + R) - made from combining one green herb and one red herb
  • Mixed Herb (G + B) - made from combining one green herb and one blue herb
  • Mixed Herb (R + B) - made from combining one red herb and one blue herb
  • Mixed Herb (G + G + G) - made from EITHER combining three green herbs OR combining one green herb with a Mixed Herb (G + G)
  • Mixed Herb (G + G + B) - made from EITHER combining two green herbs and one blue herb, OR combining one green herb with a Mixed Herb (G + B) OR combining one blue herb with a Mixed Herb (G + G)
  • Mixed Herb (G + R + B) - made from EITHER combining one green herb, one red herb and one blue herb, OR combining one green herb with a Mixed Herb (R + B), OR combining one blue herb with a Mixed Herb (G + R) OR combining one red herb with a Mixed Herb (G + B)
GUNPOWDER COMBOS:
  • Handgun Ammo - made from 2 x Gunpowder
  • Shotgun Shells - made from 1 x Gunpowder, 1 x High Grade Gunpowder (Blue)
  • Submachine Gun Ammo - made from 2 x High Grade Gunpowder (Blue)
  • Magnum Ammo - made from 2 x High Grade Gunpowder (Yellow)

So for the "Combine Items" as we see in the images above, I used some of the "New" items as part of JMN's plugin.

I create a inventory ring specially for the combined items:
Code:
Customize= CUST_CINV_RING, CINV_RING_MISC3, 359+28 ;CREATE COMBINED ITEMS
I then add in the script what 'New' combine items should appear in this inventory ring, e.g.:
Code:
Customize=CUST_CINV_ITEM_RING, CINV_ITEM_NEW116, CINV_RING_MISC3, 5 ; Mixed Herb (G + G)
Customize=CUST_CINV_ITEM_RING, CINV_ITEM_NEW117, CINV_RING_MISC3, 6 ; Mixed Herb (G + R)
Customize=CUST_CINV_ITEM_RING, CINV_ITEM_NEW118, CINV_RING_MISC3, 7 ; Mixed Herb (G + B)
Customize=CUST_CINV_ITEM_RING, CINV_ITEM_NEW119, CINV_RING_MISC3, 8 ; Mixed Herb (R + B)
Customize=CUST_CINV_ITEM_RING, CINV_ITEM_NEW120, CINV_RING_MISC3, 9 ; Mixed Herb (G + G + G)
Customize=CUST_CINV_ITEM_RING, CINV_ITEM_NEW121, CINV_RING_MISC3, 10 ; Mixed Herb (G + G + B)
Customize=CUST_CINV_ITEM_RING, CINV_ITEM_NEW122, CINV_RING_MISC3, 11 ; Mixed Herb (G + R + B)
I give the items the names and descriptions in the script, e.g.:
Code:
Customize= CUST_CINV_ITEM, CINV_ITEM_NEW116, 359+35, 359+56
Customize= CUST_CINV_ITEM, CINV_ITEM_NEW117, 359+36, 359+57
Customize= CUST_CINV_ITEM, CINV_ITEM_NEW118, 359+37, 359+58
Customize= CUST_CINV_ITEM, CINV_ITEM_NEW119, 359+38, 359+59
Customize= CUST_CINV_ITEM, CINV_ITEM_NEW120, 359+39, 359+60
Customize= CUST_CINV_ITEM, CINV_ITEM_NEW121, 359+40, 359+61
Customize= CUST_CINV_ITEM, CINV_ITEM_NEW122, 359+41, 359+62
I customise the models in the script, using moveable slots not used anywhere else in the game since some will never actually be picked up and only shown in the inventory e.g.:
Code:
Customize= CUST_CINV_ITEM_MODEL, CINV_ITEM_NEW116, CINV_MODEL_ACTIVE, ROBOT_CLEANER, IGNORE, IGNORE, IGNORE, IGNORE, CINV_MODEL_IDLE, ROBOT_CLEANER, IGNORE, IGNORE, IGNORE, IGNORE ; g&g
Customize= CUST_CINV_ITEM_MODEL, CINV_ITEM_NEW117, CINV_MODEL_ACTIVE, ROBOT_STAR_WARS, IGNORE, IGNORE, IGNORE, IGNORE, CINV_MODEL_IDLE, ROBOT_STAR_WARS, IGNORE, IGNORE, IGNORE, IGNORE ; g&r
Customize= CUST_CINV_ITEM_MODEL, CINV_ITEM_NEW118, CINV_MODEL_ACTIVE, MECH_WARRIOR, IGNORE, IGNORE, IGNORE, IGNORE, CINV_MODEL_IDLE, MECH_WARRIOR, IGNORE, IGNORE, IGNORE, IGNORE ; g&b
Customize= CUST_CINV_ITEM_MODEL, CINV_ITEM_NEW119, CINV_MODEL_ACTIVE, MECH_WARRIOR_LARA, IGNORE, IGNORE, IGNORE, IGNORE, CINV_MODEL_IDLE, MECH_WARRIOR_LARA, IGNORE, IGNORE, IGNORE, IGNORE ; r&b
Customize= CUST_CINV_ITEM_MODEL, CINV_ITEM_NEW120, CINV_MODEL_ACTIVE, UW_PROPULSOR, IGNORE, IGNORE, IGNORE, IGNORE, CINV_MODEL_IDLE, UW_PROPULSOR, IGNORE, IGNORE, IGNORE, IGNORE ; g&g&g
Customize= CUST_CINV_ITEM_MODEL, CINV_ITEM_NEW121, CINV_MODEL_ACTIVE, UW_PROPULSOR_LARA, IGNORE, IGNORE, IGNORE, IGNORE, CINV_MODEL_IDLE, UW_PROPULSOR_LARA, IGNORE, IGNORE, IGNORE, IGNORE ; g&g&b
Customize= CUST_CINV_ITEM_MODEL, CINV_ITEM_NEW122, CINV_MODEL_ACTIVE, MINE_CART, IGNORE, IGNORE, IGNORE, IGNORE, CINV_MODEL_IDLE, MINE_CART, IGNORE, IGNORE, IGNORE, IGNORE ; g&r&b
I then create the "ACTIONS" that are required, e.g. create the new item etc and remove the relevant items:
Code:
Customize=		CUST_CINV_ITEM_ACTION, CINV_ITEM_NEW116, CINV_FACTION_CONFIRM, CINV_ACTION_CUSTOM, 359+76, IGNORE, 0, IGNORE, IGNORE, 2004
Customize=		CUST_CINV_ITEM_ACTION, CINV_ITEM_NEW117, CINV_FACTION_CONFIRM, CINV_ACTION_CUSTOM, 359+77, IGNORE, 0, IGNORE, IGNORE, 2005
Customize=		CUST_CINV_ITEM_ACTION, CINV_ITEM_NEW118, CINV_FACTION_CONFIRM, CINV_ACTION_CUSTOM, 359+78, IGNORE, 0, IGNORE, IGNORE, 2006
Customize=		CUST_CINV_ITEM_ACTION, CINV_ITEM_NEW119, CINV_FACTION_CONFIRM, CINV_ACTION_CUSTOM, 359+79, IGNORE, 0, IGNORE, IGNORE, 2007
Customize=		CUST_CINV_ITEM_ACTION, CINV_ITEM_NEW120, CINV_FACTION_CONFIRM, CINV_ACTION_CUSTOM, 359+80, IGNORE, 0, IGNORE, IGNORE, 2008
Customize=		CUST_CINV_ITEM_ACTION, CINV_ITEM_NEW121, CINV_FACTION_CONFIRM, CINV_ACTION_CUSTOM, 359+81, IGNORE, 0, IGNORE, IGNORE, 2009
Customize=		CUST_CINV_ITEM_ACTION, CINV_ITEM_NEW122, CINV_FACTION_CONFIRM, CINV_ACTION_CUSTOM, 359+82, IGNORE, 0, IGNORE, IGNORE, 2010
Then using a combination of JMN's plugin and some new flipeffects I've created (FlipEffects 805 to 807 below), the above TriggerGroups (the end numbers of each line above) then create the new item and remove which items were used to combine them:
Code:
TriggerGroup= 2004, $032000, 701, $215, $032000, 700, $1DF,  $2000, 70, $1F72  ; Mixed Herb (G + G)
TriggerGroup= 2005, $032000, 701, $115, $032000, 701, $12F,  $032000, 700, $1E0, $2000, 70, $1F72   ; Mixed Herb (G + R)
TriggerGroup= 2006, $032000, 701, $115, $032000, 701, $130,  $032000, 700, $1E1, $2000, 70, $1F72   ; Mixed Herb (G + B)  
TriggerGroup= 2007, $032000, 701, $12F, $032000, 701, $130,  $032000, 700, $1E2, $2000, 70, $1F72  ; Mixed Herb (R + B)  
TriggerGroup= 2008, $062000, 805, $0,   $032000, 700, $1E3,  $2000, 70, $1F72   ; Mixed Herb (G + G + G) 
TriggerGroup= 2009, $062000, 806, $0,   $032000, 700, $1E4,  $2000, 70, $1F72  ; Mixed Herb (G + G + B)  
TriggerGroup= 2010, $062000, 807, $0,   $032000, 700, $1E5,  $2000, 70, $1F72   ; Mixed Herb (G + R + B)
My flip effects are for creating the three items where there are many different possibilities. For example, FlipEffect 805 creates the Mixed Herb (G+G+G) - first it determines whether there is one green herb and one Mixed Herb (G+G) and removes that, otherwise it will remove three green herbs.

The code from the plugin for that flipeffect as below:
Code:
case 805:
		
//create g+g+g herb
if ((GET.pInventory->MediPackSmall > 0) && (PerformConditionTrigger("Plugin_ClassicInventory", 101, 223, 1)))
	{
	PerformFlipeffect("Plugin_ClassicInventory", 701, 21, 1);
	PerformFlipeffect("Plugin_ClassicInventory", 701, 223, 1);
	} 
else 
	{PerformFlipeffect("Plugin_ClassicInventory", 701, 21, 3);} 

	break;
The final part that I needed was the game to determine which items can be created. I also did this through the plugin and using JMN's plugin to make elements work.

Here is an excerpt to help any builders wishing to replicate this:
Code:
void CreateCombineItems(void)
{
	Get(enumGET.INVENTORY, 0, 0);

	//G&G
	if (GET.pInventory->MediPackSmall > 1)
	{PerformFlipeffect("Plugin_ClassicInventory", 702, 235, 1);} else {PerformFlipeffect("Plugin_ClassicInventory", 704, 235, 0);}

	//G&R
	if ((GET.pInventory->MediPackSmall > 0) && (GET.pInventory->PuzzleItem11 > 0))
	{PerformFlipeffect("Plugin_ClassicInventory", 702, 236, 1);} else {PerformFlipeffect("Plugin_ClassicInventory", 704, 236, 0);}

	//G&B
	if ((GET.pInventory->MediPackSmall > 0) && (GET.pInventory->PuzzleItem12 > 0))
	{PerformFlipeffect("Plugin_ClassicInventory", 702, 237, 1);} else {PerformFlipeffect("Plugin_ClassicInventory", 704, 237, 0);}

	//R&B
	if ((GET.pInventory->PuzzleItem11 > 0) && (GET.pInventory->PuzzleItem12 > 0))
	{PerformFlipeffect("Plugin_ClassicInventory", 702, 238, 1);} else {PerformFlipeffect("Plugin_ClassicInventory", 704, 238, 0);}

	//G&G&G
	if ((GET.pInventory->MediPackSmall > 0) && (PerformConditionTrigger("Plugin_ClassicInventory", 101, 223, 1)))
	{PerformFlipeffect("Plugin_ClassicInventory", 702, 239, 1);} 
	else if (GET.pInventory->MediPackSmall > 2) {PerformFlipeffect("Plugin_ClassicInventory", 702, 239, 1);} 
	else {PerformFlipeffect("Plugin_ClassicInventory", 704, 239, 0);}

	//G&G&B
	if ((GET.pInventory->MediPackSmall > 0) && (PerformConditionTrigger("Plugin_ClassicInventory", 101, 225, 1)))
	{PerformFlipeffect("Plugin_ClassicInventory", 702, 240, 1);}
	else if ((PerformConditionTrigger("Plugin_ClassicInventory", 101, 223, 1)) && (GET.pInventory->PuzzleItem12 > 0))
	{PerformFlipeffect("Plugin_ClassicInventory", 702, 240, 1);}
	else if ((GET.pInventory->MediPackSmall > 1) && (GET.pInventory->PuzzleItem12 > 0))
	{PerformFlipeffect("Plugin_ClassicInventory", 702, 240, 1);}
	else {PerformFlipeffect("Plugin_ClassicInventory", 704, 240, 0);}

	//G&R&B
	if ((GET.pInventory->MediPackSmall > 0) && (PerformConditionTrigger("Plugin_ClassicInventory", 101, 226, 1)))
	{PerformFlipeffect("Plugin_ClassicInventory", 702, 241, 1);}
	else if ((GET.pInventory->PuzzleItem11 > 0) && (PerformConditionTrigger("Plugin_ClassicInventory", 101, 225, 1)))
	{PerformFlipeffect("Plugin_ClassicInventory", 702, 241, 1);}
	else if ((GET.pInventory->PuzzleItem12 > 0) && (PerformConditionTrigger("Plugin_ClassicInventory", 101, 224, 1)))
	{PerformFlipeffect("Plugin_ClassicInventory", 702, 241, 1);}
	else if ((GET.pInventory->MediPackSmall > 0) && (GET.pInventory->PuzzleItem11 > 0) && (GET.pInventory->PuzzleItem12 > 0))
	{PerformFlipeffect("Plugin_ClassicInventory", 702, 241, 1);}	
	else {PerformFlipeffect("Plugin_ClassicInventory", 704, 241, 0);}
}
You can use these techniques and modify and tweak in your own games to create similar combo items.

If any one needs any help implementing anything similar in their own levels please let me know either here or PM me and I can help.

Last edited by smcandrew; 08-04-20 at 12:15.
smcandrew is online now   Reply With Quote
Old 08-04-20, 13:56   #17
SrDanielPonces
Member
 
SrDanielPonces's Avatar
 
Joined: Apr 2012
Posts: 10,346
Default

slay queen
SrDanielPonces is offline   Reply With Quote
Old 08-04-20, 15:11   #18
WhiteTiger
Member
 
Joined: Jun 2007
Posts: 949
Default

Impressive. Seriously!
WhiteTiger is offline   Reply With Quote
Old 09-04-20, 14:55   #19
smcandrew
Member
 
smcandrew's Avatar
 
Joined: Aug 2008
Posts: 32
Default

@SrDanielPonces:
@WhiteTiger: Thank you very much!

NEW PUZZLES:

So I've been working on trying to implement new puzzles into the engine. I started working on this style quite some time ago.



This first one was inspired by one of the puzzles in Shadow of the Tomb Raider:



The idea here is that you select which stone you want to turn by pressing up or down. You can then press left or right to rotate the stone. Once you have turned the stones to the correct positions, set a trigger, e.g. a door opening. Press Enter to exit.

This set up is completely done within the script and no plugins (other than AkyV's) were used.

The second is inspired from the Resident Evil games:



When Lara wants to unlock this journal, she needs to enter the correct combination. If she gets it incorrect after pressing ACTION, she says "No". If it's correct, the journal unlocks in the inventory (or you can have any TriggerGroup applied that you want.)

This setup was mainly done within my plugin to try and avoid have to use any pre-existing variables to control it. I've ran into a few issues such as it didn't always show the lock. So I've done a tiny workaround for now which places Lara into the same room during the puzzle and transports her back to her original spot after (I want to stop that from happening but for now was only thing I could think of.)

It's in a very basic form at the moment, and I want to create it a bit more "visually" pleasing and add sound effects to both etc.

OTHER WIP CURRENTLY WORKING ON:
  • Enemies dropping different items: So I've created a setup where when you kill the SAS, depending on certain status of the game, he drops a different pickup. This could be useful in games where, for example, you set a difficulty at the beginning. Depending on difficulty, for example, on easy, he drops 2 lots of Shotgun Shells, on Standard he drops 1x Pistol Ammo and on Hard he drops nothing. This will hopefully create more interesting gameplay.

As always, if anyone wants any help implementing new ideas into their levels, I can always try and help! Just message
smcandrew is online now   Reply With Quote
Old 09-04-20, 15:05   #20
Spyglass
Member
 
Spyglass's Avatar
 
Joined: Jan 2018
Posts: 56
Default

I'm impressed! So glad to see that the TRLE Community still inovating.
Spyglass is offline   Reply With Quote
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off



All times are GMT. The time now is 18:43.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.
Tomb Raider Forums is not owned or operated by CDE Entertainment Ltd.
Lara Croft and Tomb Raider are trademarks of CDE Entertainment Ltd.