OpenXcom Forum
OpenXcom Forks => OXCE Support => OpenXcom Extended (OXCE) => OXCE Support Y-scripts => Topic started by: SuperCaffeineDude on November 28, 2019, 06:35:29 pm
-
Is there a way to have the effects of a stat like shooting/melee temporarily boosted/negated for 1 turn by another unit? (not permanently boosted?)
Example; Officer has a radio that he uses on a rookie to tell him to remember his training
Psi-Unit uses an attack to warp an enemy's perception, that reduces their chance to hit that turn
-
Psi-amp USE attack work similar to normal weapon, and normal weapon can alter unit state (not stats!) in any way you want on hit.
AFIK piratez do this with banner that boost morale. Overall you need lean how to write small scripts that you add to ruleset to fully implement this.
btw this is in OXCE, OXC do not have any way do this.
-
Huh, the psi-amp sounds like a good tip :D
I've had a look at your [Documentation] post, it's been most of my insight lol.
Perhaps I could do something similar to your "poison bullets"
So it inflicts an increase in the desired stat (i.e. +1), then negates it entirely the next turn (i.e. -1) I'll give it a go
Question: "offset: 1" does that mean carry out effect next turn or?? :P
-
This is need for multiple mods to have defined order of execution of same script. Give some random number from 0 to 100 and it will be great :)
Using any other number would be needed if you want be run before or after another specific mod script.
-
Psi-amp USE attack work similar to normal weapon, and normal weapon can alter unit state (not stats!) in any way you want on hit.
AFIK piratez do this with banner that boost morale. Overall you need lean how to write small scripts that you add to ruleset to fully implement this.
btw this is in OXCE, OXC do not have any way do this.
So, I am trying to get this to work. Namely having a a script executed by the Psi-Amp Use Action. I tried the damageUnit and hitUnit hooks but neither seems to trigger when activating the Use action. Any ideas on how this could be accomplished?
items:
- type: STR_SKILL_AMP
size: 0.1
costSell: 194700
weight: 10
bigSprite: 33
floorSprite: 32
handSprite: 88
hitSound: 36
battleType: 9
twoHanded: false
invWidth: 1
invHeight: 3
tuUse: 1
costUse:
time: 1
accuracyUse: 100
accuracyMindControl: 100
accuracyPanic: 100
flatRate: true
psiAttackName: STR_USE_SKILL
scripts:
hitUnit:
- offset: 35
code: |
debug_log "Skill Amp Was Used!"
return;
-
1/ first, your psi amp is not hitting anything... you need to give it at last dmage type and some power
items:
- type: STR_SKILL_AMP
damageType: 1
power: 80
2/ second, the hitUnit script hook is defined on the victim's armor... not on the attacker's weapon
3/ third, local script and global script syntax is different... you tried using global syntax, which doesn't work... for local script, you don't need `offset` and `code` attributes
4/ fourth, you forgot semicolon after your debug command
5/ fifth, this script needs 3 return arguments (power, bodyPart and bodySide), you have no return parameters
armors:
- type: FLOATER_ARMOR0
scripts:
hitUnit: |
debug_log "Floater was hit!";
return 50 1 1;
-
Lol, I probably had hard day, because I miss 90% errors in code that you find Meridian :>
-
Thanks for the reply. It really helped. I added the setters myself in a fork. Learned a lot today. 8)