Page 1 of 1

Ramming possiblities

Posted: Wed Dec 23, 2009 11:11 pm
by thunderchero
Hi code masters, :wink:

I could use some help. ruthlessferengi and mickar found a new bug while practicing for UDM tournament. (Also test same way in vanilla)

Bug seems to be in how hull strength is read after a successful ramming.

example;

ship A hull 1000 will uses ram command

ship B hull 800 ship being rammed (hailing)

ship C hull 800 (hailing)

turn 1
ship A rams ship B. ship A survives 250 hull. ship B is destroyed (this part is correct)

turn 2
ship C hull 800 rams ship A hull 250 (hailing). Both ships destroyed :?:

So problem is ship A should be destroyed and ship C should survive with 550 hull.

any ideas?

thunderchero

Posted: Thu Dec 24, 2009 4:56 am
by Mentat
Is this bug limited to the "hailing" option, or does it also appear when other orders are given to the Vessel getting rammed? Overall one of the not so encouraging bugs that have been found, since this would unbalance spacebattles quite a bit.

Posted: Thu Dec 24, 2009 8:51 am
by thunderchero
This is not limited to hail command by ship being rammed. This was done during testing to cause less damage to ships during tests before impact.

I suspect Gowron already found this bug since he edited BOP for ramming already.

In BOP any ship that is given "ram" command regaurdless of hull will be destroyed on impact. The ship being rammed may survive depending on if it has a higher hull than ship doing the ramming.

This code could be used if a better code is not found to correct problem. I also tested if battle command could be edited and it can be as well. So "Ram" could be "Sacrifice Ship-Ram".



thunderchero

Posted: Thu Dec 24, 2009 10:46 am
by Mentat
Sounds reasonable to me Thunder, since one can assume that ships are set to autodestruct, warpcore overload whatsoever.

But, e.g. you send a group of Jem Hadar attack ships on ram to destroy one Galaxy class ship. Would it mean that all of them are lost, even if some don't even hit their target? And even more specific, what happens if I set my ship on ram, and it doesn't reach its target this turn? Will it be destroyed at the end of the turn, or continue to persue the target vessel until it rams it, or other oders are designated to the ship?

edit: Just reread your post and "destroyed on impact" would likely mean, "only if it hits the target ship". If that is so, I would even embrace Gowrons solution, since its more realistic, that a ship set on ram, is also set on autodestruct and warpcore overload.

Posted: Sun Dec 27, 2009 9:44 am
by Gowron
Mentat wrote: edit: Just reread your post and "destroyed on impact" would likely mean, "only if it hits the target ship".
Yes, if a ship is set to "ram", but misses, then no ramming damage is inflicted to either ship.



This is how the ramming fix is implemented in BoP:

It's actually just two bytes which have been changed.
At position 0x12938D, change
8B5608
to
8B5010.

This is the original statement:

Code: Select all

8B5608     mov edx, [esi+0x08]
It reads the maximum hull strength of either the attacking ship or the defending ship, whichever is lower. This amount of hit points will then be inflicted as hull damage to the attacking ship.

And this is the modified statement:

Code: Select all

8B5010     mov edx, [eax+0x10]
It reads the maximum hull strength of the attacking ship. As before, this amount of hit points will then be inflicted as hull damage to the attacking ship, resulting in certain destruction.

Posted: Sun Dec 27, 2009 10:56 am
by Mentat
As I wrote before, I like that solution, but it leaves Thunder and especially me with a tricky situation for UDM and Dominion Wars. Ruthless Ferengi has pointed out this problem very well in another thread.

If we change Ramming to a suicidal run, then the so called Cardassian-"Underdogs" will suffer dearly in Spacecombat and I doubt that any form of balance can be assured. So we would have to change at least the shipstats for Cardassian vessels, which would disrupt my work on the map, and that is out of question for me atm.

So if the real issue can not be solved, I have to say, for UDM we rather stick with the buggy Ramming maneuver as it is implemented in BOTF originally. This might give the races with stronger hulls an edge, but I would rather live with that then having the Cardassians stripped from their greatest advantage in combat.

Posted: Sun Dec 27, 2009 6:30 pm
by Spocks-cuddly-tribble
Mentat wrote:So if the real issue can not be solved, I have to say, for UDM we rather stick with the buggy Ramming maneuver as it is implemented in BOTF originally. This might give the races with stronger hulls an edge...
As Gowron pointed out, in fact there is no bug - we just misinterpreted the functionality of the ram feature in BotF. Ram damage, applied to both ships, is determined by the lower nominal hull of the both ships.

And IMHO this feature makes sense, since even a major-damaged ship still holds its mass. So ramming a ship with a higher(or equal) nominal hull (i.e. mass/armour) than the own, is always a suizidal ramming regardless of higher current hull (which is not a indicator of the current mass of a ship, but just its damage status).

Posted: Sun Dec 27, 2009 9:09 pm
by Mentat
Well I am neither of the two, ....

While I greatly agree with SCTs last post, at least from a realistic viewpoint, I think the perfect solution would be, that the actual hull value is used when computing the damage on the rammed/ramming ships, not the total/nominal hullpoints as it is done now.

This means, a heavily damaged ship (as SCT has pointed out correctly) that still has more mass then the target, will lack the integrity to do the same amount of damage to another ship, even if its nominal mass would point into that direction.

Ship A(Hull 800) rams Ship B(hull 500) and destroys it, but takes heavy damage and is down to 300 Hullpoints=Shipintegrity (XP-level: green).
If Ship A(Hull 300) now decides to ram Ship C(hull 400), it would be destroyed, and Ship C(also XP-level: green) would suffer 300 damage on its hull and end up as Ship C (Hull 100). If now Ship D (Hull 150) decides to ram Ship C (Hull 100), then Ship C is destroyed while Ship D survives with 50 Hullpoints.

So much about my theory as how it should work, or in other words, how I imagined it did work in BOTF until this "bug?" was found.

Posted: Mon May 17, 2010 1:07 pm
by Turner
This is a nice implementation from Spocks-cuddly-tribble, but there still is a too low risk for the ramming ship in my opinion (if this ship has more hps). We should remember that not only metal is crashing on metal. There are also the torpedos, deuterium, plasma and last but not least the warp core itself that can explode during a ramming maneuver.

So my question is, if there is a possibility to add this feature of danger to the game. The best solution in my opinion is a random generator, which adds randomly more damagepoints to the surviving ship (perhaps enough to destroy it). But I expect this is not easily to do, so my other proposal is to add a fixed percentage of the ramming-damage to the surviving ship (maybe ~20%).