View Issue Details

IDProjectCategoryLast Update
0003328Valley 1Programming TodoJan 27, 2012 10:27 am
ReporterChris_McElligottPark Assigned ToChris_McElligottPark  
Status resolvedResolutionopen 
Summary0003328: Hostile Plant: Stinging Nettles
DescriptionThis is a plant that attacks the player when the player is too close, dealing small bits of damage to them. Probably best done as a TileLayerType, so that the players can't just destroy these from a distance. Perhaps this simply applies an OngoingCondition to characters that go into the nettle patches?

Later I can also do thorns, which would work like this, and even later we get into semi-sentient plants that are definitely working like traditional enemies.
TagsNo tags attached.
Internal WeightFeature Suggestion

Activities

keith.lamothe

Apr 27, 2011 10:15 am

administrator   ~0012056

Note that there's currently no support for TileLayer's actually triggering abilities (like the attack here). Can certainly be added, but care is necessary to avoid breaking mp-sync.

Chris_McElligottPark

Apr 27, 2011 10:17 am

administrator   ~0012057

Yeah, I figured you would have some thoughts on this one. It's not something I'm going to do immediately, though the art is rendered and waiting to be post-processed.

Do you think this would be better as just being regular entities? I could give them a collision box of 0,0 in size so that they don't impede movement, and then a world offset of suitable size so that they aren't placed too densely, and then just let it be attacks that they do on the player. That might be simplest all around, I suppose.

keith.lamothe

Apr 27, 2011 10:24 am

administrator   ~0012058

If you want to do it sooner than later, then GameEntity would be best.

But having it be layer-triggered is also fine if it's done right. My thought is:
- Add hardcoded field to TileLayerType: AbilityType AbilityToTriggerOnContact.
- In GameEntity.CheckForCollisions(), if colliding with a tile layer that has AbilityToTriggerOnContact != None, call TryToUseAbility with that type (or something similar; it would obey resend thresholds and suchlike).
- Add AbilityType.GetHitByThorns (or something more general)
-- Cooldown equal to how often you think this should be able to hit them.
- Set TileLayerType.StingingNettlePatch's AbilityToTriggerOnContact = GetHitByThorns.

Chris_McElligottPark

Apr 27, 2011 12:03 pm

administrator   ~0012059

Well, having TileLayerTypes able to do things like slow down players (mud) would also be nice, so maybe that would be the way to go just to prove out that sort of kind of functionality in general. Thanks for the broad design there, I'll use that. :)

keith.lamothe

Apr 27, 2011 12:09 pm

administrator   ~0012060

Yea, the slowing-down thing could be added to the above either through an ability or through something similar to GameEntity's ConditionsAppliedToMeleeTargets that the ice bats use to slow you down. That would be piggy-backed on a generic AbilityType.ApplyTileLayerContactEffect (which wouldn't be bad to use in the above design, so there's only the one ability type for all layer effects unless it really doesn't fit), just like ConditionsAppliedToMeleeTargets is piggy-backed on DefaultMonsterMeleeAttack.

Having thought it through, this really doesn't look like it take long or be very complex.

Chris_McElligottPark

Apr 27, 2011 12:13 pm

administrator   ~0012061

Yeah, now that you've done all the hard work for me, that sounds pretty straightforward. ;)

It would actually be interesting to have the stinging nettles both hurt you and slow you down, so I might just do both there.

keith.lamothe

Apr 27, 2011 12:16 pm

administrator   ~0012062

Yea, the combined hurt and slow does sound interesting. You could also have a terrain that applies a fire-damage-over-time like the fire bat's (as a matter of fact, I think you can just reuse the exact OngoingConditionType's for the fire-dot and the frost-slow from the bats, though you may want slightly different ones for different animations, etc).

Lots of interesting possibilities :)

Chris_McElligottPark

Apr 27, 2011 12:21 pm

administrator   ~0012063

Very good points! These would work well as a new kind of obstacle to be applied in the obstacle maps, too -- obstacles that are "optional but painful." So you aren't forced to go around, but if you don't then it hurts.

I already plan to have lava rivers in the lava areas which would block you completely, but having some other sort of "hot patches" that you can walk over but catch on fire with would be good.

And for the swamp (which is one of my next foci) there's interesting things that can be done, too. Lots of cool possibilities with all this!

Oh, and I could use the same ability system for altering the tilelayer itself for ones that do that -- mainly thinking here of ice that cracks when you walk over it, then turns to water when nobody is standing on it, which I plan to use in the ice age areas at some point.

keith.lamothe

Apr 27, 2011 12:26 pm

administrator   ~0012064

Yea, affecting the tile layer itself would mean writing the TileLayer itself (or identifying integers thereof, presumably tile x, tile y, layer index, and possibly TileLayerType for making-sure purposes) to the QueuedAbilityUse object that's created in CheckForCollisions. That way the Ability.Execute code can unpack that, get a reference to the layer, and do whatever it needs with that. For that matter, being able to get to the layer's TypeData that way would let you put "how much damage does this layer do" info in that TypeData rather than passing that along with the ability use, etc.

Chris_McElligottPark

Apr 27, 2011 12:30 pm

administrator   ~0012065

That makes a lot of good sense!

nalgas

Sep 20, 2011 5:44 pm

reporter   ~0013252

I find your ideas intriguing and wish to subscribe to your newsletter.

Not so much the stinging nettles in particular, but the world of possibilities that's opened up by the system that would need to be put in place to support their existence...unless that's already in place and being used for stuff. Now that I think about it, something like that might be what's used for the flame traps that killed me when I pushed that switch to unlock that door. I kind of knew something bad was going to happen when I whacked one to see what its item name was and it had "trap" in it, but I just had to see what would happen in the name of Science!/testing.

keith.lamothe

Sep 20, 2011 5:46 pm

administrator   ~0013253

Protip: when playing a game written by people who have read Boatmurdered, do not pull levers.

tigersfan

Sep 21, 2011 2:32 pm

reporter   ~0013299

I like the idea of the different plants (from basic plants that hurt when touched going up to near-sentient plants) being introduced over time. So, maybe the nettles would be in the game right from the get-go, then the thorns only start appearing in level 20 regions, and the sentient ones appearing after level 50 or something like that.

lujan22

Sep 30, 2011 7:20 pm

reporter   ~0015056

Just to throw it into the mix, if we are going to end up with sentient plants, whats to stop them being from a time after the skelebots and becoming pc's? That sounds like fun to me!

Yuugi

Oct 8, 2011 4:33 pm

reporter   ~0016257

This sounds good. But with almost everything (props, etc.) except the landscape itself being destroyable, having indestructible thorn-patches that hurt you when you pass through (and may or may not block a place you want to get to?) seems... mean.

Using fireshields for very short-term protection from some of the damage, or damaging the nettles with a flamethrower spell, or whatever, I'd love -some- way of (partially?) negating them as a player, at least in some conditions.

Though the thought of a bossfight in a pretty hazardous area is attractive on it's own. Hmm.

Issue History

Date Modified Username Field Change
Apr 27, 2011 10:09 am Chris_McElligottPark New Issue
Apr 27, 2011 10:09 am Chris_McElligottPark Status new => assigned
Apr 27, 2011 10:09 am Chris_McElligottPark Assigned To => Chris_McElligottPark
Apr 27, 2011 10:15 am keith.lamothe Note Added: 0012056
Apr 27, 2011 10:17 am Chris_McElligottPark Note Added: 0012057
Apr 27, 2011 10:24 am keith.lamothe Note Added: 0012058
Apr 27, 2011 12:03 pm Chris_McElligottPark Note Added: 0012059
Apr 27, 2011 12:09 pm keith.lamothe Note Added: 0012060
Apr 27, 2011 12:13 pm Chris_McElligottPark Note Added: 0012061
Apr 27, 2011 12:16 pm keith.lamothe Note Added: 0012062
Apr 27, 2011 12:21 pm Chris_McElligottPark Note Added: 0012063
Apr 27, 2011 12:26 pm keith.lamothe Note Added: 0012064
Apr 27, 2011 12:30 pm Chris_McElligottPark Note Added: 0012065
Sep 20, 2011 5:44 pm nalgas Note Added: 0013252
Sep 20, 2011 5:46 pm keith.lamothe Note Added: 0013253
Sep 21, 2011 2:30 pm tigersfan Internal Weight => Feature Suggestion
Sep 21, 2011 2:30 pm tigersfan Status assigned => strongly considering
Sep 21, 2011 2:32 pm tigersfan Note Added: 0013299
Sep 30, 2011 7:20 pm lujan22 Note Added: 0015056
Oct 8, 2011 4:33 pm Yuugi Note Added: 0016257
Jan 27, 2012 10:27 am tigersfan Status strongly considering => resolved