Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - memmaker

Pages: 1 ... 3 4 [5] 6 7
61
Offtopic / Re: Phoenix Point
« on: January 31, 2020, 05:05:04 pm »
It is a very cool feature. But it can also get really irritating fast:

Having lots of fog around you and getting sniped out of nowhere is pretty harsh.

Not that those units needed the mist, some variations are stealthed additionally. So you get fired upon by red radar blips merely 2 tiles away from your units which cannot return fire at all. Guess I have to learn some counters for those guys.

62
Suggestions / Re: Should the AI consider enemy range and partial cover?
« on: January 31, 2020, 04:57:25 pm »
1/ AI doesn't know how much TUs your units have and how far can they go... knowing it (without mind probe) would be cheating

3/ AI doesn't know which enemy units are panicked... how are they supposed to know? the player could have dropped a weapon or shoot around aimlessly also with non-panicked units for example.
(the player is visually informed when an enemy unit is panicking... which is a cheat btw., that's why an option exists to turn it off ... but AI units don't get such info)

1) That's a strange argument to make. The AI already cheats in order to be able to make interesting decisions. For example:

How does an alien know how good a soldier is at dodging?

Code: [Select]
float dodgeChanceDiff = target->getArmor()->getMeleeDodge(target) * target->getArmor()->getMeleeDodgeBackPenalty() * _attackAction->diff / 160.0f;

And the AI isn't able to use a mind probe, or am I missing something?

3) Hmm, I would have thought this allows for checking the status of a unit:

Code: [Select]
UnitStatus status = unit->getStatus();
if (status == STATUS_PANICKING)...

What does this check do then?

63
Offtopic / Re: Phoenix Point
« on: January 31, 2020, 10:32:24 am »
Had a look at it, but it is way too superficial.

I am more like: Why do my units suffer -10 will nearly every turn in this mission?

What to do against enemies who douse the whole map in mist, etc..

Gesendet von meinem Pixel 3 mit Tapatalk


64
Suggestions / Re: Should the AI consider enemy range and partial cover?
« on: January 31, 2020, 01:51:49 am »
I believe some more variety in AI behaviour would be great. One could add them as additional options activated by mods.

Gesendet von meinem Pixel 3 mit Tapatalk


65
Offtopic / Re: Phoenix Point
« on: January 28, 2020, 11:11:09 pm »
Just started playing the game.

imho, it can be quite overwhelming on the first try without expansive studying of online resources.

I was struggling to get to know the differences in basic game mechanics while the game ramped up mission counts like they were getting out of style. Having several different missions to choose from was both fun and stressful at the same time.

What I really like are the exploration & decision mechanics on the GeoScape. Allowing for discovery at ones own pace. The decision making via dialogue choices in the GeoScape screen struck me as nice little way to add some depth to the faction interactions and story-telling.

I am not sure about the balancing yet. I assume I'm in the midgame and not really had to re-load much. There were however some lonely missions that I found had quite a difficulty spike.

I also like the weapon proficiency system. Having four APs seems to be a good middleground between the TUs and the two AP system. Not ending the turn on firing is also a good choice, imho.

But the best feature, imo, is the manual aiming, which reduces the "Why didn't that hit???" moments to near zero for me.

66
OXCE Suggestions DONE / Re: [Documentation] Moddable Callsigns
« on: January 28, 2020, 01:33:10 am »
Sorry for that. And thanks for the feedback.

Cleaned up version is attached.

67
Enables scripts to communicate strings with integer values back to the user using the battlescape warning text feature.

Example usage, display hit information:

Code: [Select]
extended:
  scripts:
    damageUnit:
      - offset: 99
        code: |
          if gt to_health 0;
            battle_game.flashMessage "STR_DAMAGE_DEALT" to_health to_armor;
          end;
          return;

extraStrings:
  - type: en-US
    strings:
      STR_DAMAGE_DEALT: "HP: {0} / Armor: {1}"

68
I am currently thinking about a more versatile solution. I want to share my current thoughts here:

Facts:
The smallest textfield for names seems to be the one in the soldier inventory equip screen when launching a mission. It has space for 19 characters. There are some title screens which display 21 characters of a soldiers name, while most list display 20 characters.

The random names from vanilla sometimes already exceed this space. While I found that the longest name for american nationality seems to be 19 chars long other countries can easily exceed this.

I am currently thinking about some ruleset options like this:

Code: [Select]
nameInLists: "{NAME}/{STATSTRING}"
nameInTitles: "{NAME}>{CALLSIGN}"
nameInBattleScape: "{CALLSIGN}>{TAGSTRING}"
nameInBattleScapeAlternate:  "{NAME}/{STATSTRING}"

This would allow everyone to display names as they see fit. Even down to the separator character.

69
OXCE Suggestions DONE / [Documentation] Moddable Callsigns
« on: January 26, 2020, 07:55:26 pm »
Hi folks,

another recent feature that has been added to OXCE are callsigns (soldier nicknames).

They are implemented as an extension to the *.NAM files used for soldier naming.

It will now be possible to specify a list of callsigns for males and females from which the game randomly assigns to the soldiers.

An American.nam file could look like this:

Code: [Select]
lookWeights: (...)
maleFirst: (...)
femaleFirst: (...)
maleLast: (...)

maleCallsign:
  - "Odin"
  - "Papa Bear"
  - "Yeti"
  - "Moose"
  - "Kong"

femaleCallsign:
  - "Athena"
  - "Mama Bear"
  - "Goose"
  - "Peach"

Callsigns can additionally be specified by nationality, just like names.

There are however two fallback mechanisms:
  • If no female callsigns are defined, male ones are used for both genders.
  • If no callsigns are found for a given nationality, the first defined nationality is used. Depends on load order.

The fallbacks make it possible to define one set of callsigns to be used for all soldiers, regardless of gender or nationality or specify them based on these criterias.

The current implementation displays the callsign in the battlescape if they are enabled. To enable them, they just have to be defined in the *.NAM file.

You can switch between the classic name + statstring display and the callsign by right-clicking the soldier stat area in the bottom.

I have attached a small sample mod, that adds some callsigns for testing purposes.

70
OXCE Suggestions DONE / [Documentation] New Script hooks / data access
« on: January 26, 2020, 07:33:17 pm »
So, I have the honor to present some new features which have been added to OXCE ModScripts.

  • Getters for BattleUnit position - Enables scripts to check distances and allows for Area-of-Effect
  • getTurnsSinceSpotted exposed to scripts - Allows to check if enemies have spotted this unit
  • TimeUnits spent for action now exposed to scripts - Example use case: (Partially) refund TU for an action
  • New healUnit script hook - Gets executed whenever a medikit is used

Example script for BattleUnit position:
Code: [Select]
    newTurnUnit:
      - offset: 31   # for aim
        code: |
          var int is_kneeling;
          var int pos_x;
          var int pos_y;
          var int pos_z;
          var int aim;
          var int kneeling;
          if eq side 0; # xcom turns
            unit.getTag aim Tag.AIM_STATE;
            unit.isKneeled kneeling;

            if and gt aim 0 gt kneeling 0;
              unit.getPosition.getX pos_x;
              unit.getPosition.getY pos_y;
              unit.getPosition.getZ pos_z;

              unit.setTag Tag.AIM_STATE 2; # was kneeling at the beginning of the turn
             
              unit.setTag Tag.AIM_X pos_x;
              unit.setTag Tag.AIM_Y pos_y;
              unit.setTag Tag.AIM_Z pos_z;
            end;
          end;
          return;

Example Script for getTurnsSinceSpotted

Code: [Select]
    hitUnit:
      - offset: 32   # for shadowstrike
        code: |
          var int camo_state;
          var int shadowstrike_state;
          var int turns_since_spotted;
          var int temp;

          attacker.getTag camo_state Tag.PHANTOM_STATE;
          attacker.getTag shadowstrike_state Tag.SHADOWSTRIKE_STATE;
          if and gt shadowstrike_state 0 gt camo_state 0;
            attacker.getTurnsSinceSpotted turns_since_spotted;
            if or eq turns_since_spotted 255 le turns_since_spotted -1;
              # shadowstrike activate
              debug_log "Shadowstrike Crit Chance (inc.):" shadowstrike_state;
              attacker.getTag temp Tag.CRIT_CHANCE_NEXT_HIT;
              add temp shadowstrike_state;
              attacker.setTag Tag.CRIT_CHANCE_NEXT_HIT temp;
            end;
          end;
          return power part side;

Example code for Action TimeUnits

Code: [Select]
    hitUnit:
      - offset: 37   # for guardian
        code: |
          var int guardian;
          var int activation_chance;
          var int turn_side;
          var int action_time_units;
          var int current_time_units;

          set activation_chance 50;
          battle_game.getTag turn_side Tag.TURN_SIDE;

          attacker.getTag guardian Tag.GUARDIAN_STATE;

          if and gt guardian 0 eq turn_side 1; # guardian only activates on enemy turn
            battle_game.randomChance activation_chance;
            if gt activation_chance 1;
              damaging_item.getActionCost.getTimeUnits action_time_units attacker battle_action;
              attacker.getTimeUnits current_time_units;
              add current_time_units action_time_units;

              attacker.setTimeUnits current_time_units;
              debug_log "Guardian Activated! Reaction TU refunded.";
            end;
          end;
               
          return power part side;

Example code for healUnit

Code: [Select]
    healUnit:
      - offset: 24   # for savior
        code: |
          var int savior;
          var int health_to_heal;

          actor.getTag savior Tag.SAVIOR_STATE;

          if gt savior 0;
            if eq medikit_action_type 1; # heal
              debug_log "Savior activated.";
              debug_log " - Health recovered (org.):" health_recovery;
              set health_recovery savior;
              debug_log " - Health recovered (adj.):" health_recovery;
            end;
          end;

          return;

71
OXCE Wishlists / Re: memmaker's wishlist
« on: January 25, 2020, 02:56:32 pm »
Nice. Thank you, Yankes, for this overview. I will re-iterate.

Code: [Select]
# memmaker's oxce/modscript wishlist:

== concept work needed (Yankes has done some work)
# - Script Hook for missed shots? I want to know when a soldier fired but didn't hit his target.
# - A switch for the PSI_AMP to allow targeting friendly units.
# - A better way to define general use actions (preferably also more than one per item) than to use a self-targeting medikit.

== doable
# - Script Hook for movement? I want to know if a soldier has moved this turn or not.
# - Which faction's turn is it? Expose TURN_SIDE or sth. on BattleGame.
# - Allow scripts to display text messages in the battlescape
# - A submenu on soldier transformation screens? (ohartenstein23 has done some work)

== probably doable
# - Ability to count visible units from scripts (eg. BattleUnit.getVisibleUnits.getLength)
# - A reference to the current weapon being used in the accuracyMultiplierBonusStats hook
# - Enable changing armor during missions
# - Enable scripts to make aliens forget XCOM units, effectively reverting being spotted and making the concealed again.
# - getUnitById, getItemById, etc. for scripts
# - Allow specialWeapon on soldiers (currently only possible on armor)

== hard work
# - Ability to change the map from scripts
# - Ability to overlay tiles with bitmaps/animations from scripts
# - Ability to spawn units and items at will from scripts
# - Force explosions/fire/smoke from scripts

== outside of scope / not feasible / not wanted / maybe too much work
# - Force a unit to move from scripts
# - Force a unit to fire from scripts
# - Force a unit to use an item from scripts
# - A dialogue system for interaction with factions in the geoscape
# - A script hook allowing for on thy fly changing of action TU costs

72
OXCE Wishlists / Re: memmaker's wishlist
« on: January 25, 2020, 07:02:01 am »
  • Spawning units by scripts: you can spawn a unit when an action causes some form of hit animation with OXCE's spawnUnit parameter on the item's ruleset. If the item is say, a grenade or a proximity mine, then scripts can determine when it explodes and spawns the unit. This is already in use in at least one mission in 40k to add enemy reinforcements to a battle in progress.
I am not sure I get the technique you describe in the fullest. Does this offer more fine grained control than throwing a spawning grenade/having an AI throw them/placing them via MapScripts?
Quote
  • Force a unit to move: I have some WIP code that again expands on what happens when a weapon hits something that allows for some arbitrary movement of units. My plan is to have it be configurable enough to handle things as varied as grappling hooks, teleporters, jumping over fences, and knockback/recoil from weapons. It's probably not as versatile as what you'd want in a script, but the implementation is simpler.
  • Submenu for Soldier Transformations: Again I have WIP code for this, haven't had time to clean it up.
Can't wait to see your efforts come to life ;)

Quote from: Yankes
# - Script Hook for missed shots? I want to know when a soldier fired but didn't hit his target.
# - A switch for the PSI_AMP to allow targeting friendly units.
# - A better way to define general use actions (preferably also more than one per item) than to use a self-targeting medikit.

On one of my stashed branches I did some preliminary changes to allow handling actions by scripts, but I stumbled on deciding how exactly this scripts should look like and what capabilities should have (should have possibility to inform AI why he cant use weapon?)

The scripts must not be complicated to begin with. Even a "void func()" would help as long as we had more hooks to get into and especially a generic USE hook. I believe the correct stuff to go in there can only be found by experimentation and the first use cases.

Quote
# - Allow specialWeapon on soldiers (currently only possible on armor)

Doable, but what exactly you want grain doing this? Btw you can probably have different armors for each soldiers type based on same item.
Would allow for stuff like built-in items / weapons on a soldier type base. Skills/Cybernetic Enhancements/Genetic Augmentations.

Quote
# - Allow scripts to display text messages in the battlescape

How exactly? There is couple of interpretations of this and each have different difficulty level.

Again, I think a simple solution would be far better than no one. And it can always be expanded upon.
What about the red flashing messages? Could they be used as flash messages with a timer?

I will also add my latest ones here ;)

Code: [Select]
# - A script hook allowing for on thy fly changing of action TU costs
# - A dialogue system for interaction with factions in the geoscape
# - Statstrings depending on tags

73
OXCE Suggestions DONE / Re: [Suggestion]Psi camouflage
« on: January 24, 2020, 10:35:39 am »
afaik, there is fearImmune which is a counter to psiVision. Maybe that'll do?

74
OXCE Wishlists / memmaker's wishlist
« on: January 23, 2020, 10:48:15 am »
So I will drop this here in order to find out which of these features might one day become reality and which ones would get flagged as "Never ever" by our Devs. I am also interested in helping the implementation, if I am able to.

So here we go:
Code: [Select]
# memmaker's oxce/modscript wishlist:
# - Ability to change the map from scripts
# - Ability to overlay tiles with bitmaps/animations from scripts
# - Ability to count visible units from scripts (eg. BattleUnit.getVisibleUnits.getLength)
# - Script Hook for missed shots? I want to know when a soldier fired but didn't hit his target.
# - Script Hook for movement? I want to know if a soldier has moved this turn or not.
# - A reference to the current weapon being used in the accuracyMultiplierBonusStats hook
# - Which faction's turn is it? Expose TURN_SIDE or sth. on BattleGame.
# - Ability to spawn units and items at will from scripts
# - A submenu on soldier transformation screens?
# - Allow specialWeapon on soldiers (currently only possible on armor)
# - Force explosions/fire/smoke from scripts
# - Force a unit to move from scripts
# - Force a unit to fire from scripts
# - Force a unit to use an item from scripts
# - Enable changing armor during missions
# - Enable scripts to make aliens forget XCOM units, effectively reverting being spotted and making the concealed again.
# - getUnitById, getItemById, etc. for scripts
# - A switch for the PSI_AMP to allow targeting friendly units.
# - A better way to define general use actions (preferably also more than one per item) than to use a self-targeting medikit.
# - Allow scripts to display text messages in the battlescape

75
This is part of the basic proposal. I envision further features like having a ruleset setting for how the callsign is displayed. One could easily set that to sth. like middle name, prefix or separated.

Gesendet von meinem Pixel 2 mit Tapatalk


Pages: 1 ... 3 4 [5] 6 7