Follow-up Comment #4, patch #4671 (project freeciv):
On actions and action enablers:
You can have multiple action enablers for the same action. Action enablers are
ruleset defined. Actions aren't (yet) ruleset defined. Complex action
definitions is defining actions in the ruleset the same way you define
arbitrary disasters and roads. You could then create two actions that
establish an embassy. Not something I imagine will be done in the near
_I suppose the deeper philosophical issue is whether the entirety of
requirements to perform an action belong in the ruleset._
You are correct. I would prefer as much of the rules as reasonably possible to
be declarative. This give ruleset authors more flexibility. It also makes it
easier for software (our help system, AI-approaches that take the domain as
input, etc) to reason about them. When that is said: Complexity is absolutely
an argument able to convince me. There is a reason why I haven't suggested
adopting the Game Description Language as the new ruleset format. ;)
_I suspect that any Action could be used in an offensive way, regardless of
how peaceful it might seem._
Exactly. Some actions ranked by how much an attack they are: "Establish
Traderoute < Establish Embassy < Steal Tech < Combat Attack" This is why I
would prefer to make it ruleset defined.
On Alternative 3:
Adopt the "attack" semantic for all actions. To keep the current behavior
Caravan would get the Marines flag. Has the advantage that it can "inherit"
the existing code that supports acting from a non native tile. Supports spy
can attack from non native. Consistent for all actions.
Problem: it is currently possible to define a unit that is "marines" when it
comes to one kind of action and not "marines" when it comes to another.
(Example: A Warrior-Merchant that can establish a trade route to a coastal
city but not attack an enemy on the beach while transported as sea)
Potential solution: Hope that no such unit is in use and that if it is its
users prefers the new semantics. Would anyone object to this?
Ugly hack: Add a requirement that the unit is on a native tile to the action
enabler of the action that only should work on native terrain. Units using
this hack don't get the full benefits of the existing code to act from a non
native tile. The hack could even enable rules like "Establish Embassy" but
don't "Incite Revolt" from a non-native tile.
Reply to this item at:
Message sent via/by Gna!
Freeciv-dev mailing list