Skip to content

Commit

Permalink
0.4.2.1 bug fixes, one-shot weapon support added
Browse files Browse the repository at this point in the history
  • Loading branch information
Innoxia committed Nov 5, 2021
1 parent 639b0cb commit 86f5e2d
Show file tree
Hide file tree
Showing 59 changed files with 2,156 additions and 817 deletions.
Expand Up @@ -114,7 +114,7 @@
</description>
<description>
<descriptionConditional><![CDATA[
[#sex.getOngoingCharactersUsingAreas(pc, PENETRATION_FINGER, PENETRATION_PENIS).contains(meraxis)]
[#sex.getOngoingCharactersUsingAreas(pc, PENETRATION_PENIS, PENETRATION_FINGER).contains(meraxis)]
]]></descriptionConditional>
<text><![CDATA[
Realising that she's about to reach her climax, and wanting to leave a lasting impression on her, you push your [pc.cock+] out against Meraxis's [meraxis.fingers+] as you tease, [pc.speech(You like this, Meraxis?)]
Expand Down
12 changes: 6 additions & 6 deletions res/weapons/dsg/hlf_weap/pbomb.xml
Expand Up @@ -4,7 +4,12 @@
<authorTag><![CDATA["MFD by DSG Beverages GmbH" is engraved into the bottle]]></authorTag>
<value>30</value>
<melee>false</melee>
<twoHanded>true</twoHanded>
<twoHanded>false</twoHanded>

<oneShotWeapon>true</oneShotWeapon>
<oneShotWeaponChanceToRecoverAfterTurn>0</oneShotWeaponChanceToRecoverAfterTurn>
<oneShotWeaponChanceToRecoverAfterCombat>0</oneShotWeaponChanceToRecoverAfterCombat>

<determiner><![CDATA[an]]></determiner>
<name appendDamageName="true"><![CDATA[arcane firebomb]]></name>
<namePlural pluralByDefault="false"><![CDATA[arcane firebombs]]></namePlural>
Expand Down Expand Up @@ -40,11 +45,6 @@
<onHitEffect><![CDATA[
#IF (!npc2.hasStatusEffect(SE_LINGERING_FLAMES))
[##npc2.addStatusEffect(SE_LINGERING_FLAMES, 6)] The burning oil pools around [npc2.name], [style.boldFire(causing the flames to lick at [npc2.her] [npc2.feet]!)]
#ENDIF
#IF (npc.getMainWeapon(0) != null && npc.getMainWeapon(0).getWeaponType().equals(WEAPON_dsg_hlf_weap_pbomb))
[##npc.unequipMainWeaponIntoVoid(0, true)]
#ELSEIF (npc.getOffhandWeapon(0) != null && npc.getOffhandWeapon(0).getWeaponType().equals(WEAPON_dsg_hlf_weap_pbomb))
[##npc.unequipOffhandWeaponIntoVoid(0, true)]
#ENDIF
]]></onHitEffect>

Expand Down
45 changes: 42 additions & 3 deletions res/weapons/innoxia/dagger/dagger.xml
Expand Up @@ -14,6 +14,19 @@
<!-- Use "true" if this weapon is two-handed, and thus cannot be simultaneously wielded with an offhand weapon, and "false" if it's one-handed. (Without quotation marks.) -->
<twoHanded>false</twoHanded>

<!-- Use "true" if this weapon is considered to be a one-shot weapon, which is mainly used for thrown weapons, but could of course be used for any weapon type (melee or ranged) which gets used up after a single attack.
This defaults to "false" if this element is omitted.
One-shot weapons are lost after using them to attack, but if the attacker has more than one of them, then the attacker can continue to use this weapon type to attack until they have no more of them in their inventory. -->
<oneShotWeapon>false</oneShotWeapon>

<!-- If the 'oneShotWeapon' element above is set to true, then this element is used to determine the chance for this weapon to be recovered after being used at the end of each combat turn.
Values are in the range of 0->100, representing 0% to 100% chance to recover.
Default is 0 if omitted. -->
<oneShotWeaponChanceToRecoverAfterTurn>0</oneShotWeaponChanceToRecoverAfterTurn>

<!-- Exactly the same as 'oneShotWeaponChanceToRecoverAfterTurn' above, except this chance triggers once at the end of combat instead of at the end of each turn during combat. -->
<oneShotWeaponChanceToRecoverAfterCombat>0</oneShotWeaponChanceToRecoverAfterCombat>

<!-- What's appended before the weapon's name in an instance of "Innoxia was holding X Demon's Dagger", where X is the determiner. This will usually be either "a" or "an", but for other weapons may be different.
An example might be: "Innoxia was holding X scissors", where X (the determiner) would now need to be "a pair of". -->
<determiner><![CDATA[a]]></determiner>
Expand All @@ -27,9 +40,18 @@
<!-- The description/lore of this weapon. -->
<description><![CDATA[A finely crafted dagger, with a blade made out of enchanted ethereal energy. Issued to agents of the Enforcers' elite ORICL branch, this dagger is primarily intended to be a symbol of status, but is nonetheless completely functional.]]></description>

<!-- How the weapon is used. This should be a single verb, and is used as the title of attacking actions in combat. -->
<!-- How the weapon is used.
This should be a single verb, as it is used for the title of attacking actions in combat. -->
<attackDescriptor>stab</attackDescriptor>

<!-- A description of how the weapon is to be used in the sentence: "X your enemy for N damage!"
For this dagger, 'stab' fits well enough, but for example a javelin would need more than just 'throw', as otherwise you'd end up with "Throw your enemy for N damage!"
Continuing with the javelin example, you'd probably want to define this element as something like 'throw [npc.her] javelin at' to make "Throw your javelin at your enemy for N damage!"
You should use the parsing target of 'npc' for the character using this weapon, and if needed, you can also use 'npc2' for the targeted character.
If this element is omitted, then the value defined in the 'attackDescriptor' element above will be used.
This element is used to display the predicted attacks to the player in combat, and as such should be kept as brief as possible. -->
<attackDescriptionPrefix>stab</attackDescriptionPrefix>

<!-- The description that's displayed when hovering over the attack action in combat. Follow the same guidelines as equipText (a couple of entries further down this page).
As this tooltip is only ever seen from the player's perspective, you can always write in the first-person narrative. (Still use npc2 for the target, though.)-->
<attackTooltipDescription><![CDATA[Strike out with your Demon's Dagger at [npc2.name].]]></attackTooltipDescription>
Expand Down Expand Up @@ -229,7 +251,10 @@

</coreAttributes>

<!-- Descriptions that are used when hitting an enemy. One of the hitText values will be randomly selected each time the attacker hits their target. Follow the same guidelines as equipText. -->
<!-- Descriptions that are used when hitting an enemy.
One of the hitText values will be randomly selected each time the attacker hits their target.
Follow the same guidelines as equipText.
You can use 'npc' as the parsing target for the person who's attacking, and 'npc2' as the parsing target for the person being hit. -->
<hitDescriptions>
<hitText><![CDATA[
Thrusting out with [npc.her] Demon's Dagger, [npc.name] [npc.verb(manage)] to stab [npc2.name] in the chest; the ethereal arcane blade passing through [npc2.her] torso to drain [npc2.her] energy!
Expand All @@ -247,7 +272,10 @@
]]></criticalHitText>
</hitDescriptions>

<!-- Descriptions that are used when missing an enemy. One of the missText values will be randomly selected each time the attacker misses their target. Follow the same guidelines as equipText. -->
<!-- Descriptions that are used when missing an enemy.
One of the missText values will be randomly selected each time the attacker misses their target.
Follow the same guidelines as equipText.
You can use 'npc' as the parsing target for the person who's attacking, and 'npc2' as the parsing target for the person being struck at. -->
<missDescriptions>
<missText><![CDATA[
Thrusting out with [npc.her] Demon's Dagger, [npc.name] [npc.verb(attempt)] to stab [npc2.name] in the chest, but [npc.verb(end)] up missing [npc2.herHim]!
Expand All @@ -260,4 +288,15 @@
]]></missText>
</missDescriptions>

<!-- Descriptions that are used when recovering this weapon (after being used) at the end of each combat tun.
One of the 'recoveryText' elements will be randomly selected each time a weapon of this type is recovered.
Follow the same guidelines as equipText.
You can use 'npc' as the parsing target for the person who's retrieving their one-shot weapon.
Note that there is no element for end of combat turn recovery, as that simply shows a generic "One-shot weapons recovered: X, Y, Z" description at the end of combat. -->
<oneShotEndTurnRecoveryDescriptions>
<recoveryText><![CDATA[
The dagger flies back towards [npc.name], allowing [npc.herHim] to grab it and reuse it!
]]></recoveryText>
</oneShotEndTurnRecoveryDescriptions>

</weapon>
13 changes: 13 additions & 0 deletions res/weapons/innoxia/thrown/tennis_ball.svg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
110 changes: 110 additions & 0 deletions res/weapons/innoxia/thrown/tennis_ball.xml
@@ -0,0 +1,110 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<weapon>
<coreAttributes>
<value>25</value>
<melee>false</melee>
<twoHanded>false</twoHanded>

<oneShotWeapon>true</oneShotWeapon>
<oneShotWeaponChanceToRecoverAfterTurn>75</oneShotWeaponChanceToRecoverAfterTurn>
<oneShotWeaponChanceToRecoverAfterCombat>100</oneShotWeaponChanceToRecoverAfterCombat>

<determiner><![CDATA[a]]></determiner>
<name appendDamageName="false"><![CDATA[tennis ball]]></name>
<namePlural pluralByDefault="false"><![CDATA[tennis balls]]></namePlural>
<description><![CDATA[An air-filled ball made out of tough rubber that's designed for use in the sport of tennis. It's covered in a fibrous felt, and has a white band running around it in an oval, curvilinear fashion.]]></description>
<attackDescriptor>throw</attackDescriptor>
<attackDescriptionPrefix>throw tennis ball at</attackDescriptionPrefix>
<attackTooltipDescription>Throw the tennis ball at [npc2.name].</attackTooltipDescription>
<rarity>COMMON</rarity>

<equipText><![CDATA[[npc.Name] [npc.verb(take)] hold of [npc.her] tennis ball and [npc.verb(prepare)] to throw it.]]></equipText>
<unequipText><![CDATA[[npc.Name] [npc.verb(put)] [npc.her] tennis ball away.]]></unequipText>

<imageName>tennis_ball.svg</imageName>
<imageEquippedName/>

<damage>1</damage>
<arcaneCost>0</arcaneCost>

<damageVariance>LOW</damageVariance>

<availableDamageTypes>
<damageType>PHYSICAL</damageType>
</availableDamageTypes>

<spells/>

<enchantmentLimit>5</enchantmentLimit>

<effects/>
<extraEffects>
<effect><![CDATA[[style.colourExcellent(Subdues)] [style.colourTfGreater(greater)] [style.colourDog(dog-morphs)]]]></effect>
</extraEffects>

<onHitEffect><![CDATA[
#IF(npc2.getRace()==RACE_DOG_MORPH && npc2.getRaceStage()==RACE_STAGE_GREATER)
[##npc2.setHealth(0)]
<i>[npc2.Name] [npc2.verb(let)] out an excited bark and [npc2.verb(chase)] after the tennis ball. Quickly grabbing hold of it, [npc2.she] [npc2.verb(roll)] onto [npc2.her] back and [npc2.verb(start)] playing with it, leaving [npc2.herHim] completely vulnerable and [style.italicsExcellent(utterly defeated)]!</i>
#ENDIF
]]></onHitEffect>

<primaryColours>
<colour>CLOTHING_GREEN_LIME</colour>
<colour>CLOTHING_GREEN_LIME</colour>
<colour>CLOTHING_GREEN_LIME</colour>
<colour>CLOTHING_GREEN_LIME</colour>
<colour>CLOTHING_GREEN_LIME</colour>
<colour>CLOTHING_GREEN_LIME</colour>

<colour>CLOTHING_RED</colour>
<colour>CLOTHING_GREEN</colour>
<colour>CLOTHING_YELLOW</colour>
<colour>CLOTHING_BLUE</colour>
<colour>CLOTHING_PURPLE_DARK</colour>
<colour>CLOTHING_PINK_LIGHT</colour>
</primaryColours>
<primaryColoursDye values="ALL"/>
<secondaryColours>
<colour>CLOTHING_WHITE</colour>
</secondaryColours>
<secondaryColoursDye values="ALL"/>

<itemTags>
<tag>SOLD_BY_RALPH</tag>
<tag>SILLY_MODE</tag>
</itemTags>

</coreAttributes>

<hitDescriptions>
<hitText><![CDATA[
Hurling [npc.her] tennis ball at [npc2.name], [npc.name] [npc.verb(manage)] to hit [npc2.herHim] square in the chest!
]]></hitText>
<hitText><![CDATA[
Throwing [npc.her] tennis ball at [npc2.name], [npc.name] [npc.verb(manage)] to strike [npc2.herHim] on the [npc.arm(true)]!
]]></hitText>
<hitText><![CDATA[
With a quick step forwards, [npc.name] [npc.verb(launch)] [npc.her] tennis ball at [npc2.name] and [npc.verb(succeed)] in hitting [npc2.herHim]!
]]></hitText>
</hitDescriptions>

<missDescriptions>
<missText><![CDATA[
Hurling [npc.her] tennis ball at [npc2.name], [npc.name] [npc.verb(end)] up missing [npc2.herHim]!
]]></missText>
<missText><![CDATA[
Throwing [npc.her] tennis ball at [npc2.name], [npc.name] [npc.verb(let)] out a frustrated cry as [npc.she] [npc.verb(miss)] [npc.her] target!
]]></missText>
<missText><![CDATA[
With a quick step forwards, [npc.name] [npc.verb(launch)] [npc.her] tennis ball at [npc2.name], but [npc.she] [npc.verb(miss)] [npc.her] target!
]]></missText>
</missDescriptions>

<oneShotEndTurnRecoveryDescriptions>
<recoveryText><![CDATA[
The tennis ball bounces back towards [npc.name], allowing [npc.herHim] to pick it up and reuse it!
]]></recoveryText>
</oneShotEndTurnRecoveryDescriptions>

</weapon>

0 comments on commit 86f5e2d

Please sign in to comment.