Added, Updated and Removed Mods; Updated Readme
This commit is contained in:
parent
255081e1ee
commit
5caee9fba5
|
@ -12,7 +12,6 @@ Much of the modpack is focused on Story mode, meaning Warfare mode and all other
|
|||
- Complete system overhauls, such as **Weapon Parts Overhaul**, **Western Goods**, **Stealth Overhaul**, **Anomaly Ballistics Overhaul**, **Mags Redux**, **Body Health System Realistic Overhaul** and more!
|
||||
- Expanded arsenals, featuring **Boomsticks and Sharpsticks** as the main mod introducing new weapons
|
||||
- New areas to explore, featuring **New Levels** as the mod.
|
||||
- Total GUI overhaul, featuring **Enhanced Graphical User Interface** including custom touch-ups to personalize the menus
|
||||
- Complete graphical overhaul which brings the game closer to modern standards.
|
||||
- Immersive overhauled SFX that introduces a realistic approach to the nature of the Zone.
|
||||
- Gorgeous animation overhauls that introduce a fresh and new feel to every vanilla weapon in the game.
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,28 @@
|
|||
[General]
|
||||
gameName=stalkeranomaly
|
||||
modid=0
|
||||
version=d2024.3.30.0
|
||||
newestVersion=
|
||||
category="-1,"
|
||||
nexusFileStatus=1
|
||||
installationFile=Arrival_busy_hands_bug_fix.rar
|
||||
repository=Nexus
|
||||
ignoredVersion=
|
||||
comments=
|
||||
notes=
|
||||
nexusDescription=
|
||||
url=
|
||||
hasCustomURL=false
|
||||
lastNexusQuery=
|
||||
lastNexusUpdate=
|
||||
nexusLastModified=2024-03-31T02:57:45Z
|
||||
nexusCategory=0
|
||||
converted=false
|
||||
validated=false
|
||||
color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
|
||||
tracked=0
|
||||
|
||||
[installedFiles]
|
||||
1\modid=0
|
||||
1\fileid=0
|
||||
size=1
|
|
@ -0,0 +1,243 @@
|
|||
I always disliked how BHS worked. Where medkits give temporary hp and most random items heal certain parts.
|
||||
|
||||
This mod is my attempt at making BHS fun and immersive instead of just "use a if b, use c if d".
|
||||
|
||||
The github link: <https://github.com/Mirrowel/Mirrowels-BHS-Edits>
|
||||
|
||||
Currently in active development to balance the items and the system.
|
||||
|
||||
MORE UP-TO-DATE Description on Moddb page <https://www.moddb.com/mods/stalker-anomaly/addons/bhs-realistic-overhaul>
|
||||
|
||||
**MOD IS CONSTANTLY BEING DEVELOPED SO EXPECT CHANGES TO HAPPEN FREQUENTLY.**
|
||||
|
||||
# NOW INCLUDES AN EXPERIMENTL TARKOV-LIKE HP SYSTEM. READ 0.8 CHANGELOG FOR MORE INFO
|
||||
|
||||
**An overview of the mod and plans below.**
|
||||
|
||||
# General points:
|
||||
|
||||
## The goals of the mod:
|
||||
|
||||
- Make healing limbs take considerably longer.
|
||||
- Remove temporary HP.
|
||||
- Add painkillers and painkilling properties. Think of tarkov.
|
||||
- Make medkits the main source of healing, like they should be.
|
||||
- Make the system highly configurable.
|
||||
|
||||
## **Stuff that this mod already has:**
|
||||
|
||||
- No temp hp System. Replaced by painkillers instead. Exactly the same purpose as tarkov basically. Allow you to use the destroyed limbs and remove the nasty effects.
|
||||
- To complement painkiller system weapon sway mod is integrated. Painkillers reduce weapon sway like if the limb is healed by that amount.
|
||||
- Medkits either heal all parts at once OR they heal set amount of HP, going one HP at a time for the lowest HP limb(potentially more efficient, which makes a lot of sense).
|
||||
- Broken limb system. If HP of the limb reaches 0 you need to use a surgical kit, then splint with a splint(all configurable and can turn off).
|
||||
- Reworked sleep healing to heal more logically(you heal lowest limbs first). Can disable that.
|
||||
- Health multiplier to enable more gradual healing. Limb HP by default is 11 torso, head; 5 for the rest - kinda low. - Experimental. Realistically would do nothing but increase the number of HP steps so it looks smoother but makes it hard to see real HP -- UNSUPPORTED - TOO MANY PROBLEMS
|
||||
- Weapon sway depending on arms damage and painkiller effect
|
||||
- Slower medkit usage and healing rate.
|
||||
- Campfire heal for limbs(adapting script)
|
||||
- Artefact healing for limbs(same thing)
|
||||
|
||||
## **Stuff i will add:**
|
||||
|
||||
- More effects on limb damage. Instead of instadeath increase received damage, stuff like that - need ideas
|
||||
- Heal limbs one-by-one only like in EFT(maybe)
|
||||
|
||||
All new items are sold by medics. Some new items also added to flea market and butcher's shop.
|
||||
As well as a lot of different traders that don't have medics nearby.
|
||||
|
||||
Keep in mind that in the more-or-less finished version **everything will be optional modules**. While in development i wont split it into modules so my workload is more sane.
|
||||
|
||||
Suggestions and ideas related to BHS are appreciated, as i myself am trying to figure out how to balance things out.
|
||||
|
||||
# Balancing for meds:
|
||||
|
||||
- All medkits heal twice as slow. Overall they heal exactly the same amount, just slower. New time is 66.8 seconds.
|
||||
- Survival kit modified using same logic as medkits, but with radiation and healing boosted to match heal speed of basic medkit. New time is 90 seconds.
|
||||
- Rebirth modded to last twice as long. Same idea as medkits. New time is 14 seconds.
|
||||
- Bandages apply their effect instantly instead of over time.
|
||||
|
||||
## As for limb damage:
|
||||
|
||||
Keep in mind these values: Legs and Arms have 10HP per limb. Torso and Head have 22HP per limb.
|
||||
That is double of what basic BHS has to make 1HP matter less in the system making balancing easier.
|
||||
No, boosting HP does not make limbs survive more damage. Everything is scaled.
|
||||
|
||||
---
|
||||
|
||||
- ### Heal One System(Healing one HP at a time for one limb):
|
||||
|
||||
- Basic medkit: 21 HP total over the duration. Can heal two arms/legs to full or torso/head once
|
||||
- Army and Cheese: 42 HP total over the duration. Can heal all arms/legs to full or both torso and head to full.
|
||||
- Stimpacks: Mirror what medkits heal over their duration, but faster.
|
||||
- Survival kit: 63 HP total over 90 seconds.
|
||||
- Coagulant(Vinca/Barvinok): Heals 11 HP over 438 seconds. Cant heal over your HP level. (If you are at 50% then it can only heal limbs to 50%)
|
||||
- Rebirth: 63 HP total over 17 seconds. Cant heal over your HP level. (If you are at 50% then it can only heal limbs to 50%)
|
||||
- Propital: 30 HP total over 180 seconds. Cant heal over your HP level.
|
||||
|
||||
---
|
||||
- ### Heal All System(Healing one HP at a time for all limbs) - LEGACY:
|
||||
|
||||
- Basic medkit: Head/Torso - 11 HP, Legs/Arms - 5 HP total over the duration. Can heal two arms/legs to full or torso/head once
|
||||
- Army and Cheese: Head/Torso - 16 HP, Legs/Arms - 7 HP total over the duration. Can heal all arms/legs to full or both torso and head to full.
|
||||
- Stimpacks: Mirror what medkits heal over their duration, but faster.
|
||||
- Rebirth: Head/Torso - 22 HP, Legs/Arms - 10 HP over 17 seconds. Cant heal over your HP level. (If you are at 50% then it can only heal limbs to 50%)
|
||||
|
||||
---
|
||||
- ### Surgery system and kits(In order to restore a limb to 1 HP surgical tools are required):
|
||||
|
||||
- Surgical tools: Slow use, restores one limb to be splinted in 10 seconds. One use and needs a bandage. Will cause damage on use.
|
||||
- CMS: Slow use, 5 charges. Restores one limb to be splinted in 10 seconds. Can be configured to restore a limb without a splint required. More weight-efficient
|
||||
|
||||
---
|
||||
|
||||
- ### Splints:
|
||||
|
||||
- Splint: Slow use, restores a limb to full 1HP in 10 seconds. One charge.
|
||||
- Aluminium splint: Slow use, restores a limb to full 1HP in 10 seconds. Three charges. More weight-efficient
|
||||
|
||||
---
|
||||
|
||||
- ### Painkillers(**Keep in mind that painkiller system doubles the painkiller power for torso and head because they have double the HP over legs and arms**)
|
||||
|
||||
- Morphine: 9 painkiller power for 305 seconds.
|
||||
- Rebirth: 9 painkiller power for 305 seconds.
|
||||
- Salicidic acid: 7 painkiller power for 180 seconds.
|
||||
- Fentanyl: 4 painkiller power for 202 seconds.
|
||||
- Analgetic(Diclofenac Sodium): 5 painkiller power for 305 seconds.
|
||||
- SJ6 stimulator: 7 painkiller power for 600 seconds.
|
||||
- SJ1 stimulator: 4 painkiller power for 600 seconds.
|
||||
- Analgin painkiller: 2 painkiller power for 180 seconds.
|
||||
- Ibuprofen: 4 painkiller power for 290 seconds.
|
||||
- Yadulin: 4 painkiller power for 505 seconds.
|
||||
- Adrenalin(Epinephrine): 2 painkiller power for 2184 seconds.
|
||||
- Army Medkit: 4 painkiller power for 128 seconds.
|
||||
- Cheese Medkit: 3 painkiller power for 128 seconds.
|
||||
- Stimpack: 2 painkiller power for 128 seconds.
|
||||
- Army Stimpack: 4 painkiller power for 128 seconds.
|
||||
- Sci Stimpack: 3 painkiller power for 128 seconds.
|
||||
- Cocaine: 2 painkiller power for 1644 seconds.
|
||||
- Joint: 1 painkiller power for 420 seconds.
|
||||
- Marijuana: 1 painkiller power for 652 seconds.
|
||||
- Bottled vodkas: 1 painkiller power for 300 seconds.
|
||||
- Quality vodka: 2 painkiller power for 300 seconds.
|
||||
- Zone vodka(bottle_metal): 2 painkiller power for 300 seconds.
|
||||
|
||||
---
|
||||
|
||||
**Credits:**
|
||||
|
||||
- bvcx for detailed description mod.
|
||||
- ilrathCXV for campfire and artefact healing scripts.
|
||||
- DokBrok for BHS Evolution mod that inspired this one.
|
||||
- TheParaziT - for base injector animation. Extended them to all injectors.
|
||||
- Uknown person who ported all the animations from gunslinger
|
||||
|
||||
---
|
||||
|
||||
# Latest changelog:
|
||||
|
||||
## 0.86E Update
|
||||
|
||||
- Actor damage balancer update to match gamma 0.91
|
||||
|
||||
## 0.86D Update
|
||||
|
||||
- Reduced weapon out delay for bandages(Mirror of Enhanced anims - medical)
|
||||
|
||||
## 0.86C Update
|
||||
|
||||
- Skinning without a knife out is done with a hunting knife, always. Fix for gamma tomahawk.
|
||||
|
||||
## 0.86B Update
|
||||
|
||||
- Crafting recipes added
|
||||
|
||||
## 0.86A Update
|
||||
|
||||
- Fomod made to better convey information
|
||||
|
||||
## 0.86 Update
|
||||
|
||||
- New default BHS hud - thanks to chilichocolate
|
||||
- Fix for painkiller effect not being recalculated after healing
|
||||
- Dynamic damage threshold adjustement based on damagescale(no visible effect)
|
||||
- Small fix for torso surgery display
|
||||
- Fomod installer. Yes, it has finally happened, folks.
|
||||
|
||||
## 0.85A Hotfix
|
||||
|
||||
- Fix for leftover variable (gamma users)
|
||||
|
||||
## 0.85 Hotfix
|
||||
|
||||
- Rewritten all mechanics on healing, splinting and surgery to match the quality of the latest additions.
|
||||
- Removed some hard to maintain features.
|
||||
|
||||
## 0.81B(C) Hotfix
|
||||
|
||||
- Fix for missing model crash after removing the mod(nowscript will remove akvatabs and other vanilla changed items too)
|
||||
- Fix for forgotten sounds
|
||||
|
||||
## 0.81 Hotfix
|
||||
|
||||
- Included forgotten .ppe file for latest ADB version.
|
||||
- Updated included FDDA Enhanced Animations mod
|
||||
|
||||
## 0.8 Beta:
|
||||
|
||||
### Additions and rebalancing:
|
||||
|
||||
- **New Experimental BHS mode. Tarkov-like limb system. Vanilla HP only acts as a wellness indicator and cannot be healed with medkits. Only vinca and the usual ways of resting, artefacts,etc. Enables below feature automatically.**
|
||||
- Above can be buggy when the system prevents a death, as a callback fires but is cancelled by the script. Depends on installed mods. An alternative way can be used if this proves too buggy.
|
||||
- **Combined with the above change - damage bleedthrugh from destroyed limbs to every other limb. If you take damage in the destroyed limb the damage is split between all the other limbs. Can be turned on/off**
|
||||
- Limb damage multiplier added to MCM menu.
|
||||
- Small-ish balancing changes to painkillers that are too much to list.
|
||||
- Added bone breaking sound effect and feedback to notify the player when their limb(s) reach 0 HP.
|
||||
- Update/reworked the damage system. Changes should not be noticeable unless you go into code.
|
||||
- Fall damage multiplier added to mcm. Fall damage should be goddamn scary.
|
||||
- Explosives are **VERY** scary and do damage to all limbs. You really dont want to experience it.
|
||||
- Update hit detection to more accurately tell what limb was hit.
|
||||
- Removed legacy features.
|
||||
- Grok's Actor Damage Balancer and Progressive Rad Damages compatibility patches.(Gamma requires both)
|
||||
- Non-medical enhanced animations separated into a sister mod. FDDA enhanced animations.
|
||||
|
||||
### Fixes:
|
||||
|
||||
- Fixed FDDA anims crash. Mod is fully DLTX now.
|
||||
- Fixed arm/legs minimal hp settings to correctly apply.
|
||||
- General bugfixing of everything not touched by changes, which is not much.
|
||||
|
||||
## 0.63 Beta:
|
||||
|
||||
- Dynamic item spawns,item rewards,new game loadouts DLTX item injection
|
||||
- Safe deletion utility to safely delete all new items
|
||||
- Loot injection for new items. Now they can be looted from bodies.
|
||||
|
||||
## Hotfix 0.6A:
|
||||
|
||||
- Fixed mutant harvest animation
|
||||
- Added FDDA MCM unlocker for gamma users
|
||||
|
||||
## 0.6 Beta:
|
||||
|
||||
### Additions and rebalancing:
|
||||
|
||||
- Bandages and tourniquets now work instantly instead of over time.
|
||||
- Vodka's are now painkillers of different power.
|
||||
- To be able to sprint with broken legs you now need painkiller power 3 and above. Vodkas provide up to 2.
|
||||
- Psy mechanics for SJ stims. Now they lower your max psy health but increase resistance and regeneration the lower your psy health is. (EXPERIMENTAL)
|
||||
- A lot more traders sell new items now, and old ones should be fixed, hopefully.
|
||||
- Compatibility patch for Coffee if the zone to use better anims.
|
||||
- Damage to limbs increased by 25%. Hopefully losing limbs will be more frequent.
|
||||
|
||||
### Fixes:
|
||||
|
||||
- Painkillers active time is now tracked a lot better, so level transitions wont extend their duration. Nor saving/loading will extend/decrease it. Deviation will be very small % wise.
|
||||
- Detailed description compatibility now has fixed encoding for dot symbols
|
||||
- Default detailed description script fixes(included by default, not compat)
|
||||
- Artefact healing now wont work if you dont have PBA mod installed. Meaning if you want to use it in base anomaly you need to patch it. I would do that if i had vanilla classnames and values for them - it is not hard at all.
|
||||
- General bugfixing for main script
|
||||
- DLTX bugfixing to make sure included mods are not overwritten by standalone versions of same mods.
|
||||
- Animation files bugfixing to change as little as possible compared to base FDDA + asnen's. Now should be 100% compatible as no old anims are overwritten or deleted.
|
||||
- Damage threshold lowered back to 3% like default. Now consumable items are tracked and wont deal damage to limbs
|
||||
- Renamed Enchaned UI compat to "Enhanced GUI". Got confused about names
|
|
@ -26,7 +26,7 @@ tm = 10000
|
|||
speed = 0.8
|
||||
helm = true
|
||||
|
||||
![survival_kit]
|
||||
[survival_kit]
|
||||
snd = interface\item_usage\bandage_surginst
|
||||
anm = item_ga_bandage
|
||||
cam = itemuse_anm_effects\bandage.anm
|
||||
|
|
Binary file not shown.
Binary file not shown.
BIN
mods/Body Health System Realistic Overhaul/gamedata/meshes/dynamics/weapons/wpn_eat/eft_meds/itm_car.ogf (Stored with Git LFS)
BIN
mods/Body Health System Realistic Overhaul/gamedata/meshes/dynamics/weapons/wpn_eat/eft_meds/itm_car.ogf (Stored with Git LFS)
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -3,11 +3,11 @@ function on_mcm_load()
|
|||
op = { id= "EA_settings" ,sh=true ,gr={
|
||||
{ id= "friendlyfire" ,type= "slide" ,link= "ui_options_slider_disguise" ,text= "FDDA" ,size= {512,50} ,spacing= 20 },
|
||||
{id = "enable_animations", type = "check", val = 1, def = true},
|
||||
{id = "enable_backpack_addon", type = "check", val = 1, def = false},
|
||||
{id = "enable_crouch_toggle_backpack_addon", type = "check", val = 1, def = false},
|
||||
--{id = "enable_backpack_addon", type = "check", val = 1, def = false},
|
||||
--{id = "enable_crouch_toggle_backpack_addon", type = "check", val = 1, def = false},
|
||||
{id = "mutant_loot", type = "check", val = 1, def = true},
|
||||
{id = "take_item_anim", type = "check", val = 1, def = false},
|
||||
{id = "take_dist", type = "track" , val = 2, min = 0 , max = 1.0, def = 0.12, step = 0.01},
|
||||
--{id = "take_item_anim", type = "check", val = 1, def = false},
|
||||
--{id = "take_dist", type = "track" , val = 2, min = 0 , max = 1.0, def = 0.12, step = 0.01},
|
||||
{id = "ea_debug", type = "check", val = 1, def = false},
|
||||
}
|
||||
}
|
||||
|
|
BIN
mods/Body Health System Realistic Overhaul/gamedata/textures/ui/ui_body_health_system3.dds (Stored with Git LFS)
BIN
mods/Body Health System Realistic Overhaul/gamedata/textures/ui/ui_body_health_system3.dds (Stored with Git LFS)
Binary file not shown.
|
@ -0,0 +1,25 @@
|
|||
[stalker_duty_girl]:sim_default_duty_4
|
||||
character_profile = stalker_duty_girl
|
||||
story_id = stalker_duty_girl
|
||||
immunities_sect = stalker_immunities_duty_girl
|
||||
|
||||
[stalker_immunities_duty_girl]
|
||||
burn_immunity = 0.5
|
||||
strike_immunity = 0.5
|
||||
shock_immunity = 0.5
|
||||
wound_immunity = 0.5
|
||||
radiation_immunity = 0.6
|
||||
telepatic_immunity = 0.8
|
||||
chemical_burn_immunity = 0.5
|
||||
explosion_immunity = 0.7
|
||||
fire_wound_immunity = 0.5
|
||||
|
||||
|
||||
[red_duty_outpost_trader]:sim_default_duty_3
|
||||
character_profile = red_duty_outpost_trader
|
||||
|
||||
[red_duty_outpost_medic]:sim_default_duty_3
|
||||
character_profile = red_duty_outpost_medic
|
||||
|
||||
[red_duty_outpost_guide]:sim_default_duty_3
|
||||
character_profile = red_duty_outpost_guide
|
|
@ -0,0 +1,14 @@
|
|||
|
||||
#include "duty_girl.ltx"
|
||||
|
||||
[trucks_cemetery_bandit_trader]:stalker
|
||||
$spawn = "respawn\trucks_cemetery_bandit_trader"
|
||||
character_profile = trucks_cemetery_bandit_trader
|
||||
community = stalker
|
||||
story_id = trucks_cemetery_bandit_trader
|
||||
|
||||
[trucks_cemetery_bandit_mechanic]:stalker
|
||||
$spawn = "respawn\trucks_cemetery_bandit_mechanic"
|
||||
character_profile = trucks_cemetery_bandit_mechanic
|
||||
community = stalker
|
||||
story_id = trucks_cemetery_bandit_mechanic
|
|
@ -0,0 +1,97 @@
|
|||
|
||||
<specific_character id="stalker_duty_girl" team_default="1">
|
||||
<class>stalker_duty_girl</class>
|
||||
<name>stalker_duty_girl_name</name>
|
||||
<icon>ui_npc_duty_girl</icon>
|
||||
<community>dolg</community>
|
||||
<snd_config>characters_voice\human\woman\</snd_config>
|
||||
<visual>actors\mnp_npc_remeik\duty_girl</visual>
|
||||
|
||||
<supplies>
|
||||
[spawn] \n
|
||||
wpn_groza \n
|
||||
</supplies>
|
||||
|
||||
<map_icon x="1" y="0"> </map_icon>
|
||||
<bio></bio>
|
||||
<supplies></supplies>
|
||||
<rank>10000</rank>
|
||||
<reputation>1000</reputation>
|
||||
<money min="1000000" max="1000000" infinitive="1"/>
|
||||
<start_dialog>hello_dialog</start_dialog>
|
||||
<actor_dialog>duty_girl_first_meet</actor_dialog>
|
||||
|
||||
<actor_dialog>duty_girl_hunting_chimera_init</actor_dialog>
|
||||
<actor_dialog>duty_girl_hunting_chimera_move</actor_dialog>
|
||||
<actor_dialog>duty_girl_hunting_chimera_done</actor_dialog>
|
||||
|
||||
<actor_dialog>duty_girl_monolith_elite_init</actor_dialog>
|
||||
<actor_dialog>duty_girl_monolith_elite_join</actor_dialog>
|
||||
<actor_dialog>duty_girl_monolith_elite_done</actor_dialog>
|
||||
|
||||
<actor_dialog>duty_girl_loot_stash_init</actor_dialog>
|
||||
|
||||
<actor_dialog>duty_girl_capture_the_brirge_init</actor_dialog>
|
||||
<actor_dialog>duty_girl_capture_the_brirge_join</actor_dialog>
|
||||
<actor_dialog>duty_girl_capture_the_brirge_done</actor_dialog>
|
||||
|
||||
<actor_dialog>dm_is_actor_companion_dialog</actor_dialog>
|
||||
<actor_dialog>dm_companion_patrol</actor_dialog>
|
||||
|
||||
<actor_dialog>duty_girl_companion_join_dialog</actor_dialog>
|
||||
<actor_dialog>duty_girl_companion_leave_dialog</actor_dialog>
|
||||
<actor_dialog>duty_girl_chat</actor_dialog>
|
||||
|
||||
<actor_dialog>actor_break_dialog</actor_dialog>
|
||||
</specific_character>
|
||||
|
||||
<specific_character id="red_duty_outpost_trader" team_default = "1">
|
||||
#include "gameplay\profiles\character_desc_dolg_special.xml"
|
||||
<name>GENERATE_NAME_senior_sergeant</name>
|
||||
<icon>ui_inGame2_dutygas_2</icon>
|
||||
<class>red_duty_outpost_trader</class>
|
||||
<snd_config>characters_voice\human\dolg_1\</snd_config>
|
||||
<visual>actors\stalker_dolg\stalker_dolggas2a</visual>
|
||||
|
||||
<start_dialog>hello_dialog</start_dialog>
|
||||
|
||||
<actor_dialog>dm_init_trader</actor_dialog>
|
||||
<actor_dialog>dm_broker_dialog</actor_dialog>
|
||||
<actor_dialog>dm_ordered_task_dialog</actor_dialog>
|
||||
<actor_dialog>dm_ordered_task_completed_dialog</actor_dialog>
|
||||
<actor_dialog>dm_important_documents</actor_dialog>
|
||||
<actor_dialog>buy_route</actor_dialog>
|
||||
|
||||
<actor_dialog>red_duty_outpost_trader_concern_hostile</actor_dialog>
|
||||
|
||||
<actor_dialog>actor_break_dialog</actor_dialog>
|
||||
</specific_character>
|
||||
|
||||
<specific_character id="red_duty_outpost_medic" team_default = "1">
|
||||
#include "gameplay\profiles\character_desc_dolg_special.xml"
|
||||
<name>GENERATE_NAME_senior_sergeant</name>
|
||||
<icon>ui_npc_small_dolg_2_face_2</icon>
|
||||
<class>red_duty_outpost_medic</class>
|
||||
<snd_config>characters_voice\human\dolg_1\</snd_config>
|
||||
<visual>actors\stalker_dolg\stalker_dolg_2_face_2</visual>
|
||||
|
||||
<start_dialog>hello_dialog</start_dialog>
|
||||
|
||||
<actor_dialog>dm_init_medic</actor_dialog>
|
||||
<actor_dialog>dm_medic_general</actor_dialog>
|
||||
<actor_dialog>dm_ordered_task_dialog</actor_dialog>
|
||||
<actor_dialog>dm_ordered_task_completed_dialog</actor_dialog>
|
||||
<actor_dialog>actor_break_dialog</actor_dialog>
|
||||
</specific_character>
|
||||
|
||||
<specific_character id="red_duty_outpost_guide" team_default = "1">
|
||||
#include "gameplay\profiles\character_desc_dolg_special.xml"
|
||||
<name>GENERATE_NAME_senior_sergeant</name>
|
||||
<icon>ui_inGame2_neutral_2_gp5</icon>
|
||||
<class>red_duty_outpost_guide</class>
|
||||
<snd_config>characters_voice\human\dolg_1\</snd_config>
|
||||
<visual>actors\stalker_dolg\stalker_dolg_2a_gp5</visual>
|
||||
|
||||
<start_dialog>hello_dialog</start_dialog>
|
||||
<actor_dialog>actor_break_dialog</actor_dialog>
|
||||
</specific_character>
|
|
@ -0,0 +1,84 @@
|
|||
<?xml version='1.0' encoding="windows-1251"?>
|
||||
<xml>
|
||||
|
||||
#include "gameplay\character_desc_duty_girl.xml"
|
||||
|
||||
#include "gameplay\supplies\character_items.xml"
|
||||
|
||||
<!-------------------------- Bandit trader in the Truck Cemetery ------------------------>
|
||||
<specific_character id="trucks_cemetery_bandit_trader" team_default="1">
|
||||
<name>GENERATE_NAME_bandit</name>
|
||||
<icon>ui_inGame2_bandit_4</icon>
|
||||
<map_icon x="1" y="0"></map_icon>
|
||||
<bio>No information is available.</bio>
|
||||
|
||||
<class>trucks_cemetery_bandit_trader</class>
|
||||
<community>bandit</community><terrain_sect>stalker_terrain</terrain_sect>
|
||||
<snd_config>characters_voice\human\bandit_2\</snd_config>
|
||||
|
||||
<rank>1700</rank>
|
||||
<money min="1000000" max="1000000" infinitive="1"/>
|
||||
<reputation>-500</reputation>
|
||||
|
||||
<visual>actors\mnp_npc_remeik\trader_band_klatbiche</visual>
|
||||
<supplies>
|
||||
|
||||
[spawn] \n
|
||||
wpn_beretta \n
|
||||
ammo_9x19_pbp = 5 \n
|
||||
|
||||
#include "gameplay\supplies\character_items.xml"
|
||||
#include "gameplay\supplies\character_food.xml"
|
||||
#include "gameplay\supplies\character_drugs.xml"
|
||||
</supplies>
|
||||
#include "gameplay\character_criticals.xml"
|
||||
<actor_dialog>dm_init_trader</actor_dialog>
|
||||
<actor_dialog>dm_ordered_task_dialog</actor_dialog>
|
||||
<actor_dialog>dm_ordered_task_completed_dialog</actor_dialog>
|
||||
<actor_dialog>buy_route</actor_dialog>
|
||||
<actor_dialog>dm_bribe</actor_dialog>
|
||||
<actor_dialog>actor_break_dialog</actor_dialog>
|
||||
</specific_character>
|
||||
|
||||
|
||||
<!------------------------ Bandit technician in the Truck Cemetery ---------------------->
|
||||
<specific_character id="trucks_cemetery_bandit_mechanic" team_default="1">
|
||||
<name>GENERATE_NAME_bandit</name>
|
||||
<icon>ui_inGame2_bandit_4</icon>
|
||||
<map_icon x="1" y="0"></map_icon>
|
||||
<bio>No information is available.</bio>
|
||||
|
||||
<class>trucks_cemetery_bandit_mechanic</class>
|
||||
<community>bandit</community><terrain_sect>stalker_terrain</terrain_sect>
|
||||
<snd_config>characters_voice\human\bandit_2\</snd_config>
|
||||
<!--mechanic_mode>1</mechanic_mode-->
|
||||
|
||||
<rank>1700</rank>
|
||||
<money min="1000000" max="1000000" infinitive="1"/>
|
||||
<reputation>0</reputation>
|
||||
|
||||
<visual>actors\mnp_npc_remeik\meschanic_band_klatbiche</visual>
|
||||
<supplies>
|
||||
|
||||
[spawn] \n
|
||||
wpn_spas12 \n
|
||||
ammo_12x76_zhekan = 4 \n
|
||||
|
||||
#include "gameplay\supplies\character_items.xml"
|
||||
#include "gameplay\supplies\character_food.xml"
|
||||
#include "gameplay\supplies\character_drugs.xml"
|
||||
</supplies>
|
||||
#include "gameplay\character_criticals.xml"
|
||||
<start_dialog>trucks_cemetery_bandit_mechanic_start</start_dialog>
|
||||
<actor_dialog>dm_init_trader</actor_dialog>
|
||||
<actor_dialog>dm_init_mechanic</actor_dialog>
|
||||
<actor_dialog>dm_ordered_task_dialog</actor_dialog>
|
||||
<actor_dialog>dm_ordered_task_completed_dialog</actor_dialog>
|
||||
<actor_dialog>dm_encrypted_pda</actor_dialog>
|
||||
<actor_dialog>awr_tech_dialog_drink_1</actor_dialog>
|
||||
<actor_dialog>dm_tech_repair</actor_dialog>
|
||||
<actor_dialog>actor_break_dialog</actor_dialog>
|
||||
</specific_character>
|
||||
|
||||
|
||||
</xml>
|
|
@ -0,0 +1,152 @@
|
|||
|
||||
<dialog id="duty_girl_companion_join_dialog">
|
||||
<precondition>dialogs_duty_girl.duty_girl_companion_join_dialog_con</precondition>
|
||||
<init_func>dialogs_duty_girl.duty_girl_companion_join_dialog</init_func>
|
||||
</dialog>
|
||||
|
||||
<dialog id="duty_girl_companion_leave_dialog">
|
||||
<precondition>dialogs_duty_girl.duty_girl_companion_leave_dialog_con</precondition>
|
||||
<init_func>dialogs_duty_girl.duty_girl_companion_leave_dialog</init_func>
|
||||
</dialog>
|
||||
|
||||
<dialog id="duty_girl_actor_ask_companion_dialog">
|
||||
<precondition>dialogs_duty_girl.duty_girl_actor_ask_companion_dialog_con</precondition>
|
||||
<init_func>dialogs_duty_girl.duty_girl_actor_ask_companion_dialog</init_func>
|
||||
</dialog>
|
||||
|
||||
<dialog id="duty_girl_first_meet">
|
||||
<dont_has_info>duty_girl_first_meet</dont_has_info>
|
||||
<init_func>dialogs_duty_girl.duty_girl_first_meet</init_func>
|
||||
</dialog>
|
||||
|
||||
<dialog id="duty_girl_chat">
|
||||
<has_info>duty_girl_first_meet</has_info>
|
||||
<phrase_list>
|
||||
<phrase id="0">
|
||||
<text>duty_girl_chat_0</text>
|
||||
<next>1</next>
|
||||
</phrase>
|
||||
<phrase id="1">
|
||||
<text>duty_girl_chat_1</text>
|
||||
<next>10</next>
|
||||
<next>20</next>
|
||||
<next>30</next>
|
||||
<next>40</next>
|
||||
<next>50</next>
|
||||
</phrase>
|
||||
<phrase id="10">
|
||||
<has_info>duty_girl_hunting_chimera_done</has_info>
|
||||
<text>duty_girl_chat_hunting_chimera_0</text>
|
||||
<next>11</next>
|
||||
</phrase>
|
||||
<phrase id="11">
|
||||
<text>duty_girl_chat_hunting_chimera_1</text>
|
||||
<next>50</next>
|
||||
</phrase>
|
||||
<phrase id="20">
|
||||
<has_info>duty_girl_monolith_elite_done</has_info>
|
||||
<text>duty_girl_chat_monolith_elite_0</text>
|
||||
<next>21</next>
|
||||
</phrase>
|
||||
<phrase id="21">
|
||||
<text>duty_girl_chat_monolith_elite_1</text>
|
||||
<next>50</next>
|
||||
</phrase>
|
||||
<phrase id="30">
|
||||
<has_info>duty_girl_capture_the_brirge_done</has_info>
|
||||
<text>duty_girl_chat_capture_the_brirge_0</text>
|
||||
<next>31</next>
|
||||
</phrase>
|
||||
<phrase id="31">
|
||||
<text>duty_girl_chat_capture_the_brirge_1</text>
|
||||
<next>50</next>
|
||||
</phrase>
|
||||
<phrase id="40">
|
||||
<has_info>duty_girl_capture_the_brirge_done</has_info>
|
||||
<text>duty_girl_chat_capture_the_brirge_2</text>
|
||||
<next>41</next>
|
||||
</phrase>
|
||||
<phrase id="41">
|
||||
<text>duty_girl_chat_capture_the_brirge_3</text>
|
||||
<next>50</next>
|
||||
</phrase>
|
||||
<phrase id="50">
|
||||
<text>duty_girl_chat_2</text>
|
||||
</phrase>
|
||||
</phrase_list>
|
||||
</dialog>
|
||||
|
||||
<dialog id="duty_girl_no_more_quest_suggest_companion">
|
||||
<precondition>dialogs_duty_girl.duty_girl_no_more_quest_suggest_companion_con</precondition>
|
||||
<init_func>dialogs_duty_girl.duty_girl_no_more_quest_suggest_companion</init_func>
|
||||
</dialog>
|
||||
|
||||
<!----------------------------------------------------------------------------------------------------
|
||||
Quests
|
||||
------------------------------------------------------------------------------------------------------>
|
||||
<dialog id="duty_girl_hunting_chimera_init">
|
||||
<precondition>dialogs_duty_girl.duty_girl_hunting_chimera_init_con</precondition>
|
||||
<init_func>dialogs_duty_girl.duty_girl_hunting_chimera_init</init_func>
|
||||
</dialog>
|
||||
<dialog id="duty_girl_hunting_chimera_move">
|
||||
<precondition>dialogs_duty_girl.duty_girl_hunting_chimera_move_con</precondition>
|
||||
<init_func>dialogs_duty_girl.duty_girl_hunting_chimera_move</init_func>
|
||||
</dialog>
|
||||
<dialog id="duty_girl_hunting_chimera_done">
|
||||
<precondition>dialogs_duty_girl.duty_girl_hunting_chimera_done_con</precondition>
|
||||
<init_func>dialogs_duty_girl.duty_girl_hunting_chimera_done</init_func>
|
||||
</dialog>
|
||||
|
||||
<dialog id="duty_girl_monolith_elite_init">
|
||||
<precondition>dialogs_duty_girl.duty_girl_monolith_elite_init_con</precondition>
|
||||
<init_func>dialogs_duty_girl.duty_girl_monolith_elite_init</init_func>
|
||||
</dialog>
|
||||
|
||||
<dialog id="duty_girl_monolith_elite_join">
|
||||
<precondition>dialogs_duty_girl.duty_girl_monolith_elite_join_con</precondition>
|
||||
<phrase_list>
|
||||
<phrase id="0">
|
||||
<script_text>dialogs_duty_girl.get_phrase_monolith_elite_join_0</script_text>
|
||||
<next>1</next>
|
||||
</phrase>
|
||||
<phrase id="1">
|
||||
<script_text>dialogs_duty_girl.get_phrase_monolith_elite_join_1</script_text>
|
||||
<action>dialogs_duty_girl.action_monolith_elite_join</action>
|
||||
</phrase>
|
||||
</phrase_list>
|
||||
</dialog>
|
||||
|
||||
<dialog id="duty_girl_monolith_elite_done">
|
||||
<precondition>dialogs_duty_girl.duty_girl_monolith_elite_done_con</precondition>
|
||||
<init_func>dialogs_duty_girl.duty_girl_monolith_elite_done</init_func>
|
||||
</dialog>
|
||||
|
||||
<dialog id="duty_girl_loot_stash_init">
|
||||
<precondition>dialogs_duty_girl.duty_girl_loot_stash_init_con</precondition>
|
||||
<init_func>dialogs_duty_girl.duty_girl_loot_stash_init</init_func>
|
||||
</dialog>
|
||||
|
||||
<dialog id="duty_girl_capture_the_brirge_init">
|
||||
<precondition>dialogs_duty_girl.duty_girl_capture_the_brirge_init_con</precondition>
|
||||
<init_func>dialogs_duty_girl.duty_girl_capture_the_brirge_init</init_func>
|
||||
</dialog>
|
||||
|
||||
<dialog id="duty_girl_capture_the_brirge_join">
|
||||
<precondition>dialogs_duty_girl.duty_girl_capture_the_brirge_join_con</precondition>
|
||||
<phrase_list>
|
||||
<phrase id="0">
|
||||
<script_text>dialogs_duty_girl.get_phrase_capture_the_brirge_join_0</script_text>
|
||||
<next>1</next>
|
||||
</phrase>
|
||||
<phrase id="1">
|
||||
<script_text>dialogs_duty_girl.get_phrase_capture_the_brirge_join_1</script_text>
|
||||
<action>dialogs_duty_girl.action_capture_the_brirge_join</action>
|
||||
</phrase>
|
||||
</phrase_list>
|
||||
</dialog>
|
||||
|
||||
<dialog id="duty_girl_capture_the_brirge_done">
|
||||
<precondition>dialogs_duty_girl.duty_girl_capture_the_brirge_done_con</precondition>
|
||||
<init_func>dialogs_duty_girl.duty_girl_capture_the_brirge_done</init_func>
|
||||
</dialog>
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
|
||||
<dialog id="red_duty_outpost_trader_concern_hostile">
|
||||
<init_func>dialogs_duty_girl.red_duty_outpost_trader_concern_hostile</init_func>
|
||||
</dialog>
|
||||
|
||||
<dialog id="meet_guid_duty_outpost">
|
||||
<init_func>dialogs_duty_girl.meet_guid_duty_outpost</init_func>
|
||||
</dialog>
|
||||
|
||||
<dialog id="travel_guid_duty_outpost">
|
||||
<init_func>dialogs_duty_girl.travel_guid_duty_outpost</init_func>
|
||||
</dialog>
|
||||
|
||||
<dialog id="travel_guid_duty_outpost_from_others_1000">
|
||||
<has_info>red_bridge_outpost</has_info>
|
||||
<init_func>dialogs_duty_girl.travel_guid_duty_outpost_from_others_1000</init_func>
|
||||
</dialog>
|
||||
|
||||
<dialog id="travel_guid_duty_outpost_from_others_2000">
|
||||
<has_info>red_bridge_outpost</has_info>
|
||||
<init_func>dialogs_duty_girl.travel_guid_duty_outpost_from_others_2000</init_func>
|
||||
</dialog>
|
||||
|
||||
<dialog id="travel_guid_duty_outpost_from_others_3000">
|
||||
<has_info>red_bridge_outpost</has_info>
|
||||
<init_func>dialogs_duty_girl.travel_guid_duty_outpost_from_others_3000</init_func>
|
||||
</dialog>
|
||||
|
||||
<dialog id="travel_guid_duty_outpost_from_others_4000">
|
||||
<has_info>red_bridge_outpost</has_info>
|
||||
<init_func>dialogs_duty_girl.travel_guid_duty_outpost_from_others_4000</init_func>
|
||||
</dialog>
|
||||
|
||||
<dialog id="travel_guid_duty_outpost_from_others_5000">
|
||||
<has_info>red_bridge_outpost</has_info>
|
||||
<init_func>dialogs_duty_girl.travel_guid_duty_outpost_from_others_5000</init_func>
|
||||
</dialog>
|
||||
|
||||
<dialog id="travel_guid_duty_outpost_from_others_6000">
|
||||
<has_info>red_bridge_outpost</has_info>
|
||||
<init_func>dialogs_duty_girl.travel_guid_duty_outpost_from_others_6000</init_func>
|
||||
</dialog>
|
|
@ -0,0 +1,29 @@
|
|||
<?xml version="1.0" encoding="windows-1251" ?>
|
||||
<game_dialogs>
|
||||
#include "gameplay\dialogs_duty_girl.xml"
|
||||
#include "gameplay\dialogs_duty_outpost.xml"
|
||||
|
||||
<dialog id="my_dialog">
|
||||
<phrase_list>
|
||||
<phrase id="0"> <!-- NPC -->
|
||||
<text>npc_phrase</text>
|
||||
<next>1</next>
|
||||
</phrase>
|
||||
<phrase id="1"> <!-- Actor -->
|
||||
<text>actor_phrase</text>
|
||||
<action>dialogs.break_dialog</action>
|
||||
</phrase>
|
||||
</phrase_list>
|
||||
</dialog>
|
||||
|
||||
<!-- (Bandit Mechanic) -->
|
||||
<dialog id="trucks_cemetery_bandit_mechanic_start">
|
||||
<phrase_list>
|
||||
<phrase id="0">
|
||||
<text>trucks_cemetery_bandit_mechanic_start_0</text>
|
||||
</phrase>
|
||||
</phrase_list>
|
||||
</dialog>
|
||||
|
||||
|
||||
</game_dialogs>
|
|
@ -0,0 +1,20 @@
|
|||
<character id="stalker_duty_girl">
|
||||
<class>stalker_duty_girl</class>
|
||||
<specific_character>stalker_duty_girl</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="red_duty_outpost_trader">
|
||||
<class>red_duty_outpost_trader</class>
|
||||
<specific_character>red_duty_outpost_trader</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="red_duty_outpost_medic">
|
||||
<class>red_duty_outpost_medic</class>
|
||||
<specific_character>red_duty_outpost_medic</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="red_duty_outpost_guide">
|
||||
<class>red_duty_outpost_guide</class>
|
||||
<specific_character>red_duty_outpost_guide</specific_character>
|
||||
</character>
|
||||
|
|
@ -0,0 +1,363 @@
|
|||
<?xml version='1.0' encoding="UTF-8"?>
|
||||
<xml>
|
||||
|
||||
#include "gameplay\npc_profile_duty_girl.xml"
|
||||
|
||||
<character id="mil_freedom_barman_mlr">
|
||||
<class>mil_freedom_barman_mlr</class>
|
||||
<specific_character>mil_freedom_barman_mlr</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="dasc_tech_mlr">
|
||||
<class>dasc_tech_mlr</class>
|
||||
<specific_character>dasc_tech_mlr</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="devushka">
|
||||
<class>devushka</class>
|
||||
<specific_character>devushka</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="dasc_trade_mlr">
|
||||
<class>dasc_trade_mlr</class>
|
||||
<specific_character>dasc_trade_mlr</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="bodyguard_duty_medic_bar_general">
|
||||
<class>bodyguard_duty_medic_bar_general</class>
|
||||
<specific_character>bodyguard_duty_medic_bar_general</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="ds_killer_guide_main_base">
|
||||
<class>ds_killer_guide_main_base</class>
|
||||
<specific_character>ds_killer_guide_main_base</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="zaton_killer_guide_station">
|
||||
<class>zaton_killer_guide_station</class>
|
||||
<specific_character>zaton_killer_guide_station</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="ds_killer_medic_mlr">
|
||||
<class>ds_killer_medic_mlr</class>
|
||||
<specific_character>ds_killer_medic_mlr</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="mil_freedom_medic">
|
||||
<class>mil_freedom_medic</class>
|
||||
<specific_character>mil_freedom_medic</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="zat_tech_mlr">
|
||||
<class>zat_tech_mlr</class>
|
||||
<specific_character>zat_tech_mlr</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="bar_informator_mlr">
|
||||
<class>bar_informator_mlr</class>
|
||||
<specific_character>bar_informator_mlr</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="bandit_main_base_medic_mlr">
|
||||
<class>bandit_main_base_medic_mlr</class>
|
||||
<specific_character>bandit_main_base_medic_mlr</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="agr_1_6_medic_army_mlr">
|
||||
<class>agr_1_6_medic_army_mlr</class>
|
||||
<specific_character>agr_1_6_medic_army_mlr</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="agr_1_6_barman_army_mlr">
|
||||
<class>agr_1_6_barman_army_mlr</class>
|
||||
<specific_character>agr_1_6_barman_army_mlr</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="merc_pri_a18_mech_mlr">
|
||||
<class>merc_pri_a18_mech_mlr</class>
|
||||
<specific_character>merc_pri_a18_mech_mlr</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="merc_pri_grifon_mlr">
|
||||
<class>merc_pri_grifon_mlr</class>
|
||||
<specific_character>merc_pri_grifon_mlr</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="pri_a16_mech_mlr">
|
||||
<class>pri_a16_mech_mlr</class>
|
||||
<specific_character>pri_a16_mech_mlr</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="zat_stancia_trader_merc">
|
||||
<class>zat_stancia_trader_merc</class>
|
||||
<specific_character>zat_stancia_trader_merc</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="zat_stancia_mech_merc">
|
||||
<class>zat_stancia_mech_merc</class>
|
||||
<specific_character>zat_stancia_mech_merc</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="jup_cont_trader_bandit">
|
||||
<class>jup_cont_trader_bandit</class>
|
||||
<specific_character>jup_cont_trader_bandit</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="jup_cont_mech_bandit">
|
||||
<class>jup_cont_mech_bandit</class>
|
||||
<specific_character>jup_cont_mech_bandit</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="army_south_mechan_mlr">
|
||||
<class>army_south_mechan_mlr</class>
|
||||
<specific_character>army_south_mechan_mlr</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="monolith_bridge_trader_mlr">
|
||||
<class>monolith_bridge_trader_mlr</class>
|
||||
<specific_character>monolith_bridge_trader_mlr</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="pri_special_trader_mlr">
|
||||
<class>pri_special_trader_mlr</class>
|
||||
<specific_character>pri_special_trader_mlr</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="mil_freedom_guid">
|
||||
<class>mil_freedom_guid</class>
|
||||
<specific_character>mil_freedom_guid</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="esc_3_16_military_trader">
|
||||
<class>esc_3_16_military_trader</class>
|
||||
<specific_character>esc_3_16_military_trader</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="guid_marsh_mlr">
|
||||
<class>guid_marsh_mlr</class>
|
||||
<specific_character>guid_marsh_mlr</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="guid_dv_mal_mlr">
|
||||
<class>guid_dv_mal_mlr</class>
|
||||
<specific_character>guid_dv_mal_mlr</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="guid_pri_a15_mlr">
|
||||
<class>guid_pri_a15_mlr</class>
|
||||
<specific_character>guid_pri_a15_mlr</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="trader_pri_a15_mlr">
|
||||
<class>trader_pri_a15_mlr</class>
|
||||
<specific_character>trader_pri_a15_mlr</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="guid_zan_stalker_locman">
|
||||
<class>guid_zan_stalker_locman</class>
|
||||
<specific_character>guid_zan_stalker_locman</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="guid_jup_stalker_garik">
|
||||
<class>guid_jup_stalker_garik</class>
|
||||
<specific_character>guid_jup_stalker_garik</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="guid_bar_stalker_navigator">
|
||||
<class>guid_bar_stalker_navigator</class>
|
||||
<specific_character>guid_bar_stalker_navigator</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="hunter_gar_trader">
|
||||
<class>hunter_gar_trader</class>
|
||||
<specific_character>hunter_gar_trader</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="cit_killers_merc_barman_mlr">
|
||||
<class>cit_killers_merc_barman_mlr</class>
|
||||
<specific_character>cit_killers_merc_barman_mlr</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="baraholka_trader_night">
|
||||
<class>baraholka_trader_night</class>
|
||||
<specific_character>baraholka_trader_night</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="baraholka_trader">
|
||||
<class>baraholka_trader</class>
|
||||
<specific_character>baraholka_trader</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="trucks_cemetery_bandit_trader">
|
||||
<class>trucks_cemetery_bandit_trader</class>
|
||||
<specific_character>trucks_cemetery_bandit_trader</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="trucks_cemetery_bandit_mechanic">
|
||||
<class>trucks_cemetery_bandit_mechanic</class>
|
||||
<specific_character>trucks_cemetery_bandit_mechanic</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="yan_povar_army_mlr">
|
||||
<class>yan_povar_army_mlr</class>
|
||||
<specific_character>yan_povar_army_mlr</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="mechanic_army_yan_mlr">
|
||||
<class>mechanic_army_yan_mlr</class>
|
||||
<specific_character>mechanic_army_yan_mlr</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="esc_main_base_trader_mlr">
|
||||
<class>esc_main_base_trader_mlr</class>
|
||||
<specific_character>esc_main_base_trader_mlr</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="trader_monolith_jup_depo">
|
||||
<class>trader_monolith_jup_depo</class>
|
||||
<specific_character>trader_monolith_jup_depo</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="mechanic_monolith_jup_depo">
|
||||
<class>mechanic_monolith_jup_depo</class>
|
||||
<specific_character>mechanic_monolith_jup_depo</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="trader_monolith_kbo">
|
||||
<class>trader_monolith_kbo</class>
|
||||
<specific_character>trader_monolith_kbo</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="mechanic_monolith_kbo">
|
||||
<class>mechanic_monolith_kbo</class>
|
||||
<specific_character>mechanic_monolith_kbo</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="lider_monolith_haron">
|
||||
<class>lider_monolith_haron</class>
|
||||
<specific_character>lider_monolith_haron</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="bar_dolg_medic">
|
||||
<class>bar_dolg_medic</class>
|
||||
<specific_character>bar_dolg_medic</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="agr_u_bandit_boss">
|
||||
<class>agr_u_bandit_boss</class>
|
||||
<specific_character>agr_u_bandit_boss</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="red_greh_trader">
|
||||
<class>red_greh_trader</class>
|
||||
<specific_character>red_greh_trader</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="red_greh_tech">
|
||||
<class>red_greh_tech</class>
|
||||
<specific_character>red_greh_tech</specific_character>
|
||||
</character>
|
||||
|
||||
<!-- Common -->
|
||||
|
||||
<character id="total_duty_one_h">
|
||||
<class>total_duty_one_h</class>
|
||||
<specific_character>total_duty_one_h</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="total_freeman_one_h">
|
||||
<class>total_freeman_one_h</class>
|
||||
<specific_character>total_freeman_one_h</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="total_stalker_left_one">
|
||||
<class>total_stalker_left_one</class>
|
||||
<specific_character>total_stalker_left_one</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="total_stalker_right_one">
|
||||
<class>total_stalker_right_one</class>
|
||||
<specific_character>total_stalker_right_one</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="total_group_stalkers_1">
|
||||
<class>total_group_stalkers_1</class>
|
||||
<specific_character>total_group_stalkers_1</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="total_group_stalkers_2">
|
||||
<class>total_group_stalkers_2</class>
|
||||
<specific_character>total_group_stalkers_2</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="total_group_stalkers_3">
|
||||
<class>total_group_stalkers_3</class>
|
||||
<specific_character>total_group_stalkers_3</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="total_group_stalkers_4">
|
||||
<class>total_group_stalkers_4</class>
|
||||
<specific_character>total_group_stalkers_4</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="total_group_bandits_1">
|
||||
<class>total_group_bandits_1</class>
|
||||
<specific_character>total_group_bandits_1</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="total_group_bandits_2">
|
||||
<class>total_group_bandits_2</class>
|
||||
<specific_character>total_group_bandits_2</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="total_group_bandits_3">
|
||||
<class>total_group_bandits_3</class>
|
||||
<specific_character>total_group_bandits_3</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="total_group_bandits_4">
|
||||
<class>total_group_bandits_4</class>
|
||||
<specific_character>total_group_bandits_4</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="total_stalker_one_n">
|
||||
<class>total_stalker_one_n</class>
|
||||
<specific_character>total_stalker_one_n</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="total_soldier_one_n">
|
||||
<class>total_soldier_one_n</class>
|
||||
<specific_character>total_soldier_one_n</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="total_stalker_one_with_mutant">
|
||||
<class>total_stalker_one_with_mutant</class>
|
||||
<specific_character>total_stalker_one_with_mutant</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="total_duty_one_with_zombies">
|
||||
<class>total_duty_one_with_zombies</class>
|
||||
<specific_character>total_duty_one_with_zombies</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="total_group_bandits_with_bloodsucker_1">
|
||||
<class>total_group_bandits_with_bloodsucker_1</class>
|
||||
<specific_character>total_group_bandits_with_bloodsucker_1</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="total_group_bandits_with_bloodsucker_2">
|
||||
<class>total_group_bandits_with_bloodsucker_2</class>
|
||||
<specific_character>total_group_bandits_with_bloodsucker_2</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="total_two_soldiers_with_burer_1">
|
||||
<class>total_two_soldiers_with_burer_1</class>
|
||||
<specific_character>total_two_soldiers_with_burer_1</specific_character>
|
||||
</character>
|
||||
|
||||
<character id="total_two_soldiers_with_burer_2">
|
||||
<class>total_two_soldiers_with_burer_2</class>
|
||||
<specific_character>total_two_soldiers_with_burer_2</specific_character>
|
||||
</character>
|
||||
|
||||
</xml>
|
|
@ -0,0 +1,99 @@
|
|||
|
||||
[duty_outpost_physic_object]
|
||||
GroupControlSection = spawn_group
|
||||
$spawn = "physics\destroyable_object"
|
||||
class = O_DSTR_S
|
||||
remove_time = 60
|
||||
script_binding = bind_physic_object.init
|
||||
|
||||
|
||||
[duty_outpost_box_1a]:duty_outpost_physic_object
|
||||
visual = dynamics\box\box_1a.ogf
|
||||
fixed_bones = link
|
||||
|
||||
[duty_outpost_box_1b]:duty_outpost_physic_object
|
||||
visual = dynamics\box\box_1b.ogf
|
||||
fixed_bones = link
|
||||
|
||||
[duty_outpost_box_1c]:duty_outpost_physic_object
|
||||
visual = dynamics\box\box_1c.ogf
|
||||
fixed_bones = link
|
||||
|
||||
[duty_outpost_child_bench]:duty_outpost_physic_object
|
||||
visual = dynamics\stul\child_bench.ogf
|
||||
fixed_bones = link
|
||||
|
||||
[duty_outpost_taburet_wood_01]:duty_outpost_physic_object
|
||||
visual = dynamics\stul\taburet_wood_01.ogf
|
||||
fixed_bones = link
|
||||
|
||||
[duty_outpost_konteyner_03b]:duty_outpost_physic_object
|
||||
visual = dynamics\box\konteyner_03b.ogf
|
||||
fixed_bones = link
|
||||
|
||||
[duty_outpost_sleepbag]:duty_outpost_physic_object
|
||||
visual = dynamics\equipments\mattress02.ogf
|
||||
fixed_bones = bone02_(1)
|
||||
|
||||
[duty_outpost_transiver]:duty_outpost_physic_object
|
||||
visual = dynamics\el_tehnika\transiver.ogf
|
||||
fixed_bones = link
|
||||
|
||||
[duty_outpost_rupor]:duty_outpost_physic_object
|
||||
visual = dynamics\el_tehnika\rupor.ogf
|
||||
fixed_bones = link
|
||||
custom_data = scripts\red_forest\red_bridge_outpost_rupor.ltx
|
||||
|
||||
[duty_outpost_priemnik_gorizont]:duty_outpost_physic_object
|
||||
visual = dynamics\el_tehnika\priemnik_gorizont.ogf
|
||||
fixed_bones = link
|
||||
custom_data = scripts\red_forest\red_bridge_outpost_radio.ltx
|
||||
|
||||
|
||||
[duty_outpost_light_sharnir]:duty_outpost_physic_object
|
||||
visual = dynamics\light\light_sharnir_1.ogf
|
||||
fixed_bones = link,sharnir,provod
|
||||
custom_data = scripts\red_forest\light_white_12m_glass.ltx
|
||||
|
||||
|
||||
|
||||
|
||||
[duty_outpost_med_stolik_01]:duty_outpost_physic_object
|
||||
visual = dynamics\medical_object\med_stolik_01.ogf
|
||||
fixed_bones = link,wheel_left_1,wheel_left_2,wheel_right_1,wheel_right_2
|
||||
|
||||
[duty_outpost_item_aptechka]:duty_outpost_physic_object
|
||||
visual = dynamics\equipments\medical\item_aptechka.ogf
|
||||
fixed_bones = link
|
||||
|
||||
[duty_outpost_drug_psyhodelin]:duty_outpost_physic_object
|
||||
visual = dynamics\equipments\medical\drug_psyhodelin.ogf
|
||||
fixed_bones = bone01
|
||||
|
||||
[duty_outpost_drug_stim1]:duty_outpost_physic_object
|
||||
visual = dynamics\equipments\medical\stim1.ogf
|
||||
fixed_bones = bone01
|
||||
|
||||
[duty_outpost_drug_stim2]:duty_outpost_physic_object
|
||||
visual = dynamics\equipments\medical\stim2.ogf
|
||||
fixed_bones = bone01
|
||||
|
||||
|
||||
|
||||
|
||||
[duty_outpost_toolkit_nato]:duty_outpost_physic_object
|
||||
visual = dynamics\repair\toolkit_nato.ogf
|
||||
fixed_bones = bone01
|
||||
|
||||
[duty_outpost_toolkit_p]:duty_outpost_physic_object
|
||||
visual = dynamics\repair\toolkit_p.ogf
|
||||
fixed_bones = bone01
|
||||
|
||||
[duty_outpost_toolkit_s]:duty_outpost_physic_object
|
||||
visual = dynamics\repair\toolkit_s.ogf
|
||||
fixed_bones = bone01
|
||||
|
||||
[duty_outpost_toolkit_wp]:duty_outpost_physic_object
|
||||
visual = dynamics\repair\toolkit_wp.ogf
|
||||
fixed_bones = bone01
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
[dynamic_object_configs]
|
||||
smart = red_smart_terrain_bridge
|
||||
condlist_0 = {+red_bridge_outpost} true
|
||||
|
||||
[exclusive]
|
||||
light_tower_1 = duty_outpost_light_sharnir | -114.50,3.50,-257.00 | 0,180,90 | condlist_0
|
||||
light_tower_2 = duty_outpost_light_sharnir | -114.50,7.75,-257.00 | 0,180,90 | condlist_0
|
||||
|
||||
light_tunnel_1 = duty_outpost_light_sharnir | -121.70,2.50,-229.00 | 0,0,90 | condlist_0
|
||||
light_tunnel_2 = duty_outpost_light_sharnir | -103.00,2.50,-204.62 | 0,90,90 | condlist_0
|
||||
light_tunnel_3 = duty_outpost_light_sharnir | -105.22,2.50,-186.00 | 0,0,90 | condlist_0
|
||||
|
||||
tunnel_1 = duty_outpost_child_bench | -101.50,-0.81,-200.90 | 0,90,0 | condlist_0
|
||||
tunnel_2 = duty_outpost_taburet_wood_01 | -104.30,-0.81,-183.40 | 0,0,0 | condlist_0
|
||||
tunnel_3 = duty_outpost_sleepbag | -102.90,-0.81,-182.70 | 0,-90,0 | condlist_0
|
||||
tunnel_4 = duty_outpost_sleepbag | -101.50,-0.81,-182.70 | 0,-90,0 | condlist_0
|
||||
tunnel_5 = duty_outpost_sleepbag | -100.10,-0.81,-182.70 | 0,-90,0 | condlist_0
|
||||
|
||||
medic_1 = duty_outpost_med_stolik_01 | -104.30,-0.81,-182.70 | 0,90,0 | condlist_0
|
||||
medic_2 = duty_outpost_item_aptechka | -104.50,0.16,-182.50 | 0,-90,0 | condlist_0
|
||||
medic_3 = duty_outpost_drug_psyhodelin | -104.10,0.16,-182.50 | 0,180,0 | condlist_0
|
||||
medic_4 = duty_outpost_drug_stim1 | -104.50,0.16,-182.80 | 0,0,0 | condlist_0
|
||||
medic_5 = duty_outpost_drug_stim2 | -104.30,0.16,-182.80 | 0,0,0 | condlist_0
|
||||
medic_6 = duty_outpost_drug_stim2 | -104.10,0.16,-182.80 | 0,0,0 | condlist_0
|
||||
|
||||
radio = duty_outpost_priemnik_gorizont | -101.50,-0.81,-202.30 | 0,45,0 | condlist_0
|
||||
|
||||
tower_1 = duty_outpost_box_1b | -115.20,0.47,-255.00 | 0,10,0 | condlist_0
|
||||
tower_2 = duty_outpost_box_1b | -115.20,0.71,-255.00 | 0,10,0 | condlist_0
|
||||
tower_3 = duty_outpost_box_1b | -116.50,0.47,-254.50 | 0,90,0 | condlist_0
|
||||
tower_4 = duty_outpost_box_1b | -116.50,0.71,-254.50 | 0,90,0 | condlist_0
|
||||
tower_5 = duty_outpost_box_1b | -116.50,0.95,-254.50 | 0,90,0 | condlist_0
|
||||
tower_6 = duty_outpost_box_1b | -117.50,0.47,-254.50 | 0,90,0 | condlist_0
|
||||
tower_7 = duty_outpost_box_1c | -117.50,0.71,-254.50 | 0,90,0 | condlist_0
|
||||
tower_8 = duty_outpost_box_1c | -117.50,0.95,-254.50 | 0,90,0 | condlist_0
|
||||
tower_9 = duty_outpost_transiver | -115.25,1.38,-254.50 | 0,-90,0 | condlist_0
|
||||
tower_10 = duty_outpost_rupor | -114.50,7.50,-253.63 | 0,90,0 | condlist_0
|
||||
|
||||
trader_1 = duty_outpost_toolkit_nato | -114.90,1.29,-256.25 | 0,90,0 | condlist_0
|
||||
trader_2 = duty_outpost_toolkit_nato | -114.90,1.29,-256.70 | 0,90,0 | condlist_0
|
||||
trader_3 = duty_outpost_toolkit_p | -114.90,1.02,-256.25 | 0,90,0 | condlist_0
|
||||
trader_4 = duty_outpost_toolkit_s | -114.90,1.02,-256.70 | 0,90,0 | condlist_0
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
![ignore_list]
|
||||
squad_red_duty_outpost_trader
|
||||
squad_red_duty_outpost_medic
|
||||
squad_red_duty_outpost_guide
|
||||
squad_red_duty_outpost_guard_1
|
||||
squad_red_duty_outpost_guard_2
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
|
||||
[fight]
|
||||
type = npc
|
||||
actor_stereo = false
|
||||
npc_prefix = true
|
||||
path = fight\attack\attack_
|
||||
avail_communities = bandit, csky, dolg, freedom, army, stalker, monolith, killer, army_npc, isg, renegade
|
||||
shuffle = rnd
|
||||
idle = 3,5,100
|
||||
is_combat_sound = true
|
||||
|
||||
[fight_enemy]
|
||||
type = npc
|
||||
actor_stereo = false
|
||||
npc_prefix = true
|
||||
path = fight\enemy\enemy_
|
||||
avail_communities = bandit, csky, dolg, freedom, army, stalker, monolith, killer, army_npc, isg, renegade
|
||||
shuffle = rnd
|
||||
idle = 3,5,100
|
||||
is_combat_sound = true
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
|
||||
[red_bridge_outpost_radio]
|
||||
type = 3d
|
||||
path = radio\_channel_1\track_
|
||||
shuffle = rnd
|
||||
idle = 5,15,100
|
||||
levels = l10_red_forest
|
||||
|
||||
[red_bridge_outpost_bar_dolg_speech]
|
||||
type = 3d
|
||||
path = characters_voice\scenario\bar\mega_
|
||||
shuffle = rnd
|
||||
idle = 5,15,100
|
||||
levels = l10_red_forest
|
|
@ -0,0 +1,52 @@
|
|||
[squad_duty_girl]:online_offline_group
|
||||
npc = stalker_duty_girl
|
||||
faction = dolg
|
||||
story_id = squad_duty_girl
|
||||
logic = scripts\squad_duty_girl.ltx
|
||||
|
||||
;----------------------------------------------------------------------------------------------------
|
||||
; Quests
|
||||
;----------------------------------------------------------------------------------------------------
|
||||
[squad_duty_girl_hunting_chimera]:online_offline_group
|
||||
npc = chimera_strong4
|
||||
faction = monster
|
||||
story_id = squad_duty_girl_hunting_chimera
|
||||
logic = scripts\task_duty_girl\squad_duty_girl_hunting_chimera.ltx
|
||||
|
||||
[squad_duty_girl_monolith_elite_mono]:online_offline_group
|
||||
npc_random = sim_default_monolith_4,sim_default_monolith_3
|
||||
npc_in_squad = 9
|
||||
faction = monolith
|
||||
story_id = squad_duty_girl_monolith_elite_mono
|
||||
logic = scripts\task_duty_girl\squad_duty_girl_monolith_elite.ltx
|
||||
|
||||
[squad_duty_girl_monolith_elite_duty]:online_offline_group
|
||||
npc_random = sim_default_duty_3
|
||||
npc_in_squad = 8
|
||||
faction = dolg
|
||||
story_id = squad_duty_girl_monolith_elite_duty
|
||||
logic = scripts\task_duty_girl\squad_duty_girl_monolith_elite.ltx
|
||||
|
||||
[squad_duty_girl_capture_the_brirge_mono_1]:online_offline_group
|
||||
npc_random = sim_default_monolith_4,sim_default_monolith_3,sim_default_monolith_3,sim_default_monolith_2
|
||||
npc_in_squad = 10
|
||||
faction = monolith
|
||||
story_id = squad_duty_girl_capture_the_brirge_mono_1
|
||||
logic = scripts\task_duty_girl\squad_duty_girl_capture_the_brirge.ltx
|
||||
|
||||
[squad_duty_girl_capture_the_brirge_mono_2]:squad_duty_girl_capture_the_brirge_mono_1
|
||||
story_id = squad_duty_girl_capture_the_brirge_mono_2
|
||||
|
||||
[squad_duty_girl_capture_the_brirge_duty]:online_offline_group
|
||||
npc_random = sim_default_duty_3
|
||||
npc_in_squad = 6
|
||||
faction = dolg
|
||||
story_id = squad_duty_girl_capture_the_brirge_duty
|
||||
logic = scripts\task_duty_girl\squad_duty_girl_capture_the_brirge.ltx
|
||||
|
||||
[squad_duty_girl_capture_the_brirge_lone]:online_offline_group
|
||||
npc_random = sim_default_stalker_3
|
||||
npc_in_squad = 3
|
||||
faction = stalker
|
||||
story_id = squad_duty_girl_capture_the_brirge_lone
|
||||
logic = scripts\task_duty_girl\squad_duty_girl_capture_the_brirge.ltx
|
|
@ -0,0 +1,57 @@
|
|||
|
||||
[squad_red_duty_outpost_trader]:online_offline_group
|
||||
npc = red_duty_outpost_trader
|
||||
faction = dolg
|
||||
story_id = squad_red_duty_outpost_trader
|
||||
logic = scripts\red_forest\squad_red_duty_outpost.ltx
|
||||
|
||||
[squad_red_duty_outpost_medic]:online_offline_group
|
||||
npc = red_duty_outpost_medic
|
||||
faction = dolg
|
||||
story_id = squad_red_duty_outpost_medic
|
||||
logic = scripts\red_forest\squad_red_duty_outpost.ltx
|
||||
|
||||
[squad_red_duty_outpost_guide]:online_offline_group
|
||||
npc = red_duty_outpost_guide
|
||||
faction = dolg
|
||||
story_id = squad_red_duty_outpost_guide
|
||||
logic = scripts\red_forest\squad_red_duty_outpost.ltx
|
||||
|
||||
|
||||
[squad_red_duty_outpost_guard_1]:online_offline_group
|
||||
npc_random = sim_default_duty_4,sim_default_duty_3,sim_default_duty_3,sim_default_duty_2,sim_default_duty_2,sim_default_duty_1,sim_default_duty_1
|
||||
npc_in_squad = 7
|
||||
faction = dolg
|
||||
story_id = squad_red_duty_outpost_guard_1
|
||||
target_smart = red_smart_terrain_bridge
|
||||
|
||||
[squad_red_duty_outpost_guard_2]:squad_red_duty_outpost_guard_1
|
||||
story_id = squad_red_duty_outpost_guard_2
|
||||
|
||||
[squad_red_duty_outpost_visitor_1]:online_offline_group
|
||||
npc_random = sim_default_stalker_4,sim_default_stalker_3,sim_default_stalker_2,sim_default_stalker_1
|
||||
npc_in_squad = 3
|
||||
faction = stalker
|
||||
story_id = squad_red_duty_outpost_visitor_1
|
||||
target_smart = red_smart_terrain_bridge
|
||||
|
||||
[squad_red_duty_outpost_visitor_2]:online_offline_group
|
||||
npc_random = sim_default_stalker_4,sim_default_stalker_3,sim_default_stalker_2,sim_default_stalker_1
|
||||
npc_in_squad = 3
|
||||
faction = stalker
|
||||
story_id = squad_red_duty_outpost_visitor_2
|
||||
target_smart = red_smart_terrain_bridge
|
||||
|
||||
[squad_red_duty_outpost_visitor_3]:online_offline_group
|
||||
npc_random = sim_default_duty_4,sim_default_duty_3,sim_default_duty_2,sim_default_duty_1
|
||||
npc_in_squad = 3
|
||||
faction = dolg
|
||||
story_id = squad_red_duty_outpost_visitor_3
|
||||
target_smart = red_smart_terrain_bridge
|
||||
|
||||
[squad_red_duty_outpost_visitor_4]:online_offline_group
|
||||
npc_random = sim_default_csky_4,sim_default_csky_3,sim_default_csky_2,sim_default_csky_1
|
||||
npc_in_squad = 3
|
||||
faction = csky
|
||||
story_id = squad_red_duty_outpost_visitor_4
|
||||
target_smart = red_smart_terrain_bridge
|
|
@ -0,0 +1,67 @@
|
|||
|
||||
[squad_lure_prey_controller_1]:online_offline_group
|
||||
npc = m_controller_normal
|
||||
faction = monster
|
||||
story_id = squad_lure_prey_controller_1
|
||||
logic = scripts\misc_encounter\squad_lure_prey.ltx
|
||||
|
||||
[squad_lure_prey_controller_2]:online_offline_group
|
||||
npc = m_controller_normal
|
||||
faction = monster
|
||||
story_id = squad_lure_prey_controller_2
|
||||
logic = scripts\misc_encounter\squad_lure_prey.ltx
|
||||
|
||||
[squad_lure_prey_phantom]:online_offline_group
|
||||
npc = sim_default_stalker_2
|
||||
faction = stalker
|
||||
story_id = squad_lure_prey_phantom
|
||||
logic = scripts\misc_encounter\squad_lure_prey.ltx
|
||||
|
||||
[squad_bloodsucker_val_1]:online_offline_group
|
||||
npc = bloodsucker_weak,bloodsucker_weak,bloodsucker_weak,bloodsucker_weak,bloodsucker_normal,bloodsucker_normal
|
||||
faction = monster
|
||||
story_id = squad_bloodsucker_val_1
|
||||
logic = scripts\misc_encounter\squad_bloodsucker_val.ltx
|
||||
on_death = %=script(gameplay_misc_encounter:bloodsucker_val_dead)%
|
||||
|
||||
[squad_bloodsucker_val_2]:online_offline_group
|
||||
npc = bloodsucker_weak,bloodsucker_weak,bloodsucker_weak,bloodsucker_normal,bloodsucker_normal,bloodsucker_normal
|
||||
faction = monster
|
||||
story_id = squad_bloodsucker_val_2
|
||||
logic = scripts\misc_encounter\squad_bloodsucker_val.ltx
|
||||
on_death = %=script(gameplay_misc_encounter:bloodsucker_val_dead)%
|
||||
|
||||
[squad_bloodsucker_val_3]:online_offline_group
|
||||
npc = bloodsucker_normal,bloodsucker_normal,bloodsucker_normal,bloodsucker_strong,bloodsucker_strong,bloodsucker_strong
|
||||
faction = monster
|
||||
story_id = squad_bloodsucker_val_3
|
||||
logic = scripts\misc_encounter\squad_bloodsucker_val.ltx
|
||||
on_death = %=script(gameplay_misc_encounter:bloodsucker_val_dead)%
|
||||
|
||||
[squad_sleeping_bloodsucker_jup_1]:online_offline_group
|
||||
npc_random = bloodsucker_weak,bloodsucker_weak,bloodsucker_weak,bloodsucker_normal,bloodsucker_normal,bloodsucker_normal
|
||||
npc_in_squad = 6
|
||||
faction = monster
|
||||
story_id = squad_sleeping_bloodsucker_jup_1
|
||||
logic = scripts\misc_encounter\squad_sleeping_snork.ltx
|
||||
|
||||
[squad_sleeping_bloodsucker_jup_2]:online_offline_group
|
||||
npc_random = bloodsucker_normal,bloodsucker_normal,bloodsucker_normal,bloodsucker_strong,bloodsucker_strong,bloodsucker_strong
|
||||
npc_in_squad = 6
|
||||
faction = monster
|
||||
story_id = squad_sleeping_bloodsucker_jup_2
|
||||
logic = scripts\misc_encounter\squad_sleeping_snork.ltx
|
||||
|
||||
[squad_sleeping_bloodsucker_jup_3]:online_offline_group
|
||||
npc_random = bloodsucker_normal,bloodsucker_normal,bloodsucker_normal,bloodsucker_strong,bloodsucker_strong,bloodsucker_strong
|
||||
npc_in_squad = 6
|
||||
faction = monster
|
||||
story_id = squad_sleeping_bloodsucker_jup_3
|
||||
logic = scripts\misc_encounter\squad_sleeping_snork.ltx
|
||||
|
||||
[squad_sleeping_gigant]:online_offline_group
|
||||
npc_random = gigant_normal
|
||||
npc_in_squad = 4
|
||||
faction = monster
|
||||
story_id = squad_sleeping_gigant
|
||||
logic = scripts\misc_encounter\squad_sleeping_gigant.ltx
|
|
@ -0,0 +1,30 @@
|
|||
|
||||
[duty_girl_base]
|
||||
icon = ui_inGame2_Mesta_evakuatsii
|
||||
storyline = true
|
||||
prior = 1000
|
||||
status_functor = duty_girl_task_status
|
||||
target_functor = duty_girl_task_target
|
||||
title_functor = duty_girl_task_target
|
||||
descr_functor = duty_girl_task_target
|
||||
|
||||
[duty_girl_hunting_chimera]:duty_girl_base
|
||||
on_init = %+duty_girl_hunting_chimera_init%
|
||||
on_complete = %+duty_girl_hunting_chimera_done%
|
||||
on_fail = %+duty_girl_hunting_chimera_fail%
|
||||
|
||||
[duty_girl_monolith_elite]:duty_girl_base
|
||||
on_init = %+duty_girl_monolith_elite_init%
|
||||
on_complete = %+duty_girl_monolith_elite_done%
|
||||
on_fail = %+duty_girl_monolith_elite_fail%
|
||||
|
||||
[duty_girl_loot_stash]:duty_girl_base
|
||||
on_init = %+duty_girl_loot_stash_init%
|
||||
on_complete = %+duty_girl_loot_stash_done%
|
||||
on_fail = %+duty_girl_loot_stash_fail%
|
||||
|
||||
[duty_girl_capture_the_brirge]:duty_girl_base
|
||||
on_init = %+duty_girl_capture_the_brirge_init%
|
||||
on_complete = %+duty_girl_capture_the_brirge_done%
|
||||
on_fail = %+duty_girl_capture_the_brirge_fail%
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
|
||||
[red_duty_outpost_trader_task_1]
|
||||
icon = ui_iconsTotal_mutant
|
||||
storyline = false
|
||||
prior = 35
|
||||
repeat_timeout = 21600
|
||||
stage_complete = 1
|
||||
title = red_duty_outpost_trader_task_1_name
|
||||
descr = red_duty_outpost_trader_task_1_text
|
||||
job_descr = red_duty_outpost_trader_task_1_about
|
||||
task_complete_descr = red_duty_outpost_trader_task_1_finish
|
||||
on_job_descr = %=setup_assault_task(red_duty_outpost_trader_task_1)%
|
||||
precondition = {=validate_assault_task(red_duty_outpost_trader_task_1:2:1:nil:false:true:nil)} true, false
|
||||
target_functor = assault_task_target_functor
|
||||
status_functor = assault_task_status_functor
|
||||
status_functor_params = monster, monster_predatory_day, monster_predatory_night, monster_vegetarian, monster_zombied_day, monster_zombied_night, monster_special
|
||||
condlist_0 = {!task_giver_alive(red_duty_outpost_trader_task_1)} fail
|
||||
on_complete = %=reward_random_money(4500:6000) =complete_task_inc_goodwill(50:dolg) =inc_task_stage(red_duty_outpost_trader_task_1)%
|
||||
on_fail = %=fail_task_dec_goodwill(50:dolg)%
|
||||
|
||||
[red_duty_outpost_trader_task_2]
|
||||
icon = ui_inGame2_Odin_vistrel
|
||||
storyline = false
|
||||
prior = 45
|
||||
repeat_timeout = 21600
|
||||
stage_complete = 1
|
||||
title = red_duty_outpost_trader_task_2_name
|
||||
descr = red_duty_outpost_trader_task_2_text
|
||||
job_descr = red_duty_outpost_trader_task_2_about
|
||||
task_complete_descr = red_duty_outpost_trader_task_2_finish
|
||||
on_job_descr = %=setup_bounty_task(red_duty_outpost_trader_task_2:false:true:bandit:monolith:killer)%
|
||||
target_functor = general_bounty_task
|
||||
status_functor = bounty_task
|
||||
condlist_0 = {!task_giver_alive(red_duty_outpost_trader_task_2)} fail
|
||||
on_complete = %=reward_random_money(8500:9000) =complete_task_inc_goodwill(50:dolg) =inc_task_stage(red_duty_outpost_trader_task_2) =drx_sl_unregister_task_giver(red_duty_outpost_trader_task_2) =drx_sl_reset_stored_task(red_duty_outpost_trader_task_2)%
|
||||
on_fail = %=fail_task_dec_goodwill(25:dolg) =drx_sl_unregister_task_giver(red_duty_outpost_trader_task_2) =drx_sl_reset_stored_task(red_duty_outpost_trader_task_2)%
|
||||
|
||||
[red_duty_outpost_trader_task_3]
|
||||
icon = ui_iconsTotal_find_item
|
||||
storyline = false
|
||||
prior = 90
|
||||
repeat_timeout = 21600
|
||||
stage_complete = 1
|
||||
title = red_duty_outpost_trader_task_3_name
|
||||
title_functor = general_fetch_task
|
||||
descr = red_duty_outpost_trader_task_3_text
|
||||
descr_functor = general_fetch_task
|
||||
job_descr = red_duty_outpost_trader_task_3_about
|
||||
fetch_descr = red_duty_outpost_trader_task_3_about
|
||||
fetch_func = %=setup_fetch_task(red_duty_outpost_trader_task_3_fetch:mutant_meat:10:10)%
|
||||
target_functor = general_fetch_task
|
||||
status_functor = actor_has_fetch_item
|
||||
task_complete_descr = red_duty_outpost_trader_task_3_finish
|
||||
condlist_0 = {!task_giver_alive(red_duty_outpost_trader_task_3)} fail
|
||||
on_complete = %=fetch_reward_and_remove(red_duty_outpost_trader_task_3_fetch:2) =complete_task_inc_goodwill(50:dolg) =inc_task_stage(red_duty_outpost_trader_task_3) =pstor_reset(red_duty_outpost_trader_task_3_fetch)%
|
||||
on_fail = %=pstor_reset(red_duty_outpost_trader_task_3_fetch)%
|
||||
|
||||
[red_duty_outpost_trader_task_4]
|
||||
icon = ui_iconsTotal_find_item
|
||||
storyline = false
|
||||
prior = 90
|
||||
repeat_timeout = 21600
|
||||
stage_complete = 1
|
||||
title = red_duty_outpost_trader_task_4_name
|
||||
title_functor = general_fetch_task
|
||||
descr = red_duty_outpost_trader_task_4_text
|
||||
descr_functor = general_fetch_task
|
||||
job_descr = red_duty_outpost_trader_task_4_about
|
||||
fetch_descr = red_duty_outpost_trader_task_4_about
|
||||
fetch_func = %=setup_fetch_task(red_duty_outpost_trader_task_4_fetch:mutant_parts_rare:1:1)%
|
||||
target_functor = general_fetch_task
|
||||
status_functor = actor_has_fetch_item
|
||||
task_complete_descr = red_duty_outpost_trader_task_4_finish
|
||||
condlist_0 = {!task_giver_alive(red_duty_outpost_trader_task_4)} fail
|
||||
on_complete = %=fetch_reward_and_remove(red_duty_outpost_trader_task_4_fetch:2) =complete_task_inc_goodwill(50:dolg) =inc_task_stage(red_duty_outpost_trader_task_4) =pstor_reset(red_duty_outpost_trader_task_4_fetch)%
|
||||
on_fail = %=pstor_reset(red_duty_outpost_trader_task_4_fetch)%
|
|
@ -0,0 +1,130 @@
|
|||
[section@squad]
|
||||
target@base = val_smart_terrain_1_2
|
||||
|
||||
[section@logic]
|
||||
logic@krov_a_1
|
||||
logic@krov_a_2
|
||||
logic@krov_a_3
|
||||
logic@krov_a_4
|
||||
logic@krov_a_5
|
||||
logic@krov_a_6
|
||||
logic@krov_b_1
|
||||
logic@krov_b_2
|
||||
logic@krov_b_3
|
||||
logic@krov_b_4
|
||||
logic@krov_b_5
|
||||
logic@krov_b_6
|
||||
logic@krov_c_1
|
||||
logic@krov_c_2
|
||||
logic@krov_c_3
|
||||
logic@krov_c_4
|
||||
logic@krov_c_5
|
||||
logic@krov_c_6
|
||||
|
||||
;------------------------------
|
||||
; Logic
|
||||
;------------------------------
|
||||
[logic@base]
|
||||
net_spawn = pt1
|
||||
|
||||
[logic@krov_a_1]:logic@base
|
||||
active = mob_home@krov_a_1
|
||||
[logic@krov_a_2]:logic@base
|
||||
active = mob_home@krov_a_2
|
||||
[logic@krov_a_3]:logic@base
|
||||
active = mob_home@krov_a_3
|
||||
[logic@krov_a_4]:logic@base
|
||||
active = mob_home@krov_a_4
|
||||
[logic@krov_a_5]:logic@base
|
||||
active = mob_home@krov_a_5
|
||||
[logic@krov_a_6]:logic@base
|
||||
active = mob_home@krov_a_6
|
||||
|
||||
[logic@krov_b_1]:logic@base
|
||||
active = mob_home@krov_b_1
|
||||
[logic@krov_b_2]:logic@base
|
||||
active = mob_home@krov_b_2
|
||||
[logic@krov_b_3]:logic@base
|
||||
active = mob_home@krov_b_3
|
||||
[logic@krov_b_4]:logic@base
|
||||
active = mob_home@krov_b_4
|
||||
[logic@krov_b_5]:logic@base
|
||||
active = mob_home@krov_b_5
|
||||
[logic@krov_b_6]:logic@base
|
||||
active = mob_home@krov_b_6
|
||||
|
||||
[logic@krov_c_1]:logic@base
|
||||
active = mob_home@krov_c_1
|
||||
[logic@krov_c_2]:logic@base
|
||||
active = mob_home@krov_c_2
|
||||
[logic@krov_c_3]:logic@base
|
||||
active = mob_home@krov_c_3
|
||||
[logic@krov_c_4]:logic@base
|
||||
active = mob_home@krov_c_4
|
||||
[logic@krov_c_5]:logic@base
|
||||
active = mob_home@krov_c_5
|
||||
[logic@krov_c_6]:logic@base
|
||||
active = mob_home@krov_c_6
|
||||
|
||||
;------------------------------
|
||||
; Scheme
|
||||
;------------------------------
|
||||
[mob_home@base]
|
||||
target = %=mutant_path()%
|
||||
move_animation = walk
|
||||
wait_animation = {-me_misc_bloodsucker_val_aggro} bloodsucker_sleep, stand
|
||||
combat_ignore_cond = {-me_misc_bloodsucker_val_aggro} true
|
||||
enemy_ignore_cond = {-me_misc_bloodsucker_val_aggro} true
|
||||
|
||||
on_sound1 = actor|WPN_shoot|10|0| {-me_misc_bloodsucker_val_aggro} %+me_misc_bloodsucker_val_aggro%
|
||||
on_sound2 = actor|WPN_hit|5|0| {-me_misc_bloodsucker_val_aggro} %+me_misc_bloodsucker_val_aggro%
|
||||
on_sound3 = actor|WPN_empty|5|0| {-me_misc_bloodsucker_val_aggro} %+me_misc_bloodsucker_val_aggro%
|
||||
on_sound4 = actor|WPN_reload|5|0| {-me_misc_bloodsucker_val_aggro} %+me_misc_bloodsucker_val_aggro%
|
||||
on_sound5 = actor|MST_damage|10|0| {-me_misc_bloodsucker_val_aggro} %+me_misc_bloodsucker_val_aggro%
|
||||
on_sound6 = actor|MST_die|10|0| {-me_misc_bloodsucker_val_aggro} %+me_misc_bloodsucker_val_aggro%
|
||||
|
||||
on_info1 = {-me_misc_bloodsucker_val_aggro =dist_to_actor_le(5) =script(gameplay_misc_encounter:actor_sprint) !script(gameplay_misc_encounter:ray_cast_to_actor_le:5)} %+me_misc_bloodsucker_val_aggro%
|
||||
|
||||
|
||||
|
||||
|
||||
[mob_home@krov_a_1]:mob_home@base
|
||||
pt1 = pos:172.2,0.10,-273.7 dir:0
|
||||
[mob_home@krov_a_2]:mob_home@base
|
||||
pt1 = pos:172.9,0.10,-272.3 dir:45
|
||||
[mob_home@krov_a_3]:mob_home@base
|
||||
pt1 = pos:171.5,0.10,-271.6 dir:-90
|
||||
[mob_home@krov_a_4]:mob_home@base
|
||||
pt1 = pos:172.2,0.10,-270.2 dir:-135
|
||||
[mob_home@krov_a_5]:mob_home@base
|
||||
pt1 = pos:171.5,0.10,-268.8 dir:90
|
||||
[mob_home@krov_a_6]:mob_home@base
|
||||
pt1 = pos:172.9,0.10,-268.1 dir:45
|
||||
|
||||
[mob_home@krov_b_1]:mob_home@base
|
||||
pt1 = pos:172.9,0.10,-264.6 dir:180
|
||||
[mob_home@krov_b_2]:mob_home@base
|
||||
pt1 = pos:175.0,0.10,-264.6 dir:180
|
||||
[mob_home@krov_b_3]:mob_home@base
|
||||
pt1 = pos:175.7,0.10,-266.0 dir:90
|
||||
[mob_home@krov_b_4]:mob_home@base
|
||||
pt1 = pos:174.3,0.10,-268.8 dir:0
|
||||
[mob_home@krov_b_5]:mob_home@base
|
||||
pt1 = pos:174.3,0.10,-271.6 dir:135
|
||||
[mob_home@krov_b_6]:mob_home@base
|
||||
pt1 = pos:175.7,0.10,-273.7 dir:90
|
||||
|
||||
[mob_home@krov_c_1]:mob_home@base
|
||||
pt1 = pos:171.5,0.10,-277.9 dir:-45
|
||||
[mob_home@krov_c_2]:mob_home@base
|
||||
pt1 = pos:172.9,0.10,-278.6 dir:90
|
||||
[mob_home@krov_c_3]:mob_home@base
|
||||
pt1 = pos:174.3,0.10,-278.6 dir:0
|
||||
[mob_home@krov_c_4]:mob_home@base
|
||||
pt1 = pos:175.7,0.10,-277.2 dir:0
|
||||
[mob_home@krov_c_5]:mob_home@base
|
||||
pt1 = pos:175.0,0.10,-275.8 dir:0
|
||||
[mob_home@krov_c_6]:mob_home@base
|
||||
pt1 = pos:172.9,0.10,-276.5 dir:180
|
||||
|
||||
|
|
@ -0,0 +1,107 @@
|
|||
[section@squad]
|
||||
target@base = rad2_prip_teleport
|
||||
|
||||
[section@logic]
|
||||
logic@boss_1
|
||||
logic@boss_2
|
||||
logic@bait
|
||||
|
||||
;------------------------------
|
||||
; Logic
|
||||
;------------------------------
|
||||
[logic@base]
|
||||
net_spawn = pt1
|
||||
|
||||
[logic@boss_1]:logic@base
|
||||
suitable = {=check_squad_name(squad_lure_prey_controller_1)} true
|
||||
active = mob_home@boss_1
|
||||
on_death = death@boss_1
|
||||
|
||||
[logic@boss_2]:logic@base
|
||||
suitable = {=check_squad_name(squad_lure_prey_controller_2)} true
|
||||
active = mob_home@boss_2
|
||||
on_death = death@boss_2
|
||||
|
||||
[logic@bait]:logic@base
|
||||
suitable = {=check_squad_name(squad_lure_prey_phantom)} true
|
||||
active = {+me_lure_prey_bait_1} beh@bait_1, {+me_lure_prey_bait_2} beh@bait_2, {+me_lure_prey_bait_3} beh@bait_3, {+me_lure_prey_bait_4} beh@bait_4, beh@bait_5
|
||||
|
||||
|
||||
;------------------------------
|
||||
; Scheme
|
||||
;------------------------------
|
||||
[mob_home@boss]
|
||||
target = %=mutant_path()% nil
|
||||
before_hit = gameplay_misc_encounter@lure_prey_before_hit
|
||||
combat_ignore_cond = {-me_lure_prey_argo} %=script(gameplay_misc_encounter:kill_common_enemy)% true
|
||||
enemy_ignore_cond = {-me_lure_prey_argo} true
|
||||
|
||||
[mob_home@boss_1]:mob_home@boss
|
||||
pt1 = pos:660.8,-43.80,168.7 dir:0
|
||||
on_info1 = {+me_lure_prey_argo -me_lure_prey_boss} %+me_lure_prey_boss =create_squad(squad_lure_prey_controller_2:rad2_prip_teleport)%
|
||||
on_info2 = {-me_lure_prey_argo =see_actor()} %+me_lure_prey_argo%
|
||||
|
||||
[mob_home@boss_2]:mob_home@boss
|
||||
pt1 = pos:603.4,-43.80,184.8 dir:-90
|
||||
|
||||
[death@boss_1]
|
||||
on_info1 = {!squad_exist(squad_lure_prey_controller_2) +me_lure_prey_bait_1} %-me_lure_prey_bait_1%
|
||||
on_info2 = {!squad_exist(squad_lure_prey_controller_2) +me_lure_prey_bait_2} %-me_lure_prey_bait_2%
|
||||
on_info3 = {!squad_exist(squad_lure_prey_controller_2) +me_lure_prey_bait_3} %-me_lure_prey_bait_3%
|
||||
on_info4 = {!squad_exist(squad_lure_prey_controller_2) +me_lure_prey_bait_4} %-me_lure_prey_bait_4%
|
||||
on_info5 = {!squad_exist(squad_lure_prey_controller_2) +me_lure_prey_argo} %-me_lure_prey_argo%
|
||||
on_info6 = {!squad_exist(squad_lure_prey_controller_2)} %+me_lure_prey_dead%
|
||||
|
||||
[death@boss_2]
|
||||
on_info1 = {!squad_exist(squad_lure_prey_controller_1) +me_lure_prey_bait_1} %-me_lure_prey_bait_1%
|
||||
on_info2 = {!squad_exist(squad_lure_prey_controller_1) +me_lure_prey_bait_2} %-me_lure_prey_bait_2%
|
||||
on_info3 = {!squad_exist(squad_lure_prey_controller_1) +me_lure_prey_bait_3} %-me_lure_prey_bait_3%
|
||||
on_info4 = {!squad_exist(squad_lure_prey_controller_1) +me_lure_prey_bait_4} %-me_lure_prey_bait_4%
|
||||
on_info5 = {!squad_exist(squad_lure_prey_controller_1) +me_lure_prey_argo} %-me_lure_prey_argo%
|
||||
on_info6 = {!squad_exist(squad_lure_prey_controller_1)} %+me_lure_prey_dead%
|
||||
|
||||
|
||||
[beh@base]
|
||||
dont_keep_items = true
|
||||
gather_items_enabled = false
|
||||
help_wounded_enabled = false
|
||||
corpse_detection_enabled = false
|
||||
combat_ignore_keep_when_attacked = true
|
||||
path_end = loop
|
||||
walk_dist = 0
|
||||
jog_dist = 0
|
||||
run_anim = rush
|
||||
meet = no_meet
|
||||
before_hit = invulnerable
|
||||
combat_ignore_cond = true
|
||||
enemy_ignore_cond = true
|
||||
|
||||
[beh@bait]:beh@base
|
||||
target = %=animpoint()% nil
|
||||
on_info3 = %=script(gameplay_misc_encounter:lure_prey_set_stalker)%
|
||||
on_info4 = {+me_lure_prey_argo =squad_exist(squad_lure_prey_phantom)} %=remove_squad(squad_lure_prey_phantom)%
|
||||
on_info5 = {!squad_exist(squad_lure_prey_controller_1) =squad_exist(squad_lure_prey_phantom)} %=remove_squad(squad_lure_prey_phantom)%
|
||||
|
||||
[beh@bait_1]:beh@bait
|
||||
pt1 = 999999,hello_wpn | pos:660.1,-43.80,182.0 dir:90
|
||||
on_info1 = {=dist_to_actor_le(20) -me_lure_prey_argo} %+me_lure_prey_argo%
|
||||
|
||||
[beh@bait_2]:beh@bait
|
||||
pt1 = 999999,hello_wpn | pos:603.4,-43.80,184.8 dir:90
|
||||
on_info1 = {=dist_to_actor_le(10) -me_lure_prey_bait_1} %+me_lure_prey_bait_1%
|
||||
on_info2 = {+me_lure_prey_bait_1} %=script(xr_logic_ex:set_position:beh@bait_1:pt1)% beh@bait_1
|
||||
|
||||
[beh@bait_3]:beh@bait
|
||||
pt1 = 999999,hello_wpn | pos:557.9,-42.00,172.9 dir:290
|
||||
on_info1 = {=dist_to_actor_le(10) -me_lure_prey_bait_2} %+me_lure_prey_bait_2%
|
||||
on_info2 = {+me_lure_prey_bait_2} %=script(xr_logic_ex:set_position:beh@bait_2:pt1)% beh@bait_2
|
||||
|
||||
[beh@bait_4]:beh@bait
|
||||
pt1 = 999999,hello_wpn | pos:528.5,-39.50,131.6 dir:150
|
||||
on_info1 = {=dist_to_actor_le(10) -me_lure_prey_bait_3} %+me_lure_prey_bait_3%
|
||||
on_info2 = {+me_lure_prey_bait_3} %=script(xr_logic_ex:set_position:beh@bait_3:pt1)% beh@bait_3
|
||||
|
||||
[beh@bait_5]:beh@bait
|
||||
pt1 = 999999,hello_wpn | pos:560.0,-44.00,51.8 dir:210
|
||||
on_info1 = {=dist_to_actor_le(10) -me_lure_prey_bait_4} %+me_lure_prey_bait_4%
|
||||
on_info2 = {+me_lure_prey_bait_4} %=script(xr_logic_ex:set_position:beh@bait_4:pt1)% beh@bait_4
|
|
@ -0,0 +1,128 @@
|
|||
[section@squad]
|
||||
target@base = jup_b47
|
||||
|
||||
[section@logic]
|
||||
logic@mutant_1
|
||||
logic@mutant_2
|
||||
logic@mutant_3
|
||||
logic@mutant_4
|
||||
logic@mutant_5
|
||||
logic@mutant_6
|
||||
logic@mutant_7
|
||||
logic@mutant_8
|
||||
logic@mutant_9
|
||||
logic@mutant_10
|
||||
logic@mutant_11
|
||||
logic@mutant_12
|
||||
[test]
|
||||
logic@mutant_13
|
||||
logic@mutant_14
|
||||
logic@mutant_15
|
||||
logic@mutant_16
|
||||
logic@mutant_17
|
||||
logic@mutant_18
|
||||
|
||||
;------------------------------
|
||||
; Logic
|
||||
;------------------------------
|
||||
[logic@base]
|
||||
net_spawn = pt1
|
||||
|
||||
[logic@mutant_1]:logic@base
|
||||
active = mob_home@mutant_1
|
||||
[logic@mutant_2]:logic@base
|
||||
active = mob_home@mutant_2
|
||||
[logic@mutant_3]:logic@base
|
||||
active = mob_home@mutant_3
|
||||
[logic@mutant_4]:logic@base
|
||||
active = mob_home@mutant_4
|
||||
[logic@mutant_5]:logic@base
|
||||
active = mob_home@mutant_5
|
||||
[logic@mutant_6]:logic@base
|
||||
active = mob_home@mutant_6
|
||||
[logic@mutant_7]:logic@base
|
||||
active = mob_home@mutant_7
|
||||
[logic@mutant_8]:logic@base
|
||||
active = mob_home@mutant_8
|
||||
[logic@mutant_9]:logic@base
|
||||
active = mob_home@mutant_9
|
||||
[logic@mutant_10]:logic@base
|
||||
active = mob_home@mutant_10
|
||||
[logic@mutant_11]:logic@base
|
||||
active = mob_home@mutant_11
|
||||
[logic@mutant_12]:logic@base
|
||||
active = mob_home@mutant_12
|
||||
[logic@mutant_13]:logic@base
|
||||
active = mob_home@mutant_13
|
||||
[logic@mutant_14]:logic@base
|
||||
active = mob_home@mutant_14
|
||||
[logic@mutant_15]:logic@base
|
||||
active = mob_home@mutant_15
|
||||
[logic@mutant_16]:logic@base
|
||||
active = mob_home@mutant_16
|
||||
[logic@mutant_17]:logic@base
|
||||
active = mob_home@mutant_17
|
||||
[logic@mutant_18]:logic@base
|
||||
active = mob_home@mutant_18
|
||||
|
||||
;------------------------------
|
||||
; Scheme
|
||||
;------------------------------
|
||||
[mob_home@base]
|
||||
target = %=mutant_path()%
|
||||
move_animation = walk
|
||||
wait_animation = {-me_sleeping_snork_fight} bloodsucker_sleep, stand
|
||||
combat_ignore_cond = {-me_sleeping_snork_fight} true
|
||||
enemy_ignore_cond = {-me_sleeping_snork_fight} true
|
||||
|
||||
on_sound1 = actor|WPN_shoot|10|0| {-me_sleeping_snork_fight} %+me_sleeping_snork_fight%
|
||||
on_sound2 = actor|WPN_hit|5|0| {-me_sleeping_snork_fight} %+me_sleeping_snork_fight%
|
||||
on_sound3 = actor|WPN_empty|5|0| {-me_sleeping_snork_fight} %+me_sleeping_snork_fight%
|
||||
on_sound4 = actor|WPN_reload|5|0| {-me_sleeping_snork_fight} %+me_sleeping_snork_fight%
|
||||
on_sound5 = actor|MST_damage|10|0| {-me_sleeping_snork_fight} %+me_sleeping_snork_fight%
|
||||
on_sound6 = actor|MST_die|10|0| {-me_sleeping_snork_fight} %+me_sleeping_snork_fight%
|
||||
|
||||
on_info1 = {-me_sleeping_snork_fight =dist_to_actor_le(5) =script(gameplay_misc_encounter:actor_sprint) !script(gameplay_misc_encounter:ray_cast_to_actor_le:5)} %+me_sleeping_snork_fight%
|
||||
|
||||
|
||||
|
||||
|
||||
[mob_home@mutant_1]:mob_home@base
|
||||
pt1 = pos:398.3,39.34,-191.1 dir:-90
|
||||
[mob_home@mutant_2]:mob_home@base
|
||||
pt1 = pos:400.4,39.34,-192.5 dir:45
|
||||
[mob_home@mutant_3]:mob_home@base
|
||||
pt1 = pos:398.3,39.37,-195.3 dir:-90
|
||||
[mob_home@mutant_4]:mob_home@base
|
||||
pt1 = pos:399.0,39.34,-199.5 dir:-135
|
||||
[mob_home@mutant_5]:mob_home@base
|
||||
pt1 = pos:400.4,39.34,-202.3 dir:90
|
||||
[mob_home@mutant_6]:mob_home@base
|
||||
pt1 = pos:398.3,39.34,-204.4 dir:45
|
||||
|
||||
[mob_home@mutant_7]:mob_home@base
|
||||
pt1 = pos:401.1,39.34,-205.8 dir:45
|
||||
[mob_home@mutant_8]:mob_home@base
|
||||
pt1 = pos:400.4,39.34,-210.7 dir:45
|
||||
[mob_home@mutant_9]:mob_home@base
|
||||
pt1 = pos:398.3,39.34,-212.8 dir:45
|
||||
[mob_home@mutant_10]:mob_home@base
|
||||
pt1 = pos:400.4,39.34,-214.2 dir:45
|
||||
[mob_home@mutant_11]:mob_home@base
|
||||
pt1 = pos:399.0,39.34,-215.6 dir:45
|
||||
[mob_home@mutant_12]:mob_home@base
|
||||
pt1 = pos:401.1,39.34,-215.6 dir:45
|
||||
|
||||
[mob_home@mutant_13]:mob_home@base
|
||||
pt1 = pos:172.9,0.10,-268.1 dir:45
|
||||
[mob_home@mutant_14]:mob_home@base
|
||||
pt1 = pos:172.9,0.10,-268.1 dir:45
|
||||
[mob_home@mutant_15]:mob_home@base
|
||||
pt1 = pos:172.9,0.10,-268.1 dir:45
|
||||
[mob_home@mutant_16]:mob_home@base
|
||||
pt1 = pos:172.9,0.10,-268.1 dir:45
|
||||
[mob_home@mutant_17]:mob_home@base
|
||||
pt1 = pos:172.9,0.10,-268.1 dir:45
|
||||
[mob_home@mutant_18]:mob_home@base
|
||||
pt1 = pos:172.9,0.10,-268.1 dir:45
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
[logic]
|
||||
active = ph_idle@base
|
||||
|
||||
[ph_idle@base]
|
||||
on_info = %=script(xr_dynamic_object:light:lights_white_12m_glass:bone_lamp:1)%
|
||||
|
||||
[lights_white_12m_glass]
|
||||
range = 12
|
||||
color = 4294960053
|
||||
shadow = true
|
||||
;volumetric = true
|
||||
;volumetric_quality = 0.7
|
||||
;volumetric_distance = 2.5
|
||||
;volumetric_intensity = 0.6
|
|
@ -0,0 +1,377 @@
|
|||
|
||||
[logic@base]
|
||||
net_spawn = pt1
|
||||
|
||||
;==================================================
|
||||
[beh@base]
|
||||
target = waypoint
|
||||
path_end = loop
|
||||
walk_dist = 0
|
||||
jog_dist = 0
|
||||
run_anim = patrol
|
||||
meet = meet@base
|
||||
|
||||
[meet@base]
|
||||
close_snd_hello = {=check_npc_name(monolith)} nil, {=is_wounded} nil, {!is_squad_commander} nil, {=actor_enemy} nil, {=actor_has_weapon} meet_hide_weapon, meet_hello
|
||||
close_snd_bye = nil
|
||||
close_anim = nil
|
||||
close_victim = nil
|
||||
close_distance = 0
|
||||
far_anim = nil
|
||||
far_victim = nil
|
||||
far_distance = 0
|
||||
meet_on_talking = false
|
||||
use = {=is_squad_commander !has_enemy !actor_enemy =dist_to_actor_le(3)} true
|
||||
|
||||
[beh@animpoint]:beh@base
|
||||
target = %=animpoint()% nil
|
||||
|
||||
|
||||
|
||||
|
||||
[logic@guard]:logic@base
|
||||
suitable = {=npc_squad_name(squad_red_duty_outpost_guard) !surge_started()} true
|
||||
prior = 200
|
||||
|
||||
[logic@guard_1]:logic@guard
|
||||
active = beh@guard_carrier
|
||||
[logic@guard_2]:logic@guard
|
||||
active = beh@guard_patrol
|
||||
[logic@guard_3]:logic@guard
|
||||
active = beh@guard_truck_1
|
||||
[logic@guard_4]:logic@guard
|
||||
active = beh@guard_truck_2
|
||||
[logic@guard_5]:logic@guard
|
||||
active = beh@guard_truck_3
|
||||
[logic@guard_6]:logic@guard
|
||||
active = beh@guard_truck_4
|
||||
[logic@guard_7]:logic@guard
|
||||
active = beh@guard_tower_1
|
||||
[logic@guard_8]:logic@guard
|
||||
active = beh@guard_tower_2
|
||||
[logic@guard_9]:logic@guard
|
||||
active = beh@guard_bridge_1
|
||||
[logic@guard_10]:logic@guard
|
||||
active = beh@guard_bridge_2
|
||||
[logic@guard_11]:logic@guard
|
||||
active = beh@guard_bridge_3
|
||||
[logic@guard_12]:logic@guard
|
||||
active = beh@guard_path_1
|
||||
[logic@guard_13]:logic@guard
|
||||
active = beh@guard_path_2
|
||||
[logic@guard_14]:logic@guard
|
||||
active = beh@guard_path_3
|
||||
|
||||
|
||||
[beh@guard]:beh@animpoint
|
||||
meet = no_meet
|
||||
|
||||
[beh@guard_carrier]:beh@guard
|
||||
pt1 = 10000,dynamite | pos:-104.3,0.00,-239.4 dir:-90
|
||||
pt2 = 10000,dynamite | pos:-115.5,-0.15,-251.3 dir:180
|
||||
pt3 = 10000,dynamite | pos:-115.5,0.47,-258.3 dir:180
|
||||
|
||||
[beh@guard_patrol]:beh@guard
|
||||
pt1 = 10000,guard | pos:-111.3,-0.22,-252.7 dir:0
|
||||
pt2 = 10000,guard | pos:-94.5,0.28,-275.1 dir:-150
|
||||
|
||||
[beh@guard_truck_1]:beh@guard
|
||||
pt1 = 999999,binocular | pos:-101.5,1.75,-249.2 dir:-45
|
||||
[beh@guard_truck_2]:beh@guard
|
||||
pt1 = 999999,guard | pos:-100.1,0.06,-246.4 dir:-60
|
||||
[beh@guard_truck_3]:beh@guard
|
||||
pt1 = 999999,guard | pos:-116.9,-0.44,-246.4 dir:-90
|
||||
[beh@guard_truck_4]:beh@guard
|
||||
pt1 = 999999,animpoint_stay_wall | pos:-101.5,0.02,-240.8 dir:45 animpoint:pos
|
||||
|
||||
[beh@guard_tower_1]:beh@guard
|
||||
pt1 = 10000,guard | pos:-122.5,4.72,-252.7 dir:90
|
||||
pt2 = 10000,guard | pos:-114.8,4.72,-252.7 dir:-90
|
||||
[beh@guard_tower_2]:beh@guard
|
||||
pt1 = 999999,binocular | pos:-122.5,4.72,-261.1 dir:90
|
||||
|
||||
|
||||
[beh@guard_bridge_1]:beh@guard
|
||||
pt1 = 999999,guard | pos:-125.3,0.27,-272.3 dir:90
|
||||
[beh@guard_bridge_2]:beh@guard
|
||||
pt1 = 999999,guard | pos:-120.4,0.18,-265.3 dir:90
|
||||
[beh@guard_bridge_3]:beh@guard
|
||||
pt1 = 999999,guard | pos:-112.0,0.27,-273.0 dir:90
|
||||
|
||||
|
||||
[beh@guard_path_1]:beh@guard
|
||||
pt1 = 999999,guard | pos:-93.1,0.38,-280.7 dir:-150
|
||||
[beh@guard_path_2]:beh@guard
|
||||
pt1 = 999999,guard | pos:-102.9,0.12,-281.4 dir:-135
|
||||
[beh@guard_path_3]:beh@guard
|
||||
pt1 = 999999,guard | pos:-109.9,-0.18,-287.7 dir:-135
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
[logic@surge_tower]:logic@base
|
||||
suitable = {=surge_started() =npc_squad_name(squad_red_duty_outpost_guard)} true
|
||||
prior = 200
|
||||
|
||||
[logic@surge_tower_1]:logic@surge_tower
|
||||
active = beh@surge_tower_1
|
||||
[logic@surge_tower_2]:logic@surge_tower
|
||||
active = beh@surge_tower_2
|
||||
[logic@surge_tower_3]:logic@surge_tower
|
||||
active = beh@surge_tower_3
|
||||
[logic@surge_tower_4]:logic@surge_tower
|
||||
active = beh@surge_tower_4
|
||||
[logic@surge_tower_5]:logic@surge_tower
|
||||
active = beh@surge_tower_5
|
||||
[logic@surge_tower_6]:logic@surge_tower
|
||||
active = beh@surge_tower_6
|
||||
[logic@surge_tower_7]:logic@surge_tower
|
||||
active = beh@surge_tower_7
|
||||
[logic@surge_tower_8]:logic@surge_tower
|
||||
active = beh@surge_tower_8
|
||||
[logic@surge_tower_9]:logic@surge_tower
|
||||
active = beh@surge_tower_9
|
||||
[logic@surge_tower_10]:logic@surge_tower
|
||||
active = beh@surge_tower_10
|
||||
[logic@surge_tower_11]:logic@surge_tower
|
||||
active = beh@surge_tower_11
|
||||
[logic@surge_tower_12]:logic@surge_tower
|
||||
active = beh@surge_tower_12
|
||||
[logic@surge_tower_13]:logic@surge_tower
|
||||
active = beh@surge_tower_13
|
||||
[logic@surge_tower_14]:logic@surge_tower
|
||||
active = beh@surge_tower_14
|
||||
|
||||
|
||||
[beh@surge_tower]:beh@animpoint
|
||||
run_anim = rush
|
||||
meet = no_meet
|
||||
|
||||
[beh@surge_tower_1]:beh@surge_tower
|
||||
pt1 = 999999,animpoint_sit | pos:-116.2,4.72,-254.8 dir:180 animpoint:pos
|
||||
[beh@surge_tower_2]:beh@surge_tower
|
||||
pt1 = 999999,animpoint_sit | pos:-115.5,4.72,-256.2 dir:90 animpoint:pos
|
||||
[beh@surge_tower_3]:beh@surge_tower
|
||||
pt1 = 999999,animpoint_sit | pos:-116.9,4.72,-259.0 dir:0 animpoint:pos
|
||||
[beh@surge_tower_4]:beh@surge_tower
|
||||
pt1 = 999999,animpoint_sit | pos:-119.7,4.72,-256.2 dir:-90 animpoint:pos
|
||||
[beh@surge_tower_5]:beh@surge_tower
|
||||
pt1 = 999999,animpoint_sit | pos:-119.0,4.72,-254.8 dir:180 animpoint:pos
|
||||
[beh@surge_tower_6]:beh@surge_tower
|
||||
pt1 = 999999,animpoint_sit | pos:-119.7,4.72,-259.0 dir:-45 animpoint:pos
|
||||
[beh@surge_tower_7]:beh@surge_tower
|
||||
pt1 = 999999,animpoint_sit | pos:-116.2,0.47,-256.2 dir:180 animpoint:pos
|
||||
[beh@surge_tower_8]:beh@surge_tower
|
||||
pt1 = 999999,animpoint_sit | pos:-115.5,0.47,-257.6 dir:90 animpoint:pos
|
||||
[beh@surge_tower_9]:beh@surge_tower
|
||||
pt1 = 999999,animpoint_sit | pos:-119.0,0.47,-259.0 dir:-90 animpoint:pos
|
||||
[beh@surge_tower_10]:beh@surge_tower
|
||||
pt1 = 999999,animpoint_sit | pos:-119.0,0.47,-257.6 dir:-90 animpoint:pos
|
||||
[beh@surge_tower_11]:beh@surge_tower
|
||||
pt1 = 999999,guard | pos:-117.6,0.47,-257.6
|
||||
[beh@surge_tower_12]:beh@surge_tower
|
||||
pt1 = 999999,guard | pos:-116.9,0.47,-257.6
|
||||
[beh@surge_tower_13]:beh@surge_tower
|
||||
pt1 = 999999,guard | pos:-117.6,0.47,-258.3
|
||||
[beh@surge_tower_14]:beh@surge_tower
|
||||
pt1 = 999999,guard | pos:-116.9,0.47,-258.3
|
||||
|
||||
|
||||
|
||||
|
||||
[logic@visitor]:logic@base
|
||||
suitable = {+red_bridge_outpost} true
|
||||
prior = 100
|
||||
|
||||
[beh@visitor]:beh@animpoint
|
||||
|
||||
|
||||
|
||||
|
||||
[logic@visitor_1]:logic@visitor
|
||||
active = beh@visitor_1
|
||||
[logic@visitor_2]:logic@visitor
|
||||
active = beh@visitor_2
|
||||
[logic@visitor_3]:logic@visitor
|
||||
active = beh@visitor_3
|
||||
[logic@visitor_4]:logic@visitor
|
||||
active = beh@visitor_4
|
||||
[logic@visitor_5]:logic@visitor
|
||||
active = beh@visitor_5
|
||||
[logic@visitor_6]:logic@visitor
|
||||
active = beh@visitor_6
|
||||
[logic@visitor_7]:logic@visitor
|
||||
active = beh@visitor_7
|
||||
[logic@visitor_8]:logic@visitor
|
||||
active = beh@visitor_8
|
||||
|
||||
[beh@visitor_1]:beh@visitor
|
||||
pt1 = 999999,animpoint_sit_all@random,state | pos:-103.6,-0.81,-203.0 dir:0 animpoint:pos
|
||||
[beh@visitor_2]:beh@visitor
|
||||
pt1 = 999999,animpoint_sit_normal@random,state | pos:-102.2,-0.81,-201.6 dir:-90 animpoint:pos
|
||||
[beh@visitor_3]:beh@visitor
|
||||
pt1 = 999999,animpoint_sit_normal@random,state | pos:-102.2,-0.81,-200.9 dir:-90 animpoint:pos
|
||||
[beh@visitor_4]:beh@visitor
|
||||
pt1 = 999999,animpoint_sit_normal@random,state | pos:-102.2,-0.81,-200.2 dir:-90 animpoint:pos
|
||||
[beh@visitor_5]:beh@visitor
|
||||
pt1 = 999999,animpoint_sit_all@random,state | pos:-102.2,-0.81,-198.8 dir:135 animpoint:pos
|
||||
[beh@visitor_6]:beh@visitor
|
||||
pt1 = 999999,animpoint_sit_all@random,state | pos:-103.6,-0.81,-198.8 dir:180 animpoint:pos
|
||||
[beh@visitor_7]:beh@visitor
|
||||
pt1 = 999999,animpoint_sit_all@random,state | pos:-105.0,-0.81,-198.8 dir:225 animpoint:pos
|
||||
[beh@visitor_8]:beh@visitor
|
||||
pt1 = 999999,fold_arms | pos:-102.9,-0.81,-198.1 dir:180 animpoint:pos
|
||||
|
||||
|
||||
|
||||
|
||||
[logic@visitor_10]:logic@visitor
|
||||
active = beh@visitor_10
|
||||
[logic@visitor_11]:logic@visitor
|
||||
active = beh@visitor_11
|
||||
[logic@visitor_12]:logic@visitor
|
||||
active = beh@visitor_12
|
||||
[logic@visitor_13]:logic@visitor
|
||||
active = beh@visitor_13
|
||||
[logic@visitor_14]:logic@visitor
|
||||
active = beh@visitor_14
|
||||
|
||||
[beh@campfire]:beh@visitor
|
||||
turn_on_campfire = true
|
||||
|
||||
[beh@visitor_10]:beh@campfire
|
||||
pt1 = 999999,animpoint_sit_ass@random@roast,state | pos:-92.4,-0.81,-193.9 look:-93.8,-0.81,-192.5 animpoint:pos
|
||||
[beh@visitor_11]:beh@campfire
|
||||
pt1 = 999999,animpoint_sit_ass@random@roast,state | pos:-91.7,-0.81,-191.8 look:-93.8,-0.81,-192.5 animpoint:pos
|
||||
[beh@visitor_12]:beh@campfire
|
||||
pt1 = 999999,animpoint_sit_ass@random@roast,state | pos:-93.1,-0.81,-190.4 look:-93.8,-0.81,-192.5 animpoint:pos
|
||||
[beh@visitor_13]:beh@campfire
|
||||
pt1 = 999999,animpoint_sit_ass@random@roast,state | pos:-95.2,-0.81,-190.4 look:-93.8,-0.81,-192.5 animpoint:pos
|
||||
[beh@visitor_14]:beh@campfire
|
||||
pt1 = 999999,animpoint_stay_wall@random,state | pos:-96.6,-0.81,-193.9 dir:180 animpoint:pos
|
||||
|
||||
|
||||
|
||||
|
||||
[logic@customer_1]:logic@visitor
|
||||
active = beh@customer_1
|
||||
[logic@customer_2]:logic@visitor
|
||||
active = beh@customer_2
|
||||
|
||||
[beh@customer_1]:beh@visitor
|
||||
pt1 = 999999,animpoint_sit_normal_weapon,state | pos:-119.0,0.47,-256.2 dir:90 animpoint:pos
|
||||
[beh@customer_2]:beh@visitor
|
||||
pt1 = 999999,animpoint_sit_normal_weapon,state | pos:-119.0,0.47,-255.5 dir:90 animpoint:pos
|
||||
|
||||
|
||||
|
||||
|
||||
[logic@wounded_1]:logic@visitor
|
||||
active = beh@wounded_1
|
||||
[logic@wounded_2]:logic@visitor
|
||||
active = beh@wounded_2
|
||||
[logic@wounded_3]:logic@visitor
|
||||
active = beh@wounded_3
|
||||
|
||||
[beh@wounded]:beh@visitor
|
||||
meet = no_meet
|
||||
|
||||
[beh@wounded_1]:beh@wounded
|
||||
pt1 = 999999,wounded_heavy | pos:-102.9,-0.70,-182.7 dir:90 animpoint:pos
|
||||
[beh@wounded_2]:beh@wounded
|
||||
pt1 = 999999,wounded_heavy | pos:-101.5,-0.70,-182.7 dir:90 animpoint:pos
|
||||
[beh@wounded_3]:beh@wounded
|
||||
pt1 = 999999,wounded_heavy | pos:-100.1,-0.70,-182.7 dir:90 animpoint:pos
|
||||
|
||||
|
||||
|
||||
|
||||
[logic@research]:logic@base
|
||||
suitable = {-red_bridge_outpost} false, {=is_night()} false, {=npc_community(csky)} true, {=npc_community(ecolog)} true
|
||||
prior = 110
|
||||
|
||||
[logic@research_1]:logic@research
|
||||
active = beh@research_1
|
||||
[logic@research_2]:logic@research
|
||||
active = beh@research_2
|
||||
|
||||
[beh@research_1]:beh@visitor
|
||||
pt1 = 999999,scaner_stand | pos:-128.1,-6.13,-273.0 dir:30
|
||||
on_info = {=surge_started()} beh@surge_1
|
||||
[beh@research_2]:beh@visitor
|
||||
pt1 = 999999,scaner_crouch | pos:-126.7,-5.52,-271.6 dir:60
|
||||
on_info = {=surge_started()} beh@surge_2
|
||||
|
||||
|
||||
|
||||
|
||||
[logic@drunk]:logic@visitor
|
||||
suitable = {+red_bridge_outpost =is_night()} true
|
||||
prior = 110
|
||||
active = beh@drunk
|
||||
|
||||
[beh@drunk]:beh@visitor
|
||||
pt1 = 999999,drunk_behindwall | pos:-102.2,0.04,-236.7 dir:210 animpoint:pos
|
||||
on_info = {=surge_started()} beh@surge_3
|
||||
|
||||
|
||||
|
||||
|
||||
[logic@outside_1]:logic@visitor
|
||||
active = beh@outside_1
|
||||
[logic@outside_2]:logic@visitor
|
||||
active = beh@outside_2
|
||||
[logic@outside_3]:logic@visitor
|
||||
active = beh@outside_3
|
||||
|
||||
[beh@outside_1]:beh@visitor
|
||||
pt1 = 999999,animpoint_stay_wall@random,state | pos:-104.2,-0.12,-246.4 dir:-90 animpoint:pos
|
||||
on_info = {=surge_started()} beh@surge_4
|
||||
[beh@outside_2]:beh@visitor
|
||||
pt1 = 999999,animpoint_sit_high@random,state | pos:-104.2,-0.10,-245.0 dir:-90 animpoint:pos
|
||||
on_info = {=surge_started()} beh@surge_5
|
||||
[beh@outside_3]:beh@visitor
|
||||
pt1 = 999999,animpoint_sit_normal@random,state | pos:-105.1,-0.15,-245.0 dir:90 animpoint:pos
|
||||
on_info = {=surge_started()} beh@surge_6
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
[beh@surge]:beh@visitor
|
||||
run_anim = rush
|
||||
|
||||
[beh@surge_1]:beh@surge
|
||||
pt1 = 999999,animpoint_sit | pos:-116.2,-0.64,-225.4 dir:0 animpoint:pos
|
||||
on_info = {!surge_started()} beh@research_1
|
||||
[beh@surge_2]:beh@surge
|
||||
pt1 = 999999,animpoint_sit | pos:-114.8,-0.64,-224.7 dir:90 animpoint:pos
|
||||
on_info = {!surge_started()} beh@research_2
|
||||
[beh@surge_3]:beh@surge
|
||||
pt1 = 999999,animpoint_sit | pos:-114.8,-0.64,-223.3 dir:90 animpoint:pos
|
||||
on_info = {!surge_started()} beh@drunk
|
||||
[beh@surge_4]:beh@surge
|
||||
pt1 = 999999,animpoint_sit | pos:-113.4,-0.64,-219.8 dir:60 animpoint:pos
|
||||
on_info = {!surge_started()} beh@outside_1
|
||||
[beh@surge_5]:beh@surge
|
||||
pt1 = 999999,animpoint_sit | pos:-120.4,-0.64,-223.3 dir:-90 animpoint:pos
|
||||
on_info = {!surge_started()} beh@outside_2
|
||||
[beh@surge_6]:beh@surge
|
||||
pt1 = 999999,animpoint_sit | pos:-120.4,-0.64,-221.9 dir:-90 animpoint:pos
|
||||
on_info = {!surge_started()} beh@outside_3
|
||||
[beh@surge_7]:beh@surge
|
||||
pt1 = 999999,animpoint_sit | pos:-119.7,-0.64,-219.8 dir:-90 animpoint:pos
|
||||
[beh@surge_8]:beh@surge
|
||||
pt1 = 999999,animpoint_sit | pos:-119.0,-0.64,-217.7 dir:-90 animpoint:pos
|
||||
[beh@surge_9]:beh@surge
|
||||
pt1 = 999999,animpoint_sit | pos:-117.6,-0.64,-216.3 dir:-90 animpoint:pos
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
[logic]
|
||||
active = ph_idle@play
|
||||
|
||||
[ph_idle@base]
|
||||
nonscript_usable = true
|
||||
|
||||
[ph_idle@play]:ph_idle@base
|
||||
on_info = %=play_sound(red_bridge_outpost_radio)%
|
||||
tips = Use
|
||||
on_use = %=stop_sound()% ph_idle@stop
|
||||
|
||||
[ph_idle@stop]:ph_idle@base
|
||||
tips = Use
|
||||
on_use = ph_idle@play
|
||||
|
||||
[collide]
|
||||
ignore_static
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
[logic]
|
||||
active = {=is_day()} ph_idle@play, ph_idle@stop
|
||||
|
||||
[ph_idle@play]
|
||||
nonscript_usable = false
|
||||
on_info = {=is_day()} %=play_sound(red_bridge_outpost_bar_dolg_speech)%, %=stop_sound()% ph_idle@stop
|
||||
|
||||
[ph_idle@stop]
|
||||
nonscript_usable = false
|
||||
on_info = {=is_day()} ph_idle@play
|
||||
|
||||
[collide]
|
||||
ignore_static
|
||||
|
|
@ -0,0 +1,143 @@
|
|||
[smart_terrain]
|
||||
squad_id = 11
|
||||
max_population = 12
|
||||
respawn_idle = 86400
|
||||
|
||||
;faction_controlled = army, bandit, csky, dolg, ecolog, freedom, killer, monolith, stalker, renegade, greh
|
||||
;default_faction = bandit
|
||||
;faction_respawn_num = 2
|
||||
|
||||
respawn_params = respawn@red_smart_terrain_bridge
|
||||
|
||||
[respawn@red_smart_terrain_bridge]
|
||||
spawn@npc_1
|
||||
spawn@npc_2
|
||||
spawn@npc_3
|
||||
spawn@guard_1
|
||||
spawn@guard_2
|
||||
spawn@visitor_1
|
||||
spawn@visitor_2
|
||||
spawn@visitor_3
|
||||
spawn@visitor_4
|
||||
spawn@outpost
|
||||
spawn@general
|
||||
|
||||
[spawn@npc_1]
|
||||
spawn_squads = squad_red_duty_outpost_trader
|
||||
spawn_num = {+red_bridge_outpost !squad_exist(squad_red_duty_outpost_trader)} 1, 0
|
||||
|
||||
[spawn@npc_2]
|
||||
spawn_squads = squad_red_duty_outpost_medic
|
||||
spawn_num = {+red_bridge_outpost !squad_exist(squad_red_duty_outpost_medic)} 1, 0
|
||||
|
||||
[spawn@npc_3]
|
||||
spawn_squads = squad_red_duty_outpost_guide
|
||||
spawn_num = {+red_bridge_outpost !squad_exist(squad_red_duty_outpost_guide)} 1, 0
|
||||
|
||||
[spawn@guard_1]
|
||||
spawn_squads = squad_red_duty_outpost_guard_1
|
||||
spawn_num = {+red_bridge_outpost !squad_exist(squad_red_duty_outpost_guard_1)} 1, 0
|
||||
|
||||
[spawn@guard_2]
|
||||
spawn_squads = squad_red_duty_outpost_guard_2
|
||||
spawn_num = {+red_bridge_outpost !squad_exist(squad_red_duty_outpost_guard_2)} 1, 0
|
||||
|
||||
[spawn@visitor_1]
|
||||
spawn_squads = squad_red_duty_outpost_visitor_1
|
||||
spawn_num = {+red_bridge_outpost !squad_exist(squad_red_duty_outpost_visitor_1)} 1, 0
|
||||
|
||||
[spawn@visitor_2]
|
||||
spawn_squads = squad_red_duty_outpost_visitor_2
|
||||
spawn_num = {+red_bridge_outpost !squad_exist(squad_red_duty_outpost_visitor_2)} 1, 0
|
||||
|
||||
[spawn@visitor_3]
|
||||
spawn_squads = squad_red_duty_outpost_visitor_3
|
||||
spawn_num = {+red_bridge_outpost !squad_exist(squad_red_duty_outpost_visitor_3)} 1, 0
|
||||
|
||||
[spawn@visitor_4]
|
||||
spawn_squads = squad_red_duty_outpost_visitor_4
|
||||
spawn_num = {+red_bridge_outpost !squad_exist(squad_red_duty_outpost_visitor_4)} 1, 0
|
||||
|
||||
[spawn@outpost]
|
||||
spawn_squads = stalker_sim_squad_advanced, stalker_sim_squad_veteran, duty_sim_squad_advanced, duty_sim_squad_veteran, csky_sim_squad_advanced, csky_sim_squad_veteran, ecolog_sim_squad_advanced, ecolog_sim_squad_veteran
|
||||
spawn_num = {+red_bridge_outpost} 2, 0
|
||||
|
||||
[spawn@general]
|
||||
spawn_squads = monolith_sim_squad_novice, monolith_sim_squad_advanced, monolith_sim_squad_veteran
|
||||
spawn_num = {-red_bridge_outpost} 2, 0
|
||||
|
||||
|
||||
[on_changing_level]
|
||||
on_info1 = %=script(gameplay_duty_outpost:clean_mess) =script(xr_dynamic_object:dynamic_object:misc\duty_outpost_object.ltx)%
|
||||
on_info2 = %=script(gameplay_duty_outpost:reinforce_squad:squad_red_duty_outpost_guard_1:1)%
|
||||
on_info3 = %=script(gameplay_duty_outpost:reinforce_squad:squad_red_duty_outpost_guard_2:1)%
|
||||
on_info4 = %=script(gameplay_duty_outpost:reinforce_squad:squad_red_duty_outpost_visitor_1:1)%
|
||||
on_info5 = %=script(gameplay_duty_outpost:reinforce_squad:squad_red_duty_outpost_visitor_2:1)%
|
||||
on_info6 = %=script(gameplay_duty_outpost:reinforce_squad:squad_red_duty_outpost_visitor_3:1)%
|
||||
on_info7 = %=script(gameplay_duty_outpost:reinforce_squad:squad_red_duty_outpost_visitor_4:1)%
|
||||
|
||||
[exclusive]
|
||||
guard_1 = red_forest\red_bridge_outpost_logic.ltx
|
||||
guard_2 = red_forest\red_bridge_outpost_logic.ltx
|
||||
guard_3 = red_forest\red_bridge_outpost_logic.ltx
|
||||
guard_4 = red_forest\red_bridge_outpost_logic.ltx
|
||||
guard_5 = red_forest\red_bridge_outpost_logic.ltx
|
||||
guard_6 = red_forest\red_bridge_outpost_logic.ltx
|
||||
guard_7 = red_forest\red_bridge_outpost_logic.ltx
|
||||
guard_8 = red_forest\red_bridge_outpost_logic.ltx
|
||||
guard_9 = red_forest\red_bridge_outpost_logic.ltx
|
||||
guard_10 = red_forest\red_bridge_outpost_logic.ltx
|
||||
guard_11 = red_forest\red_bridge_outpost_logic.ltx
|
||||
guard_12 = red_forest\red_bridge_outpost_logic.ltx
|
||||
guard_13 = red_forest\red_bridge_outpost_logic.ltx
|
||||
guard_14 = red_forest\red_bridge_outpost_logic.ltx
|
||||
|
||||
surge_tower_1 = red_forest\red_bridge_outpost_logic.ltx
|
||||
surge_tower_2 = red_forest\red_bridge_outpost_logic.ltx
|
||||
surge_tower_3 = red_forest\red_bridge_outpost_logic.ltx
|
||||
surge_tower_4 = red_forest\red_bridge_outpost_logic.ltx
|
||||
surge_tower_5 = red_forest\red_bridge_outpost_logic.ltx
|
||||
surge_tower_6 = red_forest\red_bridge_outpost_logic.ltx
|
||||
surge_tower_7 = red_forest\red_bridge_outpost_logic.ltx
|
||||
surge_tower_8 = red_forest\red_bridge_outpost_logic.ltx
|
||||
surge_tower_9 = red_forest\red_bridge_outpost_logic.ltx
|
||||
surge_tower_10 = red_forest\red_bridge_outpost_logic.ltx
|
||||
surge_tower_11 = red_forest\red_bridge_outpost_logic.ltx
|
||||
surge_tower_12 = red_forest\red_bridge_outpost_logic.ltx
|
||||
surge_tower_13 = red_forest\red_bridge_outpost_logic.ltx
|
||||
surge_tower_14 = red_forest\red_bridge_outpost_logic.ltx
|
||||
|
||||
|
||||
|
||||
|
||||
customer_1 = red_forest\red_bridge_outpost_logic.ltx
|
||||
customer_2 = red_forest\red_bridge_outpost_logic.ltx
|
||||
|
||||
wounded_1 = red_forest\red_bridge_outpost_logic.ltx
|
||||
wounded_2 = red_forest\red_bridge_outpost_logic.ltx
|
||||
wounded_3 = red_forest\red_bridge_outpost_logic.ltx
|
||||
|
||||
research_1 = red_forest\red_bridge_outpost_logic.ltx
|
||||
research_2 = red_forest\red_bridge_outpost_logic.ltx
|
||||
|
||||
drunk = red_forest\red_bridge_outpost_logic.ltx
|
||||
|
||||
outside_1 = red_forest\red_bridge_outpost_logic.ltx
|
||||
outside_2 = red_forest\red_bridge_outpost_logic.ltx
|
||||
outside_3 = red_forest\red_bridge_outpost_logic.ltx
|
||||
|
||||
visitor_1 = red_forest\red_bridge_outpost_logic.ltx
|
||||
visitor_2 = red_forest\red_bridge_outpost_logic.ltx
|
||||
visitor_3 = red_forest\red_bridge_outpost_logic.ltx
|
||||
visitor_4 = red_forest\red_bridge_outpost_logic.ltx
|
||||
visitor_5 = red_forest\red_bridge_outpost_logic.ltx
|
||||
visitor_6 = red_forest\red_bridge_outpost_logic.ltx
|
||||
visitor_7 = red_forest\red_bridge_outpost_logic.ltx
|
||||
visitor_8 = red_forest\red_bridge_outpost_logic.ltx
|
||||
|
||||
|
||||
visitor_10 = red_forest\red_bridge_outpost_logic.ltx
|
||||
visitor_11 = red_forest\red_bridge_outpost_logic.ltx
|
||||
visitor_12 = red_forest\red_bridge_outpost_logic.ltx
|
||||
visitor_13 = red_forest\red_bridge_outpost_logic.ltx
|
||||
visitor_14 = red_forest\red_bridge_outpost_logic.ltx
|
|
@ -0,0 +1,86 @@
|
|||
[section@squad]
|
||||
target@base = red_smart_terrain_bridge
|
||||
|
||||
[section@logic]
|
||||
logic@trader
|
||||
logic@medic
|
||||
logic@guide
|
||||
|
||||
|
||||
[logic@base]
|
||||
post_combat_time = 0,0
|
||||
combat_type = camper
|
||||
net_spawn = pt1
|
||||
dont_keep_items = true
|
||||
|
||||
[logic@trader]:logic@base
|
||||
suitable = {=check_npc_name(red_duty_outpost_trader)} true
|
||||
level_spot = trader
|
||||
trade = items\trade\trade_duty.ltx
|
||||
active = beh@trader
|
||||
|
||||
[logic@medic]:logic@base
|
||||
suitable = {=check_npc_name(red_duty_outpost_medic)} true
|
||||
level_spot = medic
|
||||
trade = items\trade\trade_generic_medic.ltx
|
||||
active = beh@medic
|
||||
|
||||
[logic@guide]:logic@base
|
||||
suitable = {=check_npc_name(red_duty_outpost_guide)} true
|
||||
level_spot = quest_npc
|
||||
active = beh@guide
|
||||
|
||||
;==================================================
|
||||
[beh@base]
|
||||
dont_keep_items = true
|
||||
gather_items_enabled = false
|
||||
target = waypoint
|
||||
path_end = loop
|
||||
walk_dist = 0
|
||||
jog_dist = 0
|
||||
run_anim = patrol
|
||||
meet = no_meet
|
||||
before_hit = invulnerable
|
||||
|
||||
combat_ignore_cond = {!is_enemy_actor !fighting_dist_le(40)} true
|
||||
enemy_ignore_cond = {!is_enemy_actor !fighting_dist_le(40)} true
|
||||
|
||||
[beh@animpoint]:beh@base
|
||||
target = %=animpoint()% nil
|
||||
|
||||
|
||||
[beh@trader]:beh@animpoint
|
||||
pt1 = 10000,fold_arms | pos:-117.6,0.47,-255.5 dir:180 animpoint:pos
|
||||
meet = meet@base
|
||||
|
||||
[beh@medic]:beh@animpoint
|
||||
pt1 = 10000,animpoint_sit_normal | pos:-103.6,-0.82,-183.4 dir:90 animpoint:pos
|
||||
meet = meet@base
|
||||
|
||||
[beh@guide]:beh@animpoint
|
||||
pt1 = 10000,binocular | pos:-119.7,4.72,-257.6 dir:90 animpoint:pos
|
||||
meet = meet@guide
|
||||
|
||||
|
||||
[meet@base]
|
||||
close_snd_hello = meet_hello
|
||||
close_snd_bye = nil
|
||||
close_anim = nil
|
||||
close_victim = nil
|
||||
close_distance = 0
|
||||
far_anim = nil
|
||||
far_victim = nil
|
||||
far_distance = 0
|
||||
meet_on_talking = false
|
||||
use = true
|
||||
|
||||
|
||||
[meet@no_sound]:meet@base
|
||||
close_snd_hello = nil
|
||||
|
||||
|
||||
[meet@guide]:meet@base
|
||||
close_anim = talk_default
|
||||
close_distance = 3
|
||||
close_victim = actor
|
||||
|
|
@ -0,0 +1,209 @@
|
|||
[section@squad]
|
||||
target@1 = {!has_task(duty_girl_hunting_chimera)} nil, {+duty_girl_hunting_chimera_dead} nil, {-duty_girl_hunting_chimera_move} gar_smart_terrain_6_3, gar_smart_terrain_2_4
|
||||
target@2 = {=has_task(duty_girl_monolith_elite) !check_task_stage(duty_girl_monolith_elite:3)} mil_smart_terrain_4_5
|
||||
target@4 = {=has_task(duty_girl_capture_the_brirge) !check_task_stage(duty_girl_capture_the_brirge:3)} red_smart_terrain_5_5
|
||||
target@z = {=between_time(6:18)} bar_zastava_2, {=between_time(19:23)} bar_dolg_general, bar_dolg_bunker
|
||||
|
||||
[section@logic]
|
||||
logic@idle
|
||||
|
||||
logic@drink
|
||||
logic@guard
|
||||
logic@surge
|
||||
logic@sleep
|
||||
|
||||
logic@hunt_chimera
|
||||
logic@monolith_elite
|
||||
logic@capture_the_brirge
|
||||
|
||||
|
||||
[beh@base]
|
||||
dont_keep_items = true
|
||||
gather_items_enabled = false
|
||||
help_wounded_enabled = false
|
||||
corpse_detection_enabled = false
|
||||
combat_ignore_keep_when_attacked = true
|
||||
target = waypoint
|
||||
path_end = loop
|
||||
walk_dist = 0
|
||||
jog_dist = 0
|
||||
run_anim = patrol
|
||||
meet = meet@base
|
||||
danger_ignore = true
|
||||
|
||||
|
||||
[beh@animpoint]:beh@base
|
||||
target = %=animpoint()% nil
|
||||
|
||||
[beh@rush_at_10]
|
||||
jog_dist = 10
|
||||
jog_anim = rush
|
||||
|
||||
|
||||
[logic@base]
|
||||
post_combat_time = 0,0
|
||||
level_spot = special
|
||||
net_spawn = pt1
|
||||
|
||||
[logic@idle]:logic@base
|
||||
suitable = true
|
||||
active = beh@idle
|
||||
prior = 0
|
||||
combat_type = camper
|
||||
|
||||
[logic@guard]:logic@base
|
||||
suitable = {=npc_on_level(l05_bar) =between_time(6:18)} true
|
||||
active = beh@guard
|
||||
prior = 100
|
||||
|
||||
[logic@drink]:logic@base
|
||||
suitable = {=npc_on_level(l05_bar) =between_time(19:23)} true
|
||||
active = beh@drink
|
||||
prior = 100
|
||||
|
||||
[logic@surge]:logic@base
|
||||
suitable = {=npc_on_level(l05_bar) =surge_started} true
|
||||
active = {=between_time(6:18)} beh@surge_1, beh@surge_2
|
||||
prior = 400
|
||||
|
||||
[logic@sleep]:logic@base
|
||||
suitable = {=npc_on_level(l05_bar) =between_time(0:5)} true
|
||||
active = beh@sleep
|
||||
prior = 500
|
||||
|
||||
|
||||
|
||||
[beh@idle]:beh@base
|
||||
target = %=script(xr_logic_ex:state_idle:guard)% nil
|
||||
meet = meet@idle
|
||||
|
||||
[beh@guard]:beh@animpoint,beh@rush_at_10
|
||||
pt1 = 999999,guard | pos:85.4,0.0,137.9 dir:90
|
||||
meet = meet@idle
|
||||
|
||||
[beh@drink]:beh@animpoint,beh@rush_at_10
|
||||
pt1 = 999999,animpoint_sit_low@random | pos:207.9,0.00,85.4 dir:135 animpoint:pos
|
||||
|
||||
[beh@surge_1]:beh@animpoint
|
||||
pt1 = 999999,sit_ass | pos:208.6,-0.62,114.1 dir:-90
|
||||
run_anim = rush
|
||||
[beh@surge_2]:beh@animpoint
|
||||
pt1 = 999999,sit_ass | pos:95.2,0.091,103.6 dir:90
|
||||
run_anim = rush
|
||||
|
||||
[beh@sleep]:beh@animpoint,beh@rush_at_10
|
||||
pt1 = 999999,sleep | pos:218.4,-5.13,123.2 dir:0
|
||||
meet = meet@sleep
|
||||
|
||||
|
||||
|
||||
|
||||
[logic@hunt_chimera]:logic@base
|
||||
suitable = {=npc_on_level(l02_garbage) =has_task(duty_girl_hunting_chimera) -duty_girl_hunting_chimera_dead} true
|
||||
active = {-duty_girl_hunting_chimera_move} beh@hunt_chimera_1, beh@hunt_chimera_2
|
||||
prior = 100
|
||||
combat_type = camper
|
||||
|
||||
[beh@hunt_chimera_1]:beh@animpoint,beh@rush_at_10
|
||||
pt1 = 999999,use_pda | pos:102.9,3.64,161.0 dir:45
|
||||
on_info1 = {+duty_girl_hunting_chimera_move !npc_talking} beh@hunt_chimera_2
|
||||
|
||||
[beh@hunt_chimera_2]:beh@animpoint
|
||||
pt1 = 999999,hide_na | pos:-235.2,0.42,11.2 dir:90
|
||||
run_anim = {=dist_to_beh(30)} sneak_run, {=dist_to_beh(60)} raid, rush
|
||||
meet = no_meet
|
||||
on_info1 = {-duty_girl_hunting_chimera_fight -duty_girl_hunting_chimera_hunt_1 =check_time_speech() =reach_beh()} %=speech(duty_girl_hunting_chimera_hunt_1:5) +duty_girl_hunting_chimera_hunt_1%
|
||||
on_info2 = {-duty_girl_hunting_chimera_fight -duty_girl_hunting_chimera_hunt_2 =check_time_speech() =reach_beh()} %=speech(duty_girl_hunting_chimera_hunt_2:5) +duty_girl_hunting_chimera_hunt_2%
|
||||
on_info3 = {-duty_girl_hunting_chimera_fight -duty_girl_hunting_chimera_hunt_3 =check_time_speech() =reach_beh()} %=speech(duty_girl_hunting_chimera_hunt_3:5) +duty_girl_hunting_chimera_hunt_3%
|
||||
|
||||
|
||||
|
||||
|
||||
[logic@monolith_elite]:logic@base
|
||||
suitable = {=npc_on_level(l07_military) =has_task(duty_girl_monolith_elite) -duty_girl_monolith_elite_dead} true
|
||||
active = {-duty_girl_monolith_elite_join} beh@monolith_elite_1, {-duty_girl_monolith_elite_move} beh@monolith_elite_2, beh@monolith_elite_3
|
||||
prior = 100
|
||||
combat_type = camper
|
||||
|
||||
[beh@monolith_elite_1]:beh@animpoint,beh@rush_at_10
|
||||
pt1 = 999999,guard_na | pos:-92.4,-20.66,219.8 dir:0
|
||||
on_info1 = {+duty_girl_monolith_elite_join !npc_talking !has_enemy} beh@monolith_elite_2
|
||||
on_info2 = {+duty_girl_monolith_elite_move} beh@monolith_elite_3
|
||||
combat_ignore_cond = {=enemy_squad(squad_duty_girl_monolith_elite)} true, {!fighting_dist_le(40)} true
|
||||
enemy_ignore_cond = {=enemy_squad(squad_duty_girl_monolith_elite)} true, {!fighting_dist_le(40)} true
|
||||
|
||||
[beh@monolith_elite_2]:beh@animpoint,beh@rush_at_10
|
||||
pt1 = 999999,guard_na | pos:-92.4,-20.66,219.8 dir:0
|
||||
meet = no_meet
|
||||
on_info1 = {-duty_girl_monolith_elite_move -duty_girl_monolith_elite_move_1 =check_time_speech() =reach_beh()} %=speech(duty_girl_monolith_elite_move_1:5) +duty_girl_monolith_elite_move_1%
|
||||
on_info2 = {-duty_girl_monolith_elite_move -duty_girl_monolith_elite_move_2 =check_time_speech() =reach_beh()} %=speech(duty_girl_monolith_elite_move_2:5) +duty_girl_monolith_elite_move_2%
|
||||
on_info3 = {-duty_girl_monolith_elite_move -duty_girl_monolith_elite_move_3 =check_time_speech() =reach_beh()} %=speech(duty_girl_monolith_elite_move_3:5) +duty_girl_monolith_elite_move_3%
|
||||
on_info4 = {-duty_girl_monolith_elite_move +duty_girl_monolith_elite_move_3} %+duty_girl_monolith_elite_move%
|
||||
on_info5 = {+duty_girl_monolith_elite_move} beh@monolith_elite_3
|
||||
combat_ignore_cond = true
|
||||
enemy_ignore_cond = true
|
||||
|
||||
[beh@monolith_elite_3]:beh@animpoint
|
||||
pt1 = 999999,hide | pos:-56.0,-19.94,354.9 dir:45
|
||||
run_anim = assault
|
||||
meet = no_meet
|
||||
|
||||
|
||||
|
||||
|
||||
[logic@capture_the_brirge]:logic@base
|
||||
suitable = {=npc_on_level(l10_red_forest) =has_task(duty_girl_capture_the_brirge) -duty_girl_capture_the_brirge_dead} true
|
||||
active = {-duty_girl_capture_the_brirge_join} beh@capture_the_brirge_1, {-duty_girl_capture_the_brirge_move} beh@capture_the_brirge_2, beh@capture_the_brirge_3
|
||||
prior = 100
|
||||
combat_type = camper
|
||||
|
||||
[beh@capture_the_brirge_1]:beh@animpoint,beh@rush_at_10
|
||||
pt1 = 999999,guard_na | pos:-15.4,-0.85,-328.3 dir:-90
|
||||
on_info1 = {+duty_girl_capture_the_brirge_join !npc_talking !has_enemy} beh@capture_the_brirge_2
|
||||
on_info2 = {+duty_girl_capture_the_brirge_move} beh@capture_the_brirge_3
|
||||
combat_ignore_cond = {=enemy_squad(squad_duty_girl_capture_the_brirge)} true
|
||||
enemy_ignore_cond = {=enemy_squad(squad_duty_girl_capture_the_brirge)} true
|
||||
|
||||
[beh@capture_the_brirge_2]:beh@animpoint,beh@rush_at_10
|
||||
pt1 = 999999,guard_na | pos:-15.4,-0.85,-328.3 dir:-90
|
||||
meet = no_meet
|
||||
on_info1 = {-duty_girl_capture_the_brirge_move -duty_girl_capture_the_brirge_move_1 =check_time_speech() =reach_beh()} %=speech(duty_girl_capture_the_brirge_move_1:5) +duty_girl_capture_the_brirge_move_1%
|
||||
on_info2 = {-duty_girl_capture_the_brirge_move -duty_girl_capture_the_brirge_move_2 =check_time_speech() =reach_beh()} %=speech(duty_girl_capture_the_brirge_move_2:5) +duty_girl_capture_the_brirge_move_2%
|
||||
on_info3 = {-duty_girl_capture_the_brirge_move -duty_girl_capture_the_brirge_move_3 =check_time_speech() =reach_beh()} %=speech(duty_girl_capture_the_brirge_move_3:5) +duty_girl_capture_the_brirge_move_3%
|
||||
on_info4 = {-duty_girl_capture_the_brirge_move +duty_girl_capture_the_brirge_move_3} %+duty_girl_capture_the_brirge_move%
|
||||
on_info5 = {+duty_girl_capture_the_brirge_move} beh@capture_the_brirge_3
|
||||
combat_ignore_cond = true
|
||||
enemy_ignore_cond = true
|
||||
|
||||
[beh@capture_the_brirge_3]:beh@animpoint
|
||||
pt1 = 999999,hide | pos:-106.4,0.46,-291.2 dir:-30
|
||||
run_anim = assault
|
||||
meet = no_meet
|
||||
|
||||
|
||||
|
||||
|
||||
[meet@base]
|
||||
close_snd_hello = meet_hello
|
||||
close_snd_bye = nil
|
||||
close_anim = nil
|
||||
close_victim = nil
|
||||
close_distance = 0
|
||||
far_anim = nil
|
||||
far_victim = nil
|
||||
far_distance = 0
|
||||
meet_on_talking = false
|
||||
use = true
|
||||
|
||||
[meet@idle]:meet@base
|
||||
close_anim = guard_na
|
||||
close_distance = 3
|
||||
close_victim = actor
|
||||
|
||||
[meet@sleep]:meet@base
|
||||
close_snd_hello = nil
|
||||
close_anim = talk_default
|
||||
close_victim = actor
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,341 @@
|
|||
[section@squad]
|
||||
target@base = {=check_squad_section(squad_duty_girl_capture_the_brirge_mono)} red_smart_terrain_bridge, red_smart_terrain_5_5
|
||||
condlist = {+duty_girl_capture_the_brirge_dead !actor_on_level(l10_red_forest)} %=script(task_duty_girl:capture_the_brirge_spawn_outpost) =squad_self_release()%
|
||||
|
||||
[section@logic]
|
||||
logic@monolith_frontline_1
|
||||
logic@monolith_frontline_2
|
||||
logic@monolith_frontline_3
|
||||
logic@monolith_frontline_4
|
||||
logic@monolith_frontline_5
|
||||
logic@monolith_frontline_6
|
||||
logic@monolith_frontline_7
|
||||
logic@monolith_frontline_8
|
||||
logic@monolith_frontline_9
|
||||
logic@monolith_frontline_10
|
||||
|
||||
logic@monolith_1
|
||||
logic@monolith_2
|
||||
logic@monolith_3
|
||||
logic@monolith_4
|
||||
logic@monolith_5
|
||||
logic@monolith_6
|
||||
logic@monolith_7
|
||||
logic@monolith_8
|
||||
logic@monolith_9
|
||||
logic@monolith_10
|
||||
|
||||
logic@duty_1
|
||||
logic@duty_2
|
||||
logic@duty_3
|
||||
logic@duty_4
|
||||
logic@duty_5
|
||||
logic@duty_6
|
||||
logic@duty_7
|
||||
logic@duty_8
|
||||
logic@duty_9
|
||||
|
||||
logic@duty_combat_1
|
||||
logic@duty_combat_2
|
||||
logic@duty_combat_3
|
||||
logic@duty_combat_4
|
||||
logic@duty_combat_5
|
||||
logic@duty_combat_6
|
||||
logic@duty_combat_7
|
||||
logic@duty_combat_8
|
||||
logic@duty_combat_9
|
||||
|
||||
|
||||
|
||||
|
||||
[logic@base]
|
||||
post_combat_time = 0,0
|
||||
net_spawn = pt1
|
||||
|
||||
[logic@combat_camper]
|
||||
combat_type = camper
|
||||
|
||||
[logic@monolith]:logic@base
|
||||
suitable = {=check_npc_name(sim_default_monolith)} true
|
||||
|
||||
[logic@monolith_frontline]:logic@monolith
|
||||
prior = 100
|
||||
|
||||
[logic@monolith_frontline_1]:logic@monolith_frontline,logic@combat_camper
|
||||
active = beh@monolith_frontline_1
|
||||
[logic@monolith_frontline_2]:logic@monolith_frontline
|
||||
active = beh@monolith_frontline_2
|
||||
[logic@monolith_frontline_3]:logic@monolith_frontline,logic@combat_camper
|
||||
active = beh@monolith_frontline_3
|
||||
[logic@monolith_frontline_4]:logic@monolith_frontline
|
||||
active = beh@monolith_frontline_4
|
||||
[logic@monolith_frontline_5]:logic@monolith_frontline
|
||||
active = beh@monolith_frontline_5
|
||||
[logic@monolith_frontline_6]:logic@monolith_frontline,logic@combat_camper
|
||||
active = beh@monolith_frontline_6
|
||||
[logic@monolith_frontline_7]:logic@monolith_frontline
|
||||
active = beh@monolith_frontline_7
|
||||
[logic@monolith_frontline_8]:logic@monolith_frontline
|
||||
active = beh@monolith_frontline_8
|
||||
prior = 50
|
||||
[logic@monolith_frontline_9]:logic@monolith_frontline
|
||||
active = beh@monolith_frontline_9
|
||||
prior = 50
|
||||
[logic@monolith_frontline_10]:logic@monolith_frontline
|
||||
active = beh@monolith_frontline_10
|
||||
prior = 50
|
||||
|
||||
|
||||
|
||||
[logic@monolith_1]:logic@monolith
|
||||
active = beh@monolith_1
|
||||
[logic@monolith_2]:logic@monolith
|
||||
active = beh@monolith_2
|
||||
[logic@monolith_3]:logic@monolith
|
||||
active = beh@monolith_3
|
||||
[logic@monolith_4]:logic@monolith
|
||||
active = beh@monolith_4
|
||||
[logic@monolith_5]:logic@monolith
|
||||
active = beh@monolith_5
|
||||
[logic@monolith_6]:logic@monolith
|
||||
active = beh@monolith_6
|
||||
[logic@monolith_7]:logic@monolith
|
||||
active = beh@monolith_7
|
||||
[logic@monolith_8]:logic@monolith
|
||||
active = beh@monolith_8
|
||||
[logic@monolith_9]:logic@monolith
|
||||
active = beh@monolith_9
|
||||
[logic@monolith_10]:logic@monolith
|
||||
active = beh@monolith_10
|
||||
|
||||
|
||||
|
||||
|
||||
[logic@duty]:logic@base,logic@combat_camper
|
||||
suitable = {-duty_girl_capture_the_brirge_move =check_npc_name(sim_default_duty)} true
|
||||
|
||||
[logic@lone]:logic@base,logic@combat_camper
|
||||
suitable = {-duty_girl_capture_the_brirge_move =check_npc_name(sim_default_stal)} true
|
||||
|
||||
[logic@duty_1]:logic@duty
|
||||
active = beh@duty_1
|
||||
[logic@duty_2]:logic@duty
|
||||
active = beh@duty_2
|
||||
[logic@duty_3]:logic@duty
|
||||
active = beh@duty_3
|
||||
[logic@duty_4]:logic@duty
|
||||
active = beh@duty_4
|
||||
[logic@duty_5]:logic@duty
|
||||
active = beh@duty_5
|
||||
[logic@duty_6]:logic@duty
|
||||
active = beh@duty_6
|
||||
[logic@duty_7]:logic@lone
|
||||
active = beh@duty_7
|
||||
[logic@duty_8]:logic@lone
|
||||
active = beh@duty_8
|
||||
[logic@duty_9]:logic@lone
|
||||
active = beh@duty_9
|
||||
|
||||
|
||||
[logic@duty_combat]:logic@base
|
||||
suitable = {+duty_girl_capture_the_brirge_move =check_npc_name(sim_default_duty)} true
|
||||
|
||||
[logic@lone_combat]:logic@base
|
||||
suitable = {+duty_girl_capture_the_brirge_move =check_npc_name(sim_default_stal)} true
|
||||
|
||||
[logic@duty_combat_1]:logic@duty_combat
|
||||
active = {-duty_girl_capture_the_brirge_dead} beh@duty_combat_1, beh@duty_guard_1
|
||||
[logic@duty_combat_2]:logic@duty_combat
|
||||
active = {-duty_girl_capture_the_brirge_dead} beh@duty_combat_2, beh@duty_guard_2
|
||||
[logic@duty_combat_3]:logic@duty_combat
|
||||
active = {-duty_girl_capture_the_brirge_dead} beh@duty_combat_3, beh@duty_guard_3
|
||||
[logic@duty_combat_4]:logic@duty_combat
|
||||
active = {-duty_girl_capture_the_brirge_dead} beh@duty_combat_4, beh@duty_guard_4
|
||||
[logic@duty_combat_5]:logic@duty_combat
|
||||
active = {-duty_girl_capture_the_brirge_dead} beh@duty_combat_5, beh@duty_guard_5
|
||||
[logic@duty_combat_6]:logic@duty_combat
|
||||
active = {-duty_girl_capture_the_brirge_dead} beh@duty_combat_6, beh@duty_guard_6
|
||||
[logic@duty_combat_7]:logic@lone_combat
|
||||
active = {-duty_girl_capture_the_brirge_dead} beh@duty_combat_7, beh@duty_guard_7
|
||||
[logic@duty_combat_8]:logic@lone_combat
|
||||
active = {-duty_girl_capture_the_brirge_dead} beh@duty_combat_8, beh@duty_guard_8
|
||||
[logic@duty_combat_9]:logic@lone_combat
|
||||
active = {-duty_girl_capture_the_brirge_dead} beh@duty_combat_9, beh@duty_guard_9
|
||||
|
||||
;==================================================
|
||||
[beh@base]
|
||||
dont_keep_items = true
|
||||
gather_items_enabled = false
|
||||
help_wounded_enabled = false
|
||||
corpse_detection_enabled = false
|
||||
combat_ignore_keep_when_attacked = true
|
||||
target = waypoint
|
||||
path_end = loop
|
||||
walk_dist = 0
|
||||
jog_dist = 0
|
||||
run_anim = patrol
|
||||
meet = no_meet
|
||||
|
||||
before_hit = task_duty_girl@capture_the_brirge_hit
|
||||
danger_ignore = true
|
||||
|
||||
|
||||
|
||||
[beh@animpoint]:beh@base
|
||||
target = %=animpoint()% nil
|
||||
|
||||
[beh@combat_camper_stand]
|
||||
combat_camper_state_fire = threat_fire
|
||||
combat_camper_state_look = threat
|
||||
combat_ignore_cond = {!reach_beh()} true, {-duty_girl_capture_the_brirge_move =enemy_squad(squad_duty_girl_capture_the_brirge)} true
|
||||
|
||||
[beh@monolith_frontline]:beh@animpoint
|
||||
run_anim = assault
|
||||
combat_ignore_cond = {-duty_girl_capture_the_brirge_move =enemy_squad(squad_duty_girl_capture_the_brirge)} true
|
||||
enemy_ignore_cond = {-duty_girl_capture_the_brirge_move =enemy_squad(squad_duty_girl_capture_the_brirge)} true
|
||||
;combat_ignore_cond = true
|
||||
;enemy_ignore_cond = true
|
||||
|
||||
[beh@monolith_frontline_1]:beh@monolith_frontline,beh@combat_camper_stand
|
||||
pt1 = 999999,guard | pos:-101.5,1.75,-249.2 dir:180
|
||||
[beh@monolith_frontline_2]:beh@monolith_frontline
|
||||
pt1 = 999999,hide | pos:-102.9,2.73,-249.2 dir:180
|
||||
[beh@monolith_frontline_3]:beh@monolith_frontline,beh@combat_camper_stand
|
||||
pt1 = 999999,guard | pos:-121.8,4.72,-261.8 dir:-150
|
||||
[beh@monolith_frontline_4]:beh@monolith_frontline
|
||||
pt1 = 999999,hide | pos:-113.4,4.72,-261.8 dir:-150
|
||||
[beh@monolith_frontline_5]:beh@monolith_frontline
|
||||
pt1 = 999999,guard | pos:-114.1,0.10,-265.3 dir:-150
|
||||
[beh@monolith_frontline_6]:beh@monolith_frontline,beh@combat_camper_stand
|
||||
pt1 = 999999,guard | pos:-110.6,-0.40,-248.5 dir:-150
|
||||
[beh@monolith_frontline_7]:beh@monolith_frontline
|
||||
pt1 = 999999,guard | pos:-107.8,-0.30,-242.9 dir:-150
|
||||
[beh@monolith_frontline_8]:beh@monolith_frontline
|
||||
pt1 = 999999,hide | pos:-111.3,-0.12,-259.7 dir:-150
|
||||
[beh@monolith_frontline_9]:beh@monolith_frontline
|
||||
pt1 = 999999,hide | pos:-113.4,-0.02,-261.8 dir:-150
|
||||
[beh@monolith_frontline_10]:beh@monolith_frontline
|
||||
pt1 = 999999,hide | pos:-114.8,-0.19,-251.3 dir:-150
|
||||
|
||||
|
||||
[beh@monolith]:beh@animpoint
|
||||
run_anim = assault
|
||||
combat_ignore_cond = {!fighting_dist_le(40)} true, {-duty_girl_capture_the_brirge_move =enemy_squad(squad_duty_girl_capture_the_brirge)} true
|
||||
enemy_ignore_cond = {!fighting_dist_le(40)} true, {-duty_girl_capture_the_brirge_move =enemy_squad(squad_duty_girl_capture_the_brirge)} true
|
||||
;combat_ignore_cond = true
|
||||
;enemy_ignore_cond = true
|
||||
|
||||
[beh@monolith_1]:beh@monolith
|
||||
pt1 = 999999,hide | pos:-98.0,0.00,-235.2 dir:180
|
||||
[beh@monolith_2]:beh@monolith
|
||||
pt1 = 999999,hide | pos:-99.4,0.00,-233.8 dir:180
|
||||
[beh@monolith_3]:beh@monolith
|
||||
pt1 = 999999,hide | pos:-100.1,0.00,-235.9 dir:180
|
||||
[beh@monolith_4]:beh@monolith
|
||||
pt1 = 999999,hide | pos:-101.5,0.00,-236.6 dir:180
|
||||
[beh@monolith_5]:beh@monolith
|
||||
pt1 = 999999,hide | pos:-120.4,-0.64,-224.7 dir:180
|
||||
[beh@monolith_6]:beh@monolith
|
||||
pt1 = 999999,hide | pos:-120.4,-0.64,-222.6 dir:180
|
||||
[beh@monolith_7]:beh@monolith
|
||||
pt1 = 999999,hide | pos:-116.9,-0.64,-225.4 dir:180
|
||||
[beh@monolith_8]:beh@monolith
|
||||
pt1 = 999999,hide | pos:-112.7,-0.64,-217.0 dir:180
|
||||
[beh@monolith_9]:beh@monolith
|
||||
pt1 = 999999,hide | pos:-114.8,-0.64,-223.3 dir:180
|
||||
[beh@monolith_10]:beh@monolith
|
||||
pt1 = 999999,hide | pos:-116.2,-0.64,-220.5 dir:180
|
||||
|
||||
|
||||
|
||||
|
||||
[beh@duty]:beh@animpoint
|
||||
run_anim = rush
|
||||
combat_ignore_cond = {=is_enemy_actor()} true, {!dist_to_beh(30)} true
|
||||
|
||||
[beh@duty_1]:beh@duty
|
||||
pt1 = 999999,salut | pos:-13.3,-0.80,-326.2 dir:90
|
||||
on_info = {+duty_girl_capture_the_brirge_move} beh@duty_combat_1
|
||||
[beh@duty_2]:beh@duty
|
||||
pt1 = 999999,salut | pos:-13.3,-0.80,-327.6 dir:90
|
||||
on_info = {+duty_girl_capture_the_brirge_move} beh@duty_combat_2
|
||||
[beh@duty_3]:beh@duty
|
||||
pt1 = 999999,salut | pos:-13.3,-0.80,-329.0 dir:90
|
||||
on_info = {+duty_girl_capture_the_brirge_move} beh@duty_combat_3
|
||||
[beh@duty_4]:beh@duty
|
||||
pt1 = 999999,salut | pos:-13.3,-0.80,-330.4 dir:90
|
||||
on_info = {+duty_girl_capture_the_brirge_move} beh@duty_combat_4
|
||||
[beh@duty_5]:beh@duty
|
||||
pt1 = 999999,hide | pos:-9.1,-1.00,-320.6 dir:0
|
||||
on_info = {+duty_girl_capture_the_brirge_move} beh@duty_combat_5
|
||||
[beh@duty_6]:beh@duty
|
||||
pt1 = 999999,hide | pos:-11.9,-1.00,-321.3 dir:30
|
||||
on_info = {+duty_girl_capture_the_brirge_move} beh@duty_combat_6
|
||||
[beh@duty_7]:beh@duty
|
||||
pt1 = 999999,hide | pos:-11.2,3.00,-323.4 dir:30
|
||||
on_info = {+duty_girl_capture_the_brirge_move} beh@duty_combat_7
|
||||
[beh@duty_8]:beh@duty
|
||||
pt1 = 999999,hide | pos:-9.8,-0.98,-333.9 dir:180
|
||||
on_info = {+duty_girl_capture_the_brirge_move} beh@duty_combat_8
|
||||
[beh@duty_9]:beh@duty
|
||||
pt1 = 999999,hide | pos:-19.6,-0.82,-326.9 dir:30
|
||||
on_info = {+duty_girl_capture_the_brirge_move} beh@duty_combat_9
|
||||
|
||||
|
||||
|
||||
|
||||
[beh@duty_combat]:beh@animpoint
|
||||
combat_ignore_cond = {=is_enemy_actor()} true
|
||||
run_anim = assault
|
||||
|
||||
[beh@duty_combat_1]:beh@duty_combat
|
||||
pt1 = 999999,hide | pos:-109.9,0.38,-293.3 dir:-30
|
||||
on_info = {+duty_girl_capture_the_brirge_dead} beh@duty_guard_1
|
||||
[beh@duty_combat_2]:beh@duty_combat
|
||||
pt1 = 999999,hide | pos:-108.5,0.40,-292.6 dir:-30
|
||||
on_info = {+duty_girl_capture_the_brirge_dead} beh@duty_guard_2
|
||||
[beh@duty_combat_3]:beh@duty_combat
|
||||
pt1 = 999999,hide | pos:-112.7,-0.22,-287.7 dir:-30
|
||||
on_info = {+duty_girl_capture_the_brirge_dead} beh@duty_guard_3
|
||||
[beh@duty_combat_4]:beh@duty_combat
|
||||
pt1 = 999999,hide | pos:-102.2,0.25,-284.2 dir:-30
|
||||
on_info = {+duty_girl_capture_the_brirge_dead} beh@duty_guard_4
|
||||
[beh@duty_combat_5]:beh@duty_combat
|
||||
pt1 = 999999,hide | pos:-95.2,2.85,-303.1 dir:-30
|
||||
on_info = {+duty_girl_capture_the_brirge_dead} beh@duty_guard_5
|
||||
[beh@duty_combat_6]:beh@duty_combat
|
||||
pt1 = 999999,hide | pos:-84.7,2.27,-294.0 dir:0
|
||||
on_info = {+duty_girl_capture_the_brirge_dead} beh@duty_guard_6
|
||||
[beh@duty_combat_7]:beh@duty_combat
|
||||
pt1 = 999999,hide | pos:-84.0,2.48,-292.6 dir:30
|
||||
on_info = {+duty_girl_capture_the_brirge_dead} beh@duty_guard_7
|
||||
[beh@duty_combat_8]:beh@duty_combat
|
||||
pt1 = 999999,hide | pos:-84.0,2.24,-284.9 dir:30
|
||||
on_info = {+duty_girl_capture_the_brirge_dead} beh@duty_guard_8
|
||||
[beh@duty_combat_9]:beh@duty_combat
|
||||
pt1 = 999999,hide | pos:-91.7,0.12,-271.6 dir:30
|
||||
on_info = {+duty_girl_capture_the_brirge_dead} beh@duty_guard_9
|
||||
|
||||
|
||||
[beh@duty_guard]:beh@animpoint
|
||||
combat_ignore_cond = {=is_enemy_actor()} true
|
||||
|
||||
[beh@duty_guard_1]:beh@duty_guard
|
||||
pt1 = 999999,sit_ass | pos:-104.3,0.30,-269.5 look:-105.7,0.30,-270.9
|
||||
[beh@duty_guard_2]:beh@duty_guard
|
||||
pt1 = 999999,sit_ass | pos:-104.3,0.30,-270.9 look:-105.7,0.30,-270.9
|
||||
[beh@duty_guard_3]:beh@duty_guard
|
||||
pt1 = 999999,sit_ass | pos:-104.3,0.30,-272.3 look:-105.7,0.30,-270.9
|
||||
[beh@duty_guard_4]:beh@duty_guard
|
||||
pt1 = 999999,sit_ass | pos:-107.1,0.30,-268.8 look:-105.7,0.30,-270.9
|
||||
[beh@duty_guard_5]:beh@duty_guard
|
||||
pt1 = 999999,sit_ass | pos:-107.8,0.30,-270.2 look:-105.7,0.30,-270.9
|
||||
[beh@duty_guard_6]:beh@duty_guard
|
||||
pt1 = 999999,sit_ass | pos:-107.8,0.30,-271.6 look:-105.7,0.30,-270.9
|
||||
[beh@duty_guard_7]:beh@duty_guard
|
||||
pt1 = 999999,sit_ass | pos:-107.1,0.30,-273.0 look:-105.7,0.30,-270.9
|
||||
[beh@duty_guard_8]:beh@duty_guard
|
||||
pt1 = 999999,sit_ass | pos:-105.7,0.30,-273.7 look:-105.7,0.30,-270.9
|
||||
[beh@duty_guard_9]:beh@duty_guard
|
||||
pt1 = 999999,sit_ass | pos:-105.0,0.30,-268.8 look:-105.7,0.30,-270.9
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
[section@squad]
|
||||
target@base = gar_smart_terrain_2_4
|
||||
|
||||
[section@logic]
|
||||
logic@general
|
||||
|
||||
[logic@base]
|
||||
net_spawn = pt1
|
||||
|
||||
[logic@general]:logic@base
|
||||
active = mob_home@general
|
||||
|
||||
;==================================================
|
||||
[mob_home@base]
|
||||
target = %=mutant_path%
|
||||
before_hit = task_duty_girl@hunting_chimera_hit
|
||||
combat_ignore_cond = {+duty_girl_hunting_chimera_fight} false, {=fighting_dist_le(20)} false, true
|
||||
enemy_ignore_cond = {+duty_girl_hunting_chimera_fight} false, {=fighting_dist_le(20)} false, true
|
||||
on_info1 = {-duty_girl_hunting_chimera_fight =see_actor() =dist_to_actor_le(20)} %+duty_girl_hunting_chimera_fight%
|
||||
on_sound1 = actor|WPN_shoot|30|0| {-duty_girl_hunting_chimera_fight} %+duty_girl_hunting_chimera_fight%
|
||||
on_sound2 = actor|WPN_hit|10|0| {-duty_girl_hunting_chimera_fight} %+duty_girl_hunting_chimera_fight%
|
||||
on_sound3 = actor|WPN_empty|10|0| {-duty_girl_hunting_chimera_fight} %+duty_girl_hunting_chimera_fight%
|
||||
on_sound4 = actor|WPN_reload|10|0| {-duty_girl_hunting_chimera_fight} %+duty_girl_hunting_chimera_fight%
|
||||
|
||||
[mob_home@general]:mob_home@base
|
||||
pt1 = pos:-271.6,0.42,23.8 dir:0
|
||||
move_animation = run
|
||||
wait_animation = sleep
|
||||
on_info = {!dist_to_beh(100)} mob_home@return
|
||||
|
||||
[mob_home@return]:mob_home@base
|
||||
pt1 = pos:-271.6,0.42,23.8 dir:0
|
||||
on_info = {=dist_to_beh(20)} mob_home@general
|
||||
combat_ignore_cond = true
|
|
@ -0,0 +1,196 @@
|
|||
[section@squad]
|
||||
target@base = {=check_squad_section(squad_duty_girl_monolith_elite_mono)} mil_smart_terrain_2_6, mil_smart_terrain_4_5
|
||||
condlist = {+duty_girl_monolith_elite_dead !actor_on_level(l07_military)} %=squad_self_release()%
|
||||
|
||||
[section@logic]
|
||||
logic@monolith_1
|
||||
logic@monolith_2
|
||||
logic@monolith_3
|
||||
logic@monolith_4
|
||||
logic@monolith_5
|
||||
logic@monolith_6
|
||||
logic@monolith_7
|
||||
logic@monolith_8
|
||||
logic@monolith_9
|
||||
|
||||
logic@duty_1
|
||||
logic@duty_2
|
||||
logic@duty_3
|
||||
logic@duty_4
|
||||
logic@duty_5
|
||||
logic@duty_6
|
||||
|
||||
logic@duty_combat_1
|
||||
logic@duty_combat_2
|
||||
logic@duty_combat_3
|
||||
logic@duty_combat_4
|
||||
logic@duty_combat_5
|
||||
logic@duty_combat_6
|
||||
|
||||
|
||||
|
||||
|
||||
[logic@base]
|
||||
post_combat_time = 0,0
|
||||
net_spawn = pt1
|
||||
|
||||
[logic@combat_camper]
|
||||
combat_type = camper
|
||||
|
||||
[logic@monolith]:logic@base
|
||||
suitable = {=check_npc_name(sim_default_monolith)} true
|
||||
|
||||
[logic@monolith_1]:logic@monolith,logic@combat_camper
|
||||
active = beh@monolith_1
|
||||
[logic@monolith_2]:logic@monolith,logic@combat_camper
|
||||
active = beh@monolith_2
|
||||
[logic@monolith_3]:logic@monolith,logic@combat_camper
|
||||
active = beh@monolith_3
|
||||
[logic@monolith_4]:logic@monolith
|
||||
active = beh@monolith_4
|
||||
[logic@monolith_5]:logic@monolith
|
||||
active = beh@monolith_5
|
||||
[logic@monolith_6]:logic@monolith
|
||||
active = beh@monolith_6
|
||||
[logic@monolith_7]:logic@monolith
|
||||
active = beh@monolith_7
|
||||
[logic@monolith_8]:logic@monolith
|
||||
active = beh@monolith_8
|
||||
[logic@monolith_9]:logic@monolith
|
||||
active = beh@monolith_9
|
||||
|
||||
;==================================================
|
||||
[beh@base]
|
||||
dont_keep_items = true
|
||||
gather_items_enabled = false
|
||||
help_wounded_enabled = false
|
||||
corpse_detection_enabled = false
|
||||
combat_ignore_keep_when_attacked = true
|
||||
target = waypoint
|
||||
path_end = loop
|
||||
walk_dist = 0
|
||||
jog_dist = 0
|
||||
run_anim = patrol
|
||||
meet = no_meet
|
||||
|
||||
|
||||
|
||||
[beh@animpoint]:beh@base
|
||||
target = %=animpoint()% nil
|
||||
|
||||
[beh@monolith]:beh@animpoint
|
||||
before_hit = task_duty_girl@monolith_elite_hit
|
||||
run_anim = rush
|
||||
combat_ignore_cond = {-duty_girl_monolith_elite_move =enemy_squad(squad_duty_girl_monolith_elite)} true
|
||||
enemy_ignore_cond = {-duty_girl_monolith_elite_move =enemy_squad(squad_duty_girl_monolith_elite)} true
|
||||
|
||||
[beh@monolith_1]:beh@monolith
|
||||
pt1 = 999999,hide | pos:-58.8,-12.53,396.9 dir:180
|
||||
[beh@monolith_2]:beh@monolith
|
||||
pt1 = 999999,hide | pos:-80.5,-8.89,404.6 dir:180
|
||||
[beh@monolith_3]:beh@monolith
|
||||
pt1 = 999999,hide | pos:-123.2,-14.45,380.1 dir:180
|
||||
[beh@monolith_4]:beh@monolith
|
||||
pt1 = 999999,hide | pos:-85.4,-10.55,391.3 dir:180
|
||||
[beh@monolith_5]:beh@monolith
|
||||
pt1 = 999999,hide | pos:-87.5,-10.71,391.3 dir:180
|
||||
[beh@monolith_6]:beh@monolith
|
||||
pt1 = 999999,hide | pos:-86.1,-10.50,392.0 dir:180
|
||||
[beh@monolith_7]:beh@monolith
|
||||
pt1 = 999999,hide | pos:-72.8,-13.48,387.8 dir:180
|
||||
[beh@monolith_8]:beh@monolith
|
||||
pt1 = 999999,hide | pos:-69.3,-15.30,387.1 dir:180
|
||||
[beh@monolith_9]:beh@monolith
|
||||
pt1 = 999999,hide | pos:-71.4,-14.19,387.8 dir:180
|
||||
|
||||
|
||||
|
||||
|
||||
[logic@duty]:logic@base,logic@combat_camper
|
||||
suitable = {-duty_girl_monolith_elite_move =check_npc_name(sim_default_duty)} true
|
||||
|
||||
[logic@duty_1]:logic@duty
|
||||
active = beh@duty_1
|
||||
[logic@duty_2]:logic@duty
|
||||
active = beh@duty_2
|
||||
[logic@duty_3]:logic@duty
|
||||
active = beh@duty_3
|
||||
[logic@duty_4]:logic@duty
|
||||
active = beh@duty_4
|
||||
[logic@duty_5]:logic@duty
|
||||
active = beh@duty_5
|
||||
[logic@duty_6]:logic@duty
|
||||
active = beh@duty_6
|
||||
|
||||
|
||||
[logic@duty_combat]:logic@base
|
||||
suitable = {+duty_girl_monolith_elite_move =check_npc_name(sim_default_duty)} true
|
||||
|
||||
[logic@duty_combat_1]:logic@duty_combat
|
||||
active = {-duty_girl_monolith_elite_dead} beh@duty_combat_1, beh@duty_guard_1
|
||||
[logic@duty_combat_2]:logic@duty_combat
|
||||
active = {-duty_girl_monolith_elite_dead} beh@duty_combat_2, beh@duty_guard_2
|
||||
[logic@duty_combat_3]:logic@duty_combat
|
||||
active = {-duty_girl_monolith_elite_dead} beh@duty_combat_3, beh@duty_guard_3
|
||||
[logic@duty_combat_4]:logic@duty_combat
|
||||
active = {-duty_girl_monolith_elite_dead} beh@duty_combat_4, beh@duty_guard_4
|
||||
[logic@duty_combat_5]:logic@duty_combat
|
||||
active = {-duty_girl_monolith_elite_dead} beh@duty_combat_5, beh@duty_guard_5
|
||||
[logic@duty_combat_6]:logic@duty_combat
|
||||
active = {-duty_girl_monolith_elite_dead} beh@duty_combat_6, beh@duty_guard_6
|
||||
|
||||
|
||||
[beh@duty]:beh@animpoint
|
||||
before_hit = task_duty_girl@monolith_elite_hit
|
||||
run_anim = rush
|
||||
combat_ignore_cond = {+duty_girl_monolith_elite_move} true
|
||||
enemy_ignore_cond = {+duty_girl_monolith_elite_move} true
|
||||
|
||||
[beh@duty_1]:beh@duty
|
||||
pt1 = 999999,salut | pos:-93.8,-20.71,221.2 dir:180
|
||||
[beh@duty_2]:beh@duty
|
||||
pt1 = 999999,salut | pos:-92.4,-20.58,221.2 dir:180
|
||||
[beh@duty_3]:beh@duty
|
||||
pt1 = 999999,salut | pos:-91.0,-20.44,221.2 dir:180
|
||||
[beh@duty_4]:beh@duty
|
||||
pt1 = 999999,hide | pos:-97.3,-20.09,226.1 dir:0
|
||||
[beh@duty_5]:beh@duty
|
||||
pt1 = 999999,hide | pos:-87.5,-19.15,223.3 dir:0
|
||||
[beh@duty_6]:beh@duty
|
||||
pt1 = 999999,hide | pos:-90.3,-20.72,214.9 dir:180
|
||||
|
||||
|
||||
|
||||
|
||||
[beh@duty_combat]:beh@animpoint
|
||||
before_hit = task_duty_girl@monolith_elite_hit
|
||||
run_anim = assault
|
||||
|
||||
[beh@duty_combat_1]:beh@duty_combat
|
||||
pt1 = 999999,hide | pos:-105.0,-9.60,327.6 dir:0
|
||||
on_info = {+duty_girl_monolith_elite_dead} beh@duty_guard_1
|
||||
[beh@duty_combat_2]:beh@duty_combat
|
||||
pt1 = 999999,hide | pos:-100.1,-10.38,329.0 dir:0
|
||||
on_info = {+duty_girl_monolith_elite_dead} beh@duty_guard_2
|
||||
[beh@duty_combat_3]:beh@duty_combat
|
||||
pt1 = 999999,hide | pos:-83.3,-15.29,329.0 dir:0
|
||||
on_info = {+duty_girl_monolith_elite_dead} beh@duty_guard_3
|
||||
[beh@duty_combat_4]:beh@duty_combat
|
||||
pt1 = 999999,hide | pos:-46.9,-16.30,340.9 dir:0
|
||||
on_info = {+duty_girl_monolith_elite_dead} beh@duty_guard_4
|
||||
[beh@duty_combat_5]:beh@duty_combat
|
||||
pt1 = 999999,hide | pos:-52.5,-17.41,322.7 dir:0
|
||||
on_info = {+duty_girl_monolith_elite_dead} beh@duty_guard_5
|
||||
[beh@duty_combat_6]:beh@duty_combat
|
||||
pt1 = 999999,hide | pos:-37.8,-13.05,332.5 dir:0
|
||||
on_info = {+duty_girl_monolith_elite_dead} beh@duty_guard_6
|
||||
|
||||
|
||||
|
||||
|
||||
[beh@duty_guard_1]:beh@monolith_1
|
||||
[beh@duty_guard_2]:beh@monolith_2
|
||||
[beh@duty_guard_3]:beh@monolith_3
|
||||
[beh@duty_guard_4]:beh@monolith_4
|
||||
[beh@duty_guard_5]:beh@monolith_5
|
||||
[beh@duty_guard_6]:beh@monolith_6
|
|
@ -0,0 +1,279 @@
|
|||
<?xml version="1.0" encoding="windows-1251"?>
|
||||
<string_table>
|
||||
<string id="stalker_duty_girl_name">
|
||||
<text>Anna</text>
|
||||
</string>
|
||||
|
||||
|
||||
|
||||
<string id="duty_girl_companion_join_0">
|
||||
<text>I need an extra hand in the next mission. Can you help me?</text>
|
||||
</string>
|
||||
<string id="duty_girl_companion_join_1">
|
||||
<text>Sure. Lead the way.</text>
|
||||
</string>
|
||||
<string id="duty_girl_companion_join_2">
|
||||
<text>Aren't you having a good time with her? Sorry, I'm busy now.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_companion_leave_0">
|
||||
<text>I think we should part ways for now.</text>
|
||||
</string>
|
||||
<string id="duty_girl_companion_leave_1">
|
||||
<text>Are you sure?</text>
|
||||
</string>
|
||||
<string id="duty_girl_companion_leave_2">
|
||||
<text>Yes. There is something I must deal with alone.</text>
|
||||
</string>
|
||||
<string id="duty_girl_companion_leave_3">
|
||||
<text>Nevermind. One second thought, two would be better.</text>
|
||||
</string>
|
||||
<string id="duty_girl_companion_leave_4">
|
||||
<text>Alright. Good hunting. I will return to Rostok. Remember to drop by from time to time.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_actor_ask_companion_0">
|
||||
<text>We have different enemies and friends. Is there any way for us to hunt together?</text>
|
||||
</string>
|
||||
<string id="duty_girl_actor_ask_companion_1_lone">
|
||||
<text>My presence can convince the Ukrainian troops to leave you alone. But don't try anything stupid. I won't help if you piss them off. In return, make sure anarchists don't give me trouble. Then I think we can get along.</text>
|
||||
</string>
|
||||
<string id="duty_girl_actor_ask_companion_1_csky">
|
||||
<text>My presence can convince the Ukrainian troops to leave you alone. But don't try anything stupid. I won't help if you piss them off. In return, make sure anarchists and mercenaries don't give me trouble. Then I think we can get along.</text>
|
||||
</string>
|
||||
<string id="duty_girl_actor_ask_companion_1_army">
|
||||
<text>I can convince free stalkers and Clear Sky members that you're not a threat. You better act accordingly too. I won't help if you piss them off. Then I think we're fine to get along.</text>
|
||||
</string>
|
||||
<string id="duty_girl_actor_ask_companion_1_ecol">
|
||||
<text>You don't have many enemies, ehh? I think we can get along if you can convince anarchists and mercenaries to not attack me.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_companion_random_chat_1">
|
||||
<text>Better stock up more ammo when we can.</text>
|
||||
</string>
|
||||
<string id="duty_girl_companion_random_chat_2">
|
||||
<text>You know, you could leave the Zone. Settle down, start over, marry a girl...</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_companion_random_chat_special_1">
|
||||
<text>You don't look good. Better treat your wound soon.</text>
|
||||
</string>
|
||||
<string id="duty_girl_companion_random_chat_special_2">
|
||||
<text>You have sight of radiation. Are you okay?</text>
|
||||
</string>
|
||||
<string id="duty_girl_companion_random_chat_special_3">
|
||||
<text>A new day, and we are still alive. That's great.</text>
|
||||
</string>
|
||||
<string id="duty_girl_companion_random_chat_special_4">
|
||||
<text>It's morning. Time to kick some mutant's asses.</text>
|
||||
</string>
|
||||
<string id="duty_girl_companion_random_chat_special_5">
|
||||
<text>Morning. I guess those freedoms are still dreaming of bloodsuckers.</text>
|
||||
</string>
|
||||
<string id="duty_girl_companion_random_chat_special_6">
|
||||
<text>Night is comming. The Zone is even more dangerous now but coming along is opportunity.</text>
|
||||
</string>
|
||||
<string id="duty_girl_companion_random_chat_special_7">
|
||||
<text>Night falls. Should we rest for while?</text>
|
||||
</string>
|
||||
<string id="duty_girl_companion_random_chat_special_8">
|
||||
<text>How many mutants you have killed today?</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_chat_0">
|
||||
<text>I want to ask you something.</text>
|
||||
</string>
|
||||
<string id="duty_girl_chat_1">
|
||||
<text>Yes?</text>
|
||||
</string>
|
||||
<string id="duty_girl_chat_2">
|
||||
<text>Nevermind.</text>
|
||||
</string>
|
||||
|
||||
|
||||
<string id="duty_girl_chat_hunting_chimera_0">
|
||||
<text>You were eager to kill the chimera. It was because of your father?</text>
|
||||
</string>
|
||||
<string id="duty_girl_chat_hunting_chimera_1">
|
||||
<text>Yeah, kind of. You know, most of Duty members, me included, are those who lost their friends, their family to the Zone. Such memories won't be forgotten easily.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_chat_monolith_elite_0">
|
||||
<text>Those men seem to follow your commands.</text>
|
||||
</string>
|
||||
<string id="duty_girl_chat_monolith_elite_1">
|
||||
<text>I know medicine and usually help wounded people, so they seem to like me. Or maybe I'm not as strict as other Duty officers.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_chat_capture_the_brirge_0">
|
||||
<text>Why did the Monolith want to block the route?</text>
|
||||
</string>
|
||||
<string id="duty_girl_chat_capture_the_brirge_1">
|
||||
<text>They are monolithians. They always prevent people from reaching the center of the Zone. I think those we fought were fresh victims of the Brain Scorcher. Experienced stalkers will try to cross the Brain Scorcher's psy field to reach the center of the Zone. Many things could happen, mutant attacks that break their protection equipment, unable to cross the field on time, etc. The route is dangerous, but at the same time it also leads to new areas that haven't been scanned by anyone.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_chat_capture_the_brirge_2">
|
||||
<text>I saw there were some free stalkes joining us in the fight at the bridge.</text>
|
||||
</string>
|
||||
<string id="duty_girl_chat_capture_the_brirge_3">
|
||||
<text>Maybe they were influenced by our action of reopening the route, having their friends stuck in the north, so they came to help. Or maybe they just came for the reward. Regardless, any help is welcome.</text>
|
||||
</string>
|
||||
|
||||
<!----------------------------------------------------------------------------------------------------
|
||||
Quests
|
||||
------------------------------------------------------------------------------------------------------>
|
||||
<string id="duty_girl_first_meet_0">
|
||||
<text>It has been years since I last saw a girl.</text>
|
||||
</string>
|
||||
<string id="duty_girl_first_meet_1">
|
||||
<text>I guess you will see me around more often.</text>
|
||||
</string>
|
||||
<string id="duty_girl_first_meet_2">
|
||||
<text>I haven't seen you before. Are you a new recruit?</text>
|
||||
</string>
|
||||
<string id="duty_girl_first_meet_3">
|
||||
<text>I joined Duty one year ago. It was a field recruitment. My father was a free stalker and I'm with him. One day, we were attacked by a chimera. I managed to survive by hiding in a truck cabin, but he didn't make it. He was killed when trying to protect me. Then a Duty expedition squad found and rescued me. So I joined them, since I had nowhere else to go and I want to revenge for my father. I have been trained and fighting alongside with them since then. Now our commission is over, we return to the base waiting for the next orders.</text>
|
||||
</string>
|
||||
<string id="duty_girl_first_meet_4">
|
||||
<text>What a sad story. I'm sorry to hear that.</text>
|
||||
</string>
|
||||
<string id="duty_girl_first_meet_5">
|
||||
<text>I'm fine. Hey, you were the guy running around asking for work lately, weren't you? I'm currently in charge of some Duty's special operations. If you need work, I might have some for you.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_hunting_chimera_init_0">
|
||||
<text>Do you have any work that I can help?</text>
|
||||
</string>
|
||||
<string id="duty_girl_hunting_chimera_init_1">
|
||||
<text>I'm going to go hunting now. There is a chimera that has been bothering Barman for a while. Join me and I will share you half of the bounty. See me at the Flea Market.</text>
|
||||
</string>
|
||||
|
||||
|
||||
<string id="duty_girl_hunting_chimera_move_0">
|
||||
<text>I'm ready.</text>
|
||||
</string>
|
||||
<string id="duty_girl_hunting_chimera_move_1">
|
||||
<text>I just saw it chasing some bandits from distance. I'm glad to see you. It was a big one, I would have to abandon the mission if you didn't come to help. It must has returned to it's lair by now. Follow me and stay close.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_hunting_chimera_hunt_1">
|
||||
<text>Look. It is a black chimera.</text>
|
||||
</string>
|
||||
<string id="duty_girl_hunting_chimera_hunt_2">
|
||||
<text>It isn't aware of us. Good.</text>
|
||||
</string>
|
||||
<string id="duty_girl_hunting_chimera_hunt_3">
|
||||
<text>You better make the first shot count.</text>
|
||||
</string>
|
||||
<string id="duty_girl_hunting_chimera_hunt_4">
|
||||
<text>Phew! That was close.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_hunting_chimera_done_0">
|
||||
<text>The monster is dead.</text>
|
||||
</string>
|
||||
<string id="duty_girl_hunting_chimera_done_1">
|
||||
<text>You're tougher than I thought. I'm looking for some good fighters for my mission, and you're a good addition. I will explain it in details, but I think you should prepare some better gears. Here, take the reward.</text>
|
||||
</string>
|
||||
|
||||
|
||||
<string id="duty_girl_monolith_elite_init_0">
|
||||
<text>Do you have any work that I can help?</text>
|
||||
</string>
|
||||
<string id="duty_girl_monolith_elite_init_1">
|
||||
<text>Yeah. There is one. Quite a dangerous one, I'm afraid. Just recently, a group of monolithians appeared in Army Warehouses blocking the path to the Red Forest. They aren't any monolithians, scouts reported that they are very well armed. People cry to reopen the route so here we are. We will gather at the abandoned house in the Army Warehouse. See you there.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_monolith_elite_join_0">
|
||||
<text>I come to join you.</text>
|
||||
</string>
|
||||
<string id="duty_girl_monolith_elite_join_1">
|
||||
<text>Good to see you. Here is your supplies. Prepare yourself and tell me when when you're ready.</text>
|
||||
</string>
|
||||
<string id="duty_girl_monolith_elite_join_2">
|
||||
<text>I'm ready.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_monolith_elite_move_1">
|
||||
<text>Buckle up men. It won't be easy.</text>
|
||||
</string>
|
||||
<string id="duty_girl_monolith_elite_move_2">
|
||||
<text>Remember to keep your head down and follow my hand signals.</text>
|
||||
</string>
|
||||
<string id="duty_girl_monolith_elite_move_3">
|
||||
<text>Move.</text>
|
||||
</string>
|
||||
<string id="duty_girl_monolith_elite_move_4">
|
||||
<text>This is it. Good work, men!</text>
|
||||
</string>
|
||||
<string id="duty_girl_monolith_elite_move_5">
|
||||
<text>Damn, he was spotted.</text>
|
||||
</string>
|
||||
<string id="duty_girl_monolith_elite_move_6">
|
||||
<text>Everyone, attack.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_monolith_elite_done_0">
|
||||
<text>I come to collect my reward.</text>
|
||||
</string>
|
||||
<string id="duty_girl_monolith_elite_done_1">
|
||||
<text>Yeah, here you are. I knew I can count on you. Your contributions today will be known among Duty men.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_loot_stash_init_0">
|
||||
<text>Do you have any work that I can help?</text>
|
||||
</string>
|
||||
<string id="duty_girl_loot_stash_init_1">
|
||||
<text>I haven't got anything yet. But perhaps you would be interested in this. You did well in the recent mission and I think the reward is quite underpaid. These are the coordinates obtained from the PDA of one of the monolith fighters. A stash, no doubt. No one has secured it yet, we have to prepare for the next move. So consider it a bonus for you.</text>
|
||||
</string>
|
||||
<string id="duty_girl_loot_stash_init_2">
|
||||
<text>Thanks.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_capture_the_brirge_init_0">
|
||||
<text>Do you have any work that I can help?</text>
|
||||
</string>
|
||||
<string id="duty_girl_capture_the_brirge_init_1">
|
||||
<text>The Monolith has come again. They captured the outpost near the bridge in the Red Forest. We will drive them away, at the same time capture it and establish a forward outpost to maintain the route. Our rallying point is the bus stop in the Red Forest. See you there.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_capture_the_brirge_join_0">
|
||||
<text>I come to join you.</text>
|
||||
</string>
|
||||
<string id="duty_girl_capture_the_brirge_join_1">
|
||||
<text>We scouted ahead. Our foe has less skilled fighters, but they come by the number. Spotted around 10 men but I'm sure they have backup hiding around. It will be tougher than the previous fight. Take your supply and be ready.</text>
|
||||
</string>
|
||||
<string id="duty_girl_capture_the_brirge_join_2">
|
||||
<text>I'm ready.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_capture_the_brirge_move_1">
|
||||
<text>Be careful, they are even tougher than before.</text>
|
||||
</string>
|
||||
<string id="duty_girl_capture_the_brirge_move_2">
|
||||
<text>Don't advance too far. Stay together.</text>
|
||||
</string>
|
||||
<string id="duty_girl_capture_the_brirge_move_3">
|
||||
<text>Move.</text>
|
||||
</string>
|
||||
<string id="duty_girl_capture_the_brirge_move_4">
|
||||
<text>Looks like that was the last one. Good work, people!</text>
|
||||
</string>
|
||||
<string id="duty_girl_capture_the_brirge_move_5">
|
||||
<text>Damn, he was spotted.</text>
|
||||
</string>
|
||||
<string id="duty_girl_capture_the_brirge_move_6">
|
||||
<text>Everyone, attack.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_capture_the_brirge_done_0">
|
||||
<text>I come to collect my reward.</text>
|
||||
</string>
|
||||
<string id="duty_girl_capture_the_brirge_done_1">
|
||||
<text>Thanks for your help. Our men are on the way here and the outpost will be operational soon. My mission is over. I think I will be idle for a while. If you need an extra hand in your missions, you just need to ask.</text>
|
||||
</string>
|
||||
|
||||
|
||||
|
||||
|
||||
</string_table>
|
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="windows-1251"?>
|
||||
<string_table>
|
||||
<string id="duty_girl_hunting_chimera_title">
|
||||
<text>Hunting Chimera</text>
|
||||
</string>
|
||||
<string id="duty_girl_hunting_chimera_descr_1">
|
||||
<text>I agreed to help Anna hunt a Chimera. See her at the Flea Market.</text>
|
||||
</string>
|
||||
<string id="duty_girl_hunting_chimera_descr_2">
|
||||
<text>I agreed to help Anna hunt a Chimera. We are attacking the monster's lair.</text>
|
||||
</string>
|
||||
<string id="duty_girl_hunting_chimera_descr_3">
|
||||
<text>The monster is dead. Return for reward.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_monolith_elite_title">
|
||||
<text>Clean The Route To The North</text>
|
||||
</string>
|
||||
<string id="duty_girl_monolith_elite_descr_1">
|
||||
<text>Duty is about to launch an attack against a highly ranked monolith squad. Any help is welcome with a promise of reward.</text>
|
||||
</string>
|
||||
<string id="duty_girl_monolith_elite_descr_2">
|
||||
<text>The attack has begun. Help Duty to fight against enemies.</text>
|
||||
</string>
|
||||
<string id="duty_girl_monolith_elite_descr_3">
|
||||
<text>The attack was successful. Time to collect my reward.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_loot_stash_title">
|
||||
<text>Bonus Reward</text>
|
||||
</string>
|
||||
<string id="duty_girl_loot_stash_descr_1">
|
||||
<text>A stash coordinate was given to me as a bonus for assisting Duty in the previous mission.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_capture_the_brirge_title">
|
||||
<text>Capture The Brirge</text>
|
||||
</string>
|
||||
<string id="duty_girl_capture_the_brirge_descr_1">
|
||||
<text>Duty want to capture the brirge in the Red Forest. They are about to strike. Any help is welcome with a promise of reward.</text>
|
||||
</string>
|
||||
<string id="duty_girl_capture_the_brirge_descr_2">
|
||||
<text>The attack has begun. Help Duty to fight against enemies.</text>
|
||||
</string>
|
||||
<string id="duty_girl_capture_the_brirge_descr_3">
|
||||
<text>The attack was successful. Time to collect my reward.</text>
|
||||
</string>
|
||||
</string_table>
|
|
@ -0,0 +1,116 @@
|
|||
<?xml version="1.0" encoding="windows-1251"?>
|
||||
<string_table>
|
||||
|
||||
<string id="red_duty_outpost_trader_concern_hostile_0">
|
||||
<text>There are stalkers from different communities here. Don't they cause troubles?</text>
|
||||
</string>
|
||||
<string id="red_duty_outpost_trader_concern_hostile_1">
|
||||
<text>Don't worry. The area is under Duty control. Those who are friends of Duty are protected here and fighting is forbidden. You better don't cause troubles for yourself too.</text>
|
||||
</string>
|
||||
|
||||
<string id="red_duty_outpost_trader_task_1_name">
|
||||
<text>Destroy the Mutants</text>
|
||||
</string>
|
||||
<string id="red_duty_outpost_trader_task_1_text">
|
||||
<text>I've agreed to clear out a lair of mutants for the outpost leader.</text>
|
||||
</string>
|
||||
<string id="red_duty_outpost_trader_task_1_about">
|
||||
<text>There is still a mutant lair that we haven't had any squad to assign. Can you take care of it?</text>
|
||||
</string>
|
||||
<string id="red_duty_outpost_trader_task_1_finish">
|
||||
<text>Good work. Another tick to the task list.</text>
|
||||
</string>
|
||||
|
||||
<string id="red_duty_outpost_trader_task_2_name">
|
||||
<text>Kill the Stalker</text>
|
||||
</string>
|
||||
<string id="red_duty_outpost_trader_task_2_text">
|
||||
<text>I've agreed to take care of a stalker for the outpost leader.</text>
|
||||
</string>
|
||||
<string id="red_duty_outpost_trader_task_2_about">
|
||||
<text>I have a high priority target that needs removal. He was found attacking local stalkers and scientists. A reward is promised for any one who can take him out.</text>
|
||||
</string>
|
||||
<string id="red_duty_outpost_trader_task_2_finish">
|
||||
<text>I don't like killing but that scum deserves it. Here's the reward.</text>
|
||||
</string>
|
||||
|
||||
<string id="red_duty_outpost_trader_task_3_name">
|
||||
<text>Find %s</text>
|
||||
</string>
|
||||
<string id="red_duty_outpost_trader_task_3_text">
|
||||
<text>The outpost leader asked me to hunt for a certain amount of mutant meat worth of food. Bring him %s for a reward.</text>
|
||||
</string>
|
||||
<string id="red_duty_outpost_trader_task_3_about">
|
||||
<text>The supply line to our point is very dangerous. I want to focus more on weapons and ammo and less on things that we can secure in the area, such as food. There are a lot of edible mutants around here. Hunt them down and bring back %s. Then I will have a reward for you.</text>
|
||||
</string>
|
||||
<string id="red_duty_outpost_trader_task_3_finish">
|
||||
<text>Yeah, I prefer these than dry MREs. Good work.</text>
|
||||
</string>
|
||||
|
||||
<string id="red_duty_outpost_trader_task_4_name">
|
||||
<text>Find %s</text>
|
||||
</string>
|
||||
<string id="red_duty_outpost_trader_task_4_text">
|
||||
<text>Some scientists are looking for a rare mutant part called %s.</text>
|
||||
</string>
|
||||
<string id="red_duty_outpost_trader_task_4_about">
|
||||
<text>Some of the scientists keep asking for a %s. It's from a dangerous mutant which my boys usually tear to pieces with bullets and grenades. See if you can secure one.</text>
|
||||
</string>
|
||||
<string id="red_duty_outpost_trader_task_4_finish">
|
||||
<text>Finally, someone bring back a sample in one piece.</text>
|
||||
</string>
|
||||
|
||||
|
||||
<string id="meet_guid_duty_outpost_list_0">
|
||||
<text>Where can you escort me?</text>
|
||||
</string>
|
||||
<string id="meet_guid_duty_outpost_list_1">
|
||||
<text>To the Bar in Rostok for one thousand, the Skadovsk in Zaton for two thousand, the Garbage for three thousand, Yantar for four thousand, the Military Base in Agroprom for five thousand, the Rookie Village in the Cordon for six thousand, and the Great Swamp for six thousand.</text>
|
||||
</string>
|
||||
|
||||
<string id="travel_guid_duty_outpost_0">
|
||||
<text>I need to be led somewhere.</text>
|
||||
</string>
|
||||
<string id="travel_guid_duty_outpost_1">
|
||||
<text>Yeah, where?</text>
|
||||
</string>
|
||||
<string id="travel_guid_duty_outpost_2">
|
||||
<text>To Rostok. %c[d_orange][1000 RU]</text>
|
||||
</string>
|
||||
<string id="travel_guid_duty_outpost_3">
|
||||
<text>To Zaton. %c[d_orange][2000 RU]</text>
|
||||
</string>
|
||||
<string id="travel_guid_duty_outpost_4">
|
||||
<text>To the Garbage. %c[d_orange][3000 RU]</text>
|
||||
</string>
|
||||
<string id="travel_guid_duty_outpost_5">
|
||||
<text>To Yantar. %c[d_orange][4000 RU]</text>
|
||||
</string>
|
||||
<string id="travel_guid_duty_outpost_6">
|
||||
<text>To Agroprom. %c[d_orange][5000 RU]</text>
|
||||
</string>
|
||||
<string id="travel_guid_duty_outpost_7">
|
||||
<text>To the Cordon. %c[d_orange][6000 RU]</text>
|
||||
</string>
|
||||
<string id="travel_guid_duty_outpost_8">
|
||||
<text>To the Great Swamp. %c[d_orange][6000 RU]</text>
|
||||
</string>
|
||||
<string id="travel_guid_duty_outpost_9">
|
||||
<text>I've changed my mind.</text>
|
||||
</string>
|
||||
|
||||
<string id="travel_guid_duty_outpost_from_others_0">
|
||||
<text>Do you know the Duty Outpost in the Red Forest? I want to go there.</text>
|
||||
</string>
|
||||
|
||||
<string id="travel_guid_duty_outpost_from_others_1">
|
||||
<text>Yes. It will be %c[d_orange]%s RU%c[255,160,160,190].</text>
|
||||
</string>
|
||||
<string id="travel_guid_duty_outpost_from_others_2">
|
||||
<text>Bring me there. %c[d_orange][%s RU]</text>
|
||||
</string>
|
||||
<string id="travel_guid_duty_outpost_from_others_3">
|
||||
<text>I've changed my mind.</text>
|
||||
</string>
|
||||
|
||||
</string_table>
|
|
@ -0,0 +1,279 @@
|
|||
<?xml version="1.0" encoding="windows-1251"?>
|
||||
<string_table>
|
||||
<string id="stalker_duty_girl_name">
|
||||
<text>Анна</text>
|
||||
</string>
|
||||
|
||||
|
||||
|
||||
<string id="duty_girl_companion_join_0">
|
||||
<text>Мне не помешала бы поддержка в поле. Составишь компанию?</text>
|
||||
</string>
|
||||
<string id="duty_girl_companion_join_1">
|
||||
<text>Конечно. Веди.</text>
|
||||
</string>
|
||||
<string id="duty_girl_companion_join_2">
|
||||
<text>А с ней ты разве не хорошо проводишь время? Извини, я сейчас занята.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_companion_leave_0">
|
||||
<text>Думаю, нам надо разойтись.</text>
|
||||
</string>
|
||||
<string id="duty_girl_companion_leave_1">
|
||||
<text>Ты уверен?</text>
|
||||
</string>
|
||||
<string id="duty_girl_companion_leave_2">
|
||||
<text>Да. Дальше я пойду один.</text>
|
||||
</string>
|
||||
<string id="duty_girl_companion_leave_3">
|
||||
<text>Нет, я передумал. Если так подумать, лучше держаться вместе.</text>
|
||||
</string>
|
||||
<string id="duty_girl_companion_leave_4">
|
||||
<text>Ладно. Удачной охоты. Я вернусь на Росток. Не забывай заглядывать время от времени.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_actor_ask_companion_0">
|
||||
<text>У нас разные враги и друзья. Нам это не помешает?</text>
|
||||
</string>
|
||||
<string id="duty_girl_actor_ask_companion_1_lone">
|
||||
<text>Мое присутствие поможет убедить военных оставить вас в покое. Но не делай глупостей. Я не стану тебе помогать, если ты их разозлишь. В свою очередь, позаботься о том, чтобы анархисты не доставляли мне проблем. Тогда, думаю, мы сможем поладить.</text>
|
||||
</string>
|
||||
<string id="duty_girl_actor_ask_companion_1_csky">
|
||||
<text>Мое присутствие может убедить военных оставить вас в покое. Но не делай глупостей. Я не стану тебе помогать, если ты их разозлишь. В свою очередь, позаботься о том, чтобы анархисты и наёмники не доставляли мне проблем. Тогда, думаю, мы сможем поладить.</text>
|
||||
</string>
|
||||
<string id="duty_girl_actor_ask_companion_1_army">
|
||||
<text>Я могу убедить одиночек и "Чистое небо", что ты не представляешь угрозы. Тебе лучше вести себя соответственно. Я не стану помогать, если ты их разозлишь. Тогда, думаю, мы сможем поладить.</text>
|
||||
</string>
|
||||
<string id="duty_girl_actor_ask_companion_1_ecol">
|
||||
<text>А у тебя не так уж много врагов, а? Думаю, мы сможем поладить, если ты сможешь убедить анархистов и наемников не нападать на меня.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_companion_random_chat_1">
|
||||
<text>Лучше запастись патронами, когда будет возможность.</text>
|
||||
</string>
|
||||
<string id="duty_girl_companion_random_chat_2">
|
||||
<text>Знаешь, ты ведь можешь уехать из Зоны. Остепениться, начать все сначала, на девушке жениться...</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_companion_random_chat_special_1">
|
||||
<text>Ты неважно выглядишь. Надо поскорее обработать рану.</text>
|
||||
</string>
|
||||
<string id="duty_girl_companion_random_chat_special_2">
|
||||
<text>Ты получил дозу радиации. Нормально себя чувствуешь?</text>
|
||||
</string>
|
||||
<string id="duty_girl_companion_random_chat_special_3">
|
||||
<text>Начинается новый день, а мы все еще живы. Есть место оптимизму!</text>
|
||||
</string>
|
||||
<string id="duty_girl_companion_random_chat_special_4">
|
||||
<text>Уже утро. Пришло время надирать мутантам задницы.</text>
|
||||
</string>
|
||||
<string id="duty_girl_companion_random_chat_special_5">
|
||||
<text>С добрым утром. А эти из "Свободы", наверное, всё ещё сны про сосычей досматривают.</text>
|
||||
</string>
|
||||
<string id="duty_girl_companion_random_chat_special_6">
|
||||
<text>Ночь надвигается. Зона теперь еще опаснее, но и возможностей становится больше.</text>
|
||||
</string>
|
||||
<string id="duty_girl_companion_random_chat_special_7">
|
||||
<text>Ночь надвигается. Может, отдохнем немного?</text>
|
||||
</string>
|
||||
<string id="duty_girl_companion_random_chat_special_8">
|
||||
<text>Сколько мутантов ты убил сегодня?</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_chat_0">
|
||||
<text>Мне надо тебе кое-что сказать...</text>
|
||||
</string>
|
||||
<string id="duty_girl_chat_1">
|
||||
<text>Что такое?</text>
|
||||
</string>
|
||||
<string id="duty_girl_chat_2">
|
||||
<text>Нет, неважно.</text>
|
||||
</string>
|
||||
|
||||
|
||||
<string id="duty_girl_chat_hunting_chimera_0">
|
||||
<text>Ты так стремилась убить эту химеру. Это все из-за твоего отца?</text>
|
||||
</string>
|
||||
<string id="duty_girl_chat_hunting_chimera_1">
|
||||
<text>Да, вроде того. Понимаешь, большинство ребят в "Долге", я в том числе - это те, кто потерял в Зоне своих друзей, родных. Такие вещи непросто забываются.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_chat_monolith_elite_0">
|
||||
<text>Эти ребята, похоже, следуют твоим приказам.</text>
|
||||
</string>
|
||||
<string id="duty_girl_chat_monolith_elite_1">
|
||||
<text>Я разбираюсь в медицине и обычно помогаю раненым, так что, похоже, я им нравлюсь. А может, я не такая строгая, как другие офицеры в "Долге".</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_chat_capture_the_brirge_0">
|
||||
<text>Зачем монолитовцам перекрывать маршрут?</text>
|
||||
</string>
|
||||
<string id="duty_girl_chat_capture_the_brirge_1">
|
||||
<text>Они монолитовцы. Они всегда мешают другим добраться до центра Зоны. Думаю, те, с кем мы сражались, были недавними жертвами Выжигателя мозгов. Опытные сталкеры иногда пытаюстся пройти через пси-поле Выжигателя мозгов, чтобы достичь центра Зоны. Многое может случиться: мутанты нападут и повредят защитное оборудование, не смогут вовремя пройти через поле, ещё что. Маршрут опасен, но зато он ведет к новым, малоизученным территориям.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_chat_capture_the_brirge_2">
|
||||
<text>В схватке у моста я заметил, что к нам присоединились несколько одиночек.</text>
|
||||
</string>
|
||||
<string id="duty_girl_chat_capture_the_brirge_3">
|
||||
<text>Может быть, их заинтересовала наша операция по восстановлению маршрута, их друзья застряли на севере, поэтому они пришли помочь. А может, просто в погоне за наживой. В любом случае, мы рады всякой помощи.</text>
|
||||
</string>
|
||||
|
||||
<!----------------------------------------------------------------------------------------------------
|
||||
Quests
|
||||
------------------------------------------------------------------------------------------------------>
|
||||
<string id="duty_girl_first_meet_0">
|
||||
<text>Ого! Я уже давно не видал девушек.</text>
|
||||
</string>
|
||||
<string id="duty_girl_first_meet_1">
|
||||
<text>Ну, меня ты, похоже, будешь видеть часто.</text>
|
||||
</string>
|
||||
<string id="duty_girl_first_meet_2">
|
||||
<text>Я тебя раньше не видел. Ты из новобранцев?</text>
|
||||
</string>
|
||||
<string id="duty_girl_first_meet_3">
|
||||
<text>Я вступила в "Долг" год назад. Набирали в полевых условиях. Мой отец был вольным сталкером, а я путешествовала с ним. Однажды на нас напала химера. Мне удалось выжить, спрятавшись в кабине грузовика, но он погиб. Погиб, пытаясь защитить меня. Затем экспедиционный отряд "Долга" нашёл меня и спас. Я присоединилась к ним, потому что мне просто некуда было больше податься и я хотела отомстить за своего отца. С тех пор я тренировалась и сражалась бок о бок с ними. А теперь наше задание выполнено, мы возвращаемся на базу и ожидаем дальнейших приказов.</text>
|
||||
</string>
|
||||
<string id="duty_girl_first_meet_4">
|
||||
<text>Тяжкая история. Сочувствую.</text>
|
||||
</string>
|
||||
<string id="duty_girl_first_meet_5">
|
||||
<text>Я справлюсь. Эй, это ведь ты в последнее время носишься вокруг и ищешь работу? Я сейчас отвечаю за некоторые боевые операции "Долга". Если нужна работа, у меня, может, найдется что-нибудь для тебя.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_hunting_chimera_init_0">
|
||||
<text>Есть для меня задания?</text>
|
||||
</string>
|
||||
<string id="duty_girl_hunting_chimera_init_1">
|
||||
<text>Я собираюсь на охоту. Есть одна химера, которая давно беспокоит Бармена. Пойдёшь со мной - получишь половину награды. Встретимся на Барахолке.</text>
|
||||
</string>
|
||||
|
||||
|
||||
<string id="duty_girl_hunting_chimera_move_0">
|
||||
<text>Я готов.</text>
|
||||
</string>
|
||||
<string id="duty_girl_hunting_chimera_move_1">
|
||||
<text>Я только что видела, как она преследовала бандитов. Хорошо, что ты объявился. Здоровенная тварь, мне пришлось бы бросить задание, если бы ты не подоспел. Похоже, она уже вернулась в свое логово. Иди за мной и не отставай.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_hunting_chimera_hunt_1">
|
||||
<text>Смотри! Это чёрная химера!</text>
|
||||
</string>
|
||||
<string id="duty_girl_hunting_chimera_hunt_2">
|
||||
<text>Нас не учуяла. Хорошо.</text>
|
||||
</string>
|
||||
<string id="duty_girl_hunting_chimera_hunt_3">
|
||||
<text>Смотри не промахнись.</text>
|
||||
</string>
|
||||
<string id="duty_girl_hunting_chimera_hunt_4">
|
||||
<text>Фуф! Ещё бы чуть-чуть и всё.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_hunting_chimera_done_0">
|
||||
<text>Тварь издохла.</text>
|
||||
</string>
|
||||
<string id="duty_girl_hunting_chimera_done_1">
|
||||
<text>А ты крепче, чем кажешься. Я ищу хороших бойцов для одной боевой операции, и ты неплохо впишешься. Подробности я расскажу на базе, и думаю, тебе стоит подготовить снаряжение получше. Держи свою награду.</text>
|
||||
</string>
|
||||
|
||||
|
||||
<string id="duty_girl_monolith_elite_init_0">
|
||||
<text>Есть для меня задания?</text>
|
||||
</string>
|
||||
<string id="duty_girl_monolith_elite_init_1">
|
||||
<text>Да. Есть одно. И, боюсь, довольно опасное. Совсем недавно группа монолитовцев появилась на Армейских складах, заблокировав проход к Рыжему лесу. Разведка докладывает, что они вооружены самым лучшим образом. Сталкеры просят снова открыть путь в лес, и эта задача падает на нас. Мы собираемся в заброшенном доме на Армейских складах. Встретимся там.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_monolith_elite_join_0">
|
||||
<text>Готов присоединиться к операции.</text>
|
||||
</string>
|
||||
<string id="duty_girl_monolith_elite_join_1">
|
||||
<text>Рада тебя видеть. Бери припасы. Сообщай, когда будешь готов.</text>
|
||||
</string>
|
||||
<string id="duty_girl_monolith_elite_join_2">
|
||||
<text>Я готов.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_monolith_elite_move_1">
|
||||
<text>Приготовиться! Будет жарко.</text>
|
||||
</string>
|
||||
<string id="duty_girl_monolith_elite_move_2">
|
||||
<text>Не высовываемся и следуем моим командам.</text>
|
||||
</string>
|
||||
<string id="duty_girl_monolith_elite_move_3">
|
||||
<text>Вперёд!</text>
|
||||
</string>
|
||||
<string id="duty_girl_monolith_elite_move_4">
|
||||
<text>Вот и всё. Отличная работа!</text>
|
||||
</string>
|
||||
<string id="duty_girl_monolith_elite_move_5">
|
||||
<text>Чёрт, заметили.</text>
|
||||
</string>
|
||||
<string id="duty_girl_monolith_elite_move_6">
|
||||
<text>В атаку!</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_monolith_elite_done_0">
|
||||
<text>Я за наградой.</text>
|
||||
</string>
|
||||
<string id="duty_girl_monolith_elite_done_1">
|
||||
<text>Вот, держи. Я знала, что на тебя можно положиться. "Долг" не забудет твой вклад в общее дело.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_loot_stash_init_0">
|
||||
<text>Есть для меня задания?</text>
|
||||
</string>
|
||||
<string id="duty_girl_loot_stash_init_1">
|
||||
<text>Пока ничего. Но кое-что узнать тебе будет, наверное, интересно. Ты отлично показал себя на последнем задании, и мне кажется, награда не была соответствующей. Вот координаты с КПК одного из монолитовцев. Вне всяких сомнений, это тайник. Из наших никто его не обыскивал, времени мало, готовимся к другим операциям. Считай это своего рода премией.</text>
|
||||
</string>
|
||||
<string id="duty_girl_loot_stash_init_2">
|
||||
<text>Спасибо.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_capture_the_brirge_init_0">
|
||||
<text>Есть задания для меня?</text>
|
||||
</string>
|
||||
<string id="duty_girl_capture_the_brirge_init_1">
|
||||
<text>Снова объявился "Монолит". Захватили стратегическую точку у моста в Рыжем лесу. Выкурим их оттуда и разобьём передовой форпост для охраны маршрута. Точка сбора - автобусная остановка в Рыжем лесу. Встретимся там.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_capture_the_brirge_join_0">
|
||||
<text>Готов присоединиться к операции.</text>
|
||||
</string>
|
||||
<string id="duty_girl_capture_the_brirge_join_1">
|
||||
<text>Мы провели рекогносцировку. У противника менее тренированные бойцы, чем в прошлый раз, но берут числом. Мы насчитали около десятка, однако, я уверена, что в засаде сидит ещё столько же. Бой будет пожарче предыдущего. Держи припасы. Проверяй снаряжение и высупаем.</text>
|
||||
</string>
|
||||
<string id="duty_girl_capture_the_brirge_join_2">
|
||||
<text>Я готов.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_capture_the_brirge_move_1">
|
||||
<text>Осторожнее, этот бой будет не из простых.</text>
|
||||
</string>
|
||||
<string id="duty_girl_capture_the_brirge_move_2">
|
||||
<text>Вперёд не лезем! Держим строй!</text>
|
||||
</string>
|
||||
<string id="duty_girl_capture_the_brirge_move_3">
|
||||
<text>Вперёд!</text>
|
||||
</string>
|
||||
<string id="duty_girl_capture_the_brirge_move_4">
|
||||
<text>Похоже, последний. Хорошая работа, бойцы!</text>
|
||||
</string>
|
||||
<string id="duty_girl_capture_the_brirge_move_5">
|
||||
<text>Чёрт, заметили!</text>
|
||||
</string>
|
||||
<string id="duty_girl_capture_the_brirge_move_6">
|
||||
<text>В атаку!</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_capture_the_brirge_done_0">
|
||||
<text>Я за наградой.</text>
|
||||
</string>
|
||||
<string id="duty_girl_capture_the_brirge_done_1">
|
||||
<text>Спасибо за помощь. Наши силы уже выдвинулись на позицию, скоро мы установим здесь форпост. Свою боевую задачу я выполнила. Думаю, отдохну немного. Если тебе нужна какая помощь в Зоне, вызываюсь добровольцем.</text>
|
||||
</string>
|
||||
|
||||
|
||||
|
||||
|
||||
</string_table>
|
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="windows-1251"?>
|
||||
<string_table>
|
||||
<string id="duty_girl_hunting_chimera_title">
|
||||
<text>Îõîòà íà õèìåðó</text>
|
||||
</string>
|
||||
<string id="duty_girl_hunting_chimera_descr_1">
|
||||
<text>ß ñîãëàñèëñÿ ïîìî÷ü Àííå îõîòèòüñÿ íà õèìåðó. Âñòðå÷àåìñÿ íà Áàðàõîëêå.</text>
|
||||
</string>
|
||||
<string id="duty_girl_hunting_chimera_descr_2">
|
||||
<text>ß ñîãëàñèëñÿ ïîìî÷ü Àííå îõîòèòüñÿ íà õèìåðó. Àòàêóåì ëîãîâî ìîíñòðà.</text>
|
||||
</string>
|
||||
<string id="duty_girl_hunting_chimera_descr_3">
|
||||
<text>Òâàðü ìåðòâà. Âðåìÿ âîçâðàøàòüñÿ çà íàãðàäîé.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_monolith_elite_title">
|
||||
<text>Î÷èñòèòü ïóòü íà ñåâåð</text>
|
||||
</string>
|
||||
<string id="duty_girl_monolith_elite_descr_1">
|
||||
<text>"Äîëã" ñîáèðàåòñÿ àòàêîâàòü ýëèòíûé îòðÿä "Ìîíîëèòà". Îíè ðàäû ëþáîé ïîìîùè è ãîòîâû äàòü íàãðàäó çà íå¸.</text>
|
||||
</string>
|
||||
<string id="duty_girl_monolith_elite_descr_2">
|
||||
<text>Àòàêà íà÷àëàñü. Íóæíî ïîìî÷ü "Äîëãó" ñðàæàòüñÿ ñ ïðîòèâíèêîì.</text>
|
||||
</string>
|
||||
<string id="duty_girl_monolith_elite_descr_3">
|
||||
<text>Îïåðàöèÿ çàâåðøèëàñü óñïåøíî. Âðåìÿ èäòè çà íàãðàäîé.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_loot_stash_title">
|
||||
<text>Ïðåìèÿ</text>
|
||||
</string>
|
||||
<string id="duty_girl_loot_stash_descr_1">
|
||||
<text> êà÷åñòâå ïðåìèè çà ïîìîùü "Äîëãó" â âûïîëíåíèè áîåâîé îïåðàöèè ìíå âûäàëè êîîðäèíàòû òàéíèêà.</text>
|
||||
</string>
|
||||
|
||||
<string id="duty_girl_capture_the_brirge_title">
|
||||
<text>Çàõâàò ìîñòà</text>
|
||||
</string>
|
||||
<string id="duty_girl_capture_the_brirge_descr_1">
|
||||
<text>"Äîëãó" íåîáõîäèìî çàõâàòèòü ìîñò â Ðûæåì ëåñó. Îíè ãîòîâû àòàêîâàòü. Îíè ðàäû ëþáîé ïîìîùè è ãîòîâû äàòü íàãðàäó çà íå¸.</text>
|
||||
</string>
|
||||
<string id="duty_girl_capture_the_brirge_descr_2">
|
||||
<text>Àòàêà íà÷àëàñü. Íóæíî ïîìî÷ü "Äîëãó" ñðàæàòüñÿ ñ ïðîòèâíèêîì.</text>
|
||||
</string>
|
||||
<string id="duty_girl_capture_the_brirge_descr_3">
|
||||
<text>Îïåðàöèÿ çàâåðøèëàñü óñïåøíî. Âðåìÿ èäòè çà íàãðàäîé.</text>
|
||||
</string>
|
||||
</string_table>
|
|
@ -0,0 +1,116 @@
|
|||
<?xml version="1.0" encoding="windows-1251"?>
|
||||
<string_table>
|
||||
|
||||
<string id="red_duty_outpost_trader_concern_hostile_0">
|
||||
<text>Çäåñü ñòàëêåðû èç ðàçíûõ ãðóïïèðîâîê. Íåïðèÿòíîñòè áûâàþò?</text>
|
||||
</string>
|
||||
<string id="red_duty_outpost_trader_concern_hostile_1">
|
||||
<text>Íå áåñïîêîéñÿ. Îáëàñòü ïîä êîíòðîëåì "Äîëãà". Äðóçüÿ "Äîëãà" çäåñü ïîä çàùèòîé è ëþáàÿ âðàæäåáíîñòü ïîä çàïðåòîì. Îò òåáÿ, íàäåþñü, òîæå íåïðèÿòíîñòåé íå áóäåò.</text>
|
||||
</string>
|
||||
|
||||
<string id="red_duty_outpost_trader_task_1_name">
|
||||
<text>Óíè÷òîæèòü ìóòàíòîâ</text>
|
||||
</string>
|
||||
<string id="red_duty_outpost_trader_task_1_text">
|
||||
<text>ß ñîãëàñèëñÿ ïîìî÷ü êîìàíäèðó ôîðïîñòà ðàçîáðàòüñÿ ñ ìóòàíòàìè.</text>
|
||||
</string>
|
||||
<string id="red_duty_outpost_trader_task_1_about">
|
||||
<text> îêðóãå åñòü ãíåçäî ìóòàíòîâ, ê êîòîðîìó ìû åù¸ íå ñìîãëè îòïðàâèòü îòðÿä. Âîçüì¸øüñÿ?</text>
|
||||
</string>
|
||||
<string id="red_duty_outpost_trader_task_1_finish">
|
||||
<text>Õîðîøàÿ ðàáîòà. Åù¸ îäíà ãàëî÷êà â æóðíàëå.</text>
|
||||
</string>
|
||||
|
||||
<string id="red_duty_outpost_trader_task_2_name">
|
||||
<text>Ëèêâèäèðîâàòü ñòàëêåðà</text>
|
||||
</string>
|
||||
<string id="red_duty_outpost_trader_task_2_text">
|
||||
<text>ß ñîãëàñèëñÿ ïîìî÷ü êîìàíäèðó ôîðïîñòà ëèêâèäèðîâàòü ñòàëêåðà.</text>
|
||||
</string>
|
||||
<string id="red_duty_outpost_trader_task_2_about">
|
||||
<text>Åñòü âàæíàÿ öåëü, êîòîðóþ íåîáõîäèìî óíè÷òîæèòü. Îäèí ñóáúåêò íàïàäàåò íà ìåñòíûõ ñòàëêåðîâ è ó÷¸íûõ. Çà ëèêâèäàöèþ äàííîãî ñóáúåêòà íàçíà÷åíà íàãðàäà.</text>
|
||||
</string>
|
||||
<string id="red_duty_outpost_trader_task_2_finish">
|
||||
<text>Íå ëþáëþ óáèéñòâà, íî ýòîò ïîäîíîê çàñëóæèë ñâî¸. Âîò òâîÿ íàãðàäà.</text>
|
||||
</string>
|
||||
|
||||
<string id="red_duty_outpost_trader_task_3_name">
|
||||
<text>Íàéòè %s</text>
|
||||
</string>
|
||||
<string id="red_duty_outpost_trader_task_3_text">
|
||||
<text>Êîìàíäèð ôîðïîñòà ïîïðîñèë ïîîõîòèòüñÿ íà ìóòàíòîâ è ñîáðàòü íåìíîãî ìÿñà. Ìíå íóæíî ïðèíåñòè %s. Çà âûïîëíåíèå çàäàíèÿ îáåùàíî âîçíàãðàæäåíèå.</text>
|
||||
</string>
|
||||
<string id="red_duty_outpost_trader_task_3_about">
|
||||
<text>Ëèíèÿ ñíàáæåíèÿ ê íàøåìó ôîðïîñòó î÷åíü îïàñíà.  ïðèîðèòåòå îðóæèå è ïàòðîíû, ïðîâèàíò ðåøåíî äîáûâàòü â ïîëåâûõ óñëîâèÿõ.  îêðóãå ìíîãî ìóòàíòîâ, ìÿñî êîòîðûõ ïðèãîäíî â ïèùó. Ñåé÷àñ ìíå íóæíî %s. Çà âûïîëíåíèå çàäàíèÿ ïîëàãàåòñÿ âîçíàãðàæäåíèå.</text>
|
||||
</string>
|
||||
<string id="red_duty_outpost_trader_task_3_finish">
|
||||
<text>Óæ ëó÷øå ýòî, ÷åì ñóõïàéêè. Îòëè÷íàÿ ðàáîòà.</text>
|
||||
</string>
|
||||
|
||||
<string id="red_duty_outpost_trader_task_4_name">
|
||||
<text>Íàéòè %s</text>
|
||||
</string>
|
||||
<string id="red_duty_outpost_trader_task_4_text">
|
||||
<text>Ó÷¸íûì ñîâåðøåííî íåîáõîäèìî ïðåäîñòàâèòü %s äëÿ ïðîâåäåíèÿ èññëåäîâàíèé.</text>
|
||||
</string>
|
||||
<string id="red_duty_outpost_trader_task_4_about">
|
||||
<text>Äà ó÷¸íûå òóò âñ¸ õîòÿò èçó÷èòü %s. Ìîè áîéöû îáû÷íî ðàçáèðàþòñÿ ñ ìóòàíòàìè æ¸ñòêî è "îáðàçöîâ" îò íèõ îñòà¸òñÿ ìàëî. Ïîñìîòðèì, ñìîæåøü ëè òû ðàçäîáûòü, ÷òî íóæíî.</text>
|
||||
</string>
|
||||
<string id="red_duty_outpost_trader_task_4_finish">
|
||||
<text>Íàêîíåö õîòü êòî-òî ñìîã îñòàâèòü îò òâàðè êóñîê äîñòàòî÷íîãî ðàçìåðà.</text>
|
||||
</string>
|
||||
|
||||
|
||||
<string id="meet_guid_duty_outpost_list_0">
|
||||
<text>Êóäà ìîæåøü ìåíÿ îòâåñòè?</text>
|
||||
</string>
|
||||
<string id="meet_guid_duty_outpost_list_1">
|
||||
<text>Äî Áàðà íà "Ðîñòêå" çà òûñÿ÷ó, äî "Ñêàäîâñêà" íà Çàòîíå çà äâå òûñÿ÷è, äî Ñâàëêè çà òðè òûñÿ÷è, äî ßíòàðÿ çà îäíó, ê âîåííûì íà Àãðîïðîìå çà ïÿòü òûñÿ÷, äî Äåðåâíè íîâè÷êîâ íà Êîðäîíå çà øåñòü òûñÿ÷, è äî Áîëîò çà øåñòü òûñÿ÷.</text>
|
||||
</string>
|
||||
|
||||
<string id="travel_guid_duty_outpost_0">
|
||||
<text>Ìíå íóæåí ïðîâîäíèê.</text>
|
||||
</string>
|
||||
<string id="travel_guid_duty_outpost_1">
|
||||
<text>Êóäà òåáÿ îòâåñòè?</text>
|
||||
</string>
|
||||
<string id="travel_guid_duty_outpost_2">
|
||||
<text>Íà "Ðîñòîê". %c[d_orange][1000 ðóáëåé]</text>
|
||||
</string>
|
||||
<string id="travel_guid_duty_outpost_3">
|
||||
<text>Íà Çàòîí. %c[d_orange][2000 ðóáëåé]</text>
|
||||
</string>
|
||||
<string id="travel_guid_duty_outpost_4">
|
||||
<text>Íà Ñâàëêó. %c[d_orange][3000 ðóáëåé]</text>
|
||||
</string>
|
||||
<string id="travel_guid_duty_outpost_5">
|
||||
<text>Íà ßíòàðü. %c[d_orange][4000 ðóáëåé]</text>
|
||||
</string>
|
||||
<string id="travel_guid_duty_outpost_6">
|
||||
<text>Íà Àãðîïðîì. %c[d_orange][5000 ðóáëåé]</text>
|
||||
</string>
|
||||
<string id="travel_guid_duty_outpost_7">
|
||||
<text>Íà Êîðäîí. %c[d_orange][6000 ðóáëåé]</text>
|
||||
</string>
|
||||
<string id="travel_guid_duty_outpost_8">
|
||||
<text>Íà Áîëîòà. %c[d_orange][6000 ðóáëåé]</text>
|
||||
</string>
|
||||
<string id="travel_guid_duty_outpost_9">
|
||||
<text>ß ïåðåäóìàë.</text>
|
||||
</string>
|
||||
|
||||
<string id="travel_guid_duty_outpost_from_others_0">
|
||||
<text>Çíàåøü äîðîãó äî ôîðïîñòà "Äîëãà" â Ðûæåì Ëåñó? Ìíå íàäî òóäà.</text>
|
||||
</string>
|
||||
|
||||
<string id="travel_guid_duty_outpost_from_others_1">
|
||||
<text>Äà. Çà %c[d_orange]%s ðóáëåé%c[255,160,160,190] ïðîâåäó.</text>
|
||||
</string>
|
||||
<string id="travel_guid_duty_outpost_from_others_2">
|
||||
<text>Âåäè. %c[d_orange][%s ðóáëåé]</text>
|
||||
</string>
|
||||
<string id="travel_guid_duty_outpost_from_others_3">
|
||||
<text>ß ïåðåäóìàë.</text>
|
||||
</string>
|
||||
|
||||
</string_table>
|
|
@ -0,0 +1,10 @@
|
|||
<w>
|
||||
<file name="ui\ui_npc_unique_duty_girl">
|
||||
<texture id="ui_npc_duty_girl" x="0" y="0" width="123" height="87" />
|
||||
</file>
|
||||
|
||||
<file name="ui\ui_npc_unique_duty_girl_message">
|
||||
<texture id="ui_npc_duty_girl_msg_image" x="0" y="0" width="83" height="47"/>
|
||||
</file>
|
||||
|
||||
</w>
|
BIN
mods/Duty Expansion/gamedata/meshes/actors/mnp_npc_remeik/duty_girl.ogf (Stored with Git LFS)
Normal file
BIN
mods/Duty Expansion/gamedata/meshes/actors/mnp_npc_remeik/duty_girl.ogf (Stored with Git LFS)
Normal file
Binary file not shown.
|
@ -0,0 +1,624 @@
|
|||
local HI = has_alife_info
|
||||
local GI = give_info
|
||||
local DI = disable_info
|
||||
local GT = game.translate_string
|
||||
|
||||
function NI(str)
|
||||
return not (has_alife_info(str))
|
||||
end
|
||||
|
||||
|
||||
local saved_dialog
|
||||
function add_dialog(p_id,id,phrase_id,cond,act)
|
||||
if not ( saved_dialog ) then
|
||||
return
|
||||
end
|
||||
|
||||
local phrase = saved_dialog:AddPhrase(phrase_id,tostring(id),tostring(p_id),-10000)
|
||||
if not ( phrase ) then
|
||||
return
|
||||
end
|
||||
|
||||
local phrase_script = phrase:GetPhraseScript()
|
||||
if ( cond ) then
|
||||
if ( type(cond) == "table" ) then
|
||||
for key, value in pairs(cond) do
|
||||
if (utils_data.findfunction(value,_G)) then
|
||||
phrase_script:AddPrecondition(value)
|
||||
else
|
||||
printe("!ERROR dialog_manager | No such function exists '%s'",value)
|
||||
end
|
||||
end
|
||||
else
|
||||
if (utils_data.findfunction(cond,_G)) then
|
||||
phrase_script:AddPrecondition(cond)
|
||||
else
|
||||
printe("!ERROR dialog_manager | No such function exists '%s'",cond)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if ( act ) then
|
||||
if ( type(act) == "table" ) then
|
||||
for key, value in pairs(act) do
|
||||
if (utils_data.findfunction(value,_G)) then
|
||||
phrase_script:AddAction(value)
|
||||
else
|
||||
printe("!ERROR dialog_manager | No such function exists '%s'",value)
|
||||
end
|
||||
end
|
||||
else
|
||||
if (utils_data.findfunction(act,_G)) then
|
||||
phrase_script:AddAction(act)
|
||||
else
|
||||
printe("!ERROR dialog_manager | No such function exists '%s'",act)
|
||||
end
|
||||
end
|
||||
end
|
||||
return phrase_script
|
||||
end
|
||||
|
||||
--[[----------------------------------------------------------------------------------------------------
|
||||
General
|
||||
------------------------------------------------------------------------------------------------------]]
|
||||
function duty_girl_companion_join_dialog_con(a,b,dialog_name,pre_pid,cur_pid)
|
||||
if (NI("duty_girl_capture_the_brirge_done")) then
|
||||
return false
|
||||
end
|
||||
if (dialogs_axr_companion.is_actor_companion(a,b)) then
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
function duty_girl_companion_join_dialog(dialog)
|
||||
saved_dialog = dialog
|
||||
add_dialog("",0,"duty_girl_companion_join_0")
|
||||
add_dialog(0,1,"duty_girl_companion_join_1","dialogs_duty_girl.duty_girl_companion_join_1_con","dialogs_axr_companion.become_actor_companion")
|
||||
add_dialog(0,2,"duty_girl_companion_join_2","dialogs_duty_girl.duty_girl_companion_join_2_con")
|
||||
end
|
||||
|
||||
function duty_girl_companion_join_1_con(a,b)
|
||||
return not duty_girl_companion_join_2_con(a,b)
|
||||
end
|
||||
|
||||
function duty_girl_companion_join_2_con(a,b)
|
||||
local npc = get_story_object("devushka")
|
||||
if (npc and npc:alive() and dialogs_axr_companion.is_actor_companion(db.actor,npc)) then
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
function duty_girl_companion_leave_dialog_con(a,b,dialog_name,pre_pid,cur_pid)
|
||||
if (dialogs_axr_companion.is_actor_companion(a,b)) then
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
function duty_girl_companion_leave_dialog(dialog)
|
||||
saved_dialog = dialog
|
||||
add_dialog("",0,"duty_girl_companion_leave_0")
|
||||
add_dialog(0,1,"duty_girl_companion_leave_1")
|
||||
add_dialog(1,2,"duty_girl_companion_leave_2")
|
||||
add_dialog(1,3,"duty_girl_companion_leave_3")
|
||||
add_dialog(2,4,"duty_girl_companion_leave_4",nil,"dialogs_axr_companion.remove_companions_from_squad")
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
function duty_girl_actor_ask_companion_dialog_con(a,b,dialog_name,pre_pid,cur_pid)
|
||||
local str = db.actor and character_community(db.actor) or ""
|
||||
if (str and string.find(str,"dolg")) then
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
function duty_girl_actor_ask_companion_dialog(dialog)
|
||||
|
||||
end
|
||||
|
||||
function duty_girl_first_meet(dialog)
|
||||
saved_dialog = dialog
|
||||
add_dialog("",0,"duty_girl_first_meet_0")
|
||||
add_dialog(0,1,"duty_girl_first_meet_1")
|
||||
add_dialog(1,2,"duty_girl_first_meet_2")
|
||||
add_dialog(2,3,"duty_girl_first_meet_3")
|
||||
add_dialog(3,4,"duty_girl_first_meet_4")
|
||||
add_dialog(4,5,"duty_girl_first_meet_5",nil,"dialogs_duty_girl.GI_duty_girl_first_meet")
|
||||
end
|
||||
|
||||
--[[----------------------------------------------------------------------------------------------------
|
||||
Quests
|
||||
------------------------------------------------------------------------------------------------------]]
|
||||
--[[----------------------------------------------------------------------------------------------------
|
||||
duty_girl_hunting_chimera
|
||||
------------------------------------------------------------------------------------------------------]]
|
||||
function duty_girl_hunting_chimera_init_con(a,b,dialog_name,pre_pid,cur_pid)
|
||||
if (HI("duty_girl_hunting_chimera_done") or HI("duty_girl_hunting_chimera_fail")) then
|
||||
return false
|
||||
end
|
||||
return HI("duty_girl_first_meet") and NI("duty_girl_hunting_chimera_init")
|
||||
end
|
||||
function duty_girl_hunting_chimera_init(dialog)
|
||||
saved_dialog = dialog
|
||||
add_dialog("",0,"duty_girl_hunting_chimera_init_0")
|
||||
add_dialog(0,1,"duty_girl_hunting_chimera_init_1",nil,"dialogs_duty_girl.duty_girl_hunting_chimera")
|
||||
end
|
||||
|
||||
function duty_girl_hunting_chimera_move_con(a,b,dialog_name,pre_pid,cur_pid)
|
||||
if (HI("duty_girl_hunting_chimera_done") or HI("duty_girl_hunting_chimera_fail")) then
|
||||
return false
|
||||
end
|
||||
local npc = dialogs.who_is_npc(a,b)
|
||||
return HI("duty_girl_hunting_chimera_init") and NI("duty_girl_hunting_chimera_move") and xr_conditions.npc_on_level(db.actor,npc,{"l02_garbage"})
|
||||
end
|
||||
function duty_girl_hunting_chimera_move(dialog)
|
||||
saved_dialog = dialog
|
||||
add_dialog("",0,"duty_girl_hunting_chimera_move_0")
|
||||
add_dialog(0,1,"duty_girl_hunting_chimera_move_1",nil,"dialogs_duty_girl.GI_duty_girl_hunting_chimera_move")
|
||||
end
|
||||
|
||||
function duty_girl_hunting_chimera_done_con(a,b,dialog_name,pre_pid,cur_pid)
|
||||
if (HI("duty_girl_hunting_chimera_done") or HI("duty_girl_hunting_chimera_fail")) then
|
||||
return false
|
||||
end
|
||||
return HI("duty_girl_hunting_chimera_dead") and NI("duty_girl_hunting_chimera_reward")
|
||||
end
|
||||
function duty_girl_hunting_chimera_done(dialog)
|
||||
saved_dialog = dialog
|
||||
add_dialog("",0,"duty_girl_hunting_chimera_done_0")
|
||||
local action = {
|
||||
"dialogs_duty_girl.give_money_8000",
|
||||
"dialogs_duty_girl.GI_duty_girl_hunting_chimera_reward",
|
||||
}
|
||||
add_dialog(0,1,"duty_girl_hunting_chimera_done_1",nil,action)
|
||||
end
|
||||
|
||||
--[[----------------------------------------------------------------------------------------------------
|
||||
duty_girl_monolith_elite
|
||||
------------------------------------------------------------------------------------------------------]]
|
||||
function duty_girl_monolith_elite_init_con(a,b,dialog_name,pre_pid,cur_pid)
|
||||
if (HI("duty_girl_monolith_elite_done") or HI("duty_girl_monolith_elite_fail")) then
|
||||
return false
|
||||
end
|
||||
local npc = dialogs.who_is_npc(a,b)
|
||||
return HI("duty_girl_hunting_chimera_done") and NI("duty_girl_monolith_elite_init") and xr_conditions.npc_on_level(db.actor,npc,{"l05_bar"})
|
||||
end
|
||||
function duty_girl_monolith_elite_init(dialog)
|
||||
saved_dialog = dialog
|
||||
add_dialog("",0,"duty_girl_monolith_elite_init_0")
|
||||
add_dialog(0,1,"duty_girl_monolith_elite_init_1",nil,"dialogs_duty_girl.duty_girl_monolith_elite")
|
||||
end
|
||||
|
||||
function duty_girl_monolith_elite_join_con(a,b,dialog_name,pre_pid,cur_pid)
|
||||
if (HI("duty_girl_monolith_elite_done") or HI("duty_girl_monolith_elite_fail")) then
|
||||
return false
|
||||
end
|
||||
|
||||
local npc = dialogs.who_is_npc(a,b)
|
||||
return HI("duty_girl_monolith_elite_init") and NI("duty_girl_monolith_elite_join") and xr_conditions.npc_on_level(db.actor,npc,{"l07_military"})
|
||||
end
|
||||
|
||||
function duty_girl_monolith_elite_done_con(a,b,dialog_name,pre_pid,cur_pid)
|
||||
if (HI("duty_girl_monolith_elite_done") or HI("duty_girl_monolith_elite_fail")) then
|
||||
return false
|
||||
end
|
||||
|
||||
return HI("duty_girl_monolith_elite_dead") and NI("duty_girl_monolith_elite_reward")
|
||||
end
|
||||
|
||||
function duty_girl_monolith_elite_done(dialog)
|
||||
saved_dialog = dialog
|
||||
add_dialog("",0,"duty_girl_monolith_elite_done_0")
|
||||
local action = {
|
||||
"dialogs_duty_girl.give_money_12000",
|
||||
"dialogs_duty_girl.GI_duty_girl_monolith_elite_reward",
|
||||
}
|
||||
add_dialog(0,1,"duty_girl_monolith_elite_done_1",nil,action)
|
||||
end
|
||||
|
||||
--[[----------------------------------------------------------------------------------------------------
|
||||
duty_girl_loot_stash
|
||||
------------------------------------------------------------------------------------------------------]]
|
||||
function duty_girl_loot_stash_init_con(a,b,dialog_name,pre_pid,cur_pid)
|
||||
if (HI("duty_girl_loot_stash_done")) then
|
||||
return false
|
||||
end
|
||||
|
||||
local npc = dialogs.who_is_npc(a,b)
|
||||
return HI("duty_girl_monolith_elite_done") and NI("duty_girl_loot_stash_init") and xr_conditions.npc_on_level(db.actor,npc,{"l05_bar"})
|
||||
end
|
||||
function duty_girl_loot_stash_init(dialog)
|
||||
saved_dialog = dialog
|
||||
add_dialog("",0,"duty_girl_loot_stash_init_0")
|
||||
add_dialog(0,1,"duty_girl_loot_stash_init_1",nil,"dialogs_duty_girl.duty_girl_loot_stash")
|
||||
add_dialog(1,2,"duty_girl_loot_stash_init_2")
|
||||
end
|
||||
|
||||
--[[----------------------------------------------------------------------------------------------------
|
||||
duty_girl_capture_the_brirge
|
||||
------------------------------------------------------------------------------------------------------]]
|
||||
function duty_girl_capture_the_brirge_init_con(a,b,dialog_name,pre_pid,cur_pid)
|
||||
if (HI("duty_girl_capture_the_brirge_done")) then
|
||||
return false
|
||||
end
|
||||
local npc = dialogs.who_is_npc(a,b)
|
||||
return HI("duty_girl_loot_stash_done") and NI("duty_girl_capture_the_brirge_init") and xr_conditions.npc_on_level(db.actor,npc,{"l05_bar"})
|
||||
end
|
||||
function duty_girl_capture_the_brirge_init(dialog)
|
||||
saved_dialog = dialog
|
||||
add_dialog("",0,"duty_girl_capture_the_brirge_init_0")
|
||||
add_dialog(0,1,"duty_girl_capture_the_brirge_init_1",nil,"dialogs_duty_girl.duty_girl_capture_the_brirge")
|
||||
end
|
||||
|
||||
function duty_girl_capture_the_brirge_join_con(a,b,dialog_name,pre_pid,cur_pid)
|
||||
if (HI("duty_girl_capture_the_brirge_done") or HI("duty_girl_capture_the_brirge_fail")) then
|
||||
return false
|
||||
end
|
||||
|
||||
local npc = dialogs.who_is_npc(a,b)
|
||||
return HI("duty_girl_capture_the_brirge_init") and NI("duty_girl_capture_the_brirge_join") and xr_conditions.npc_on_level(db.actor,npc,{"l10_red_forest"})
|
||||
end
|
||||
|
||||
function duty_girl_capture_the_brirge_done_con(a,b,dialog_name,pre_pid,cur_pid)
|
||||
if (HI("duty_girl_capture_the_brirge_done") or HI("duty_girl_capture_the_brirge_fail")) then
|
||||
return false
|
||||
end
|
||||
|
||||
return HI("duty_girl_capture_the_brirge_dead") and NI("duty_girl_capture_the_brirge_reward")
|
||||
end
|
||||
|
||||
function duty_girl_capture_the_brirge_done(dialog)
|
||||
saved_dialog = dialog
|
||||
add_dialog("",0,"duty_girl_capture_the_brirge_done_0")
|
||||
local action = {
|
||||
"dialogs_duty_girl.give_money_20000",
|
||||
"dialogs_duty_girl.GI_duty_girl_capture_the_brirge_reward",
|
||||
}
|
||||
add_dialog(0,1,"duty_girl_capture_the_brirge_done_1",nil,action)
|
||||
end
|
||||
|
||||
--[[----------------------------------------------------------------------------------------------------
|
||||
Others
|
||||
------------------------------------------------------------------------------------------------------]]
|
||||
function red_duty_outpost_trader_concern_hostile(dialog)
|
||||
saved_dialog = dialog
|
||||
add_dialog("",0,"red_duty_outpost_trader_concern_hostile_0")
|
||||
add_dialog(0,1,"red_duty_outpost_trader_concern_hostile_1")
|
||||
end
|
||||
|
||||
function meet_guid_duty_outpost(dialog)
|
||||
saved_dialog = dialog
|
||||
add_dialog("",0,"meet_guid_duty_outpost_list_0")
|
||||
add_dialog(0,1,"meet_guid_duty_outpost_list_1")
|
||||
end
|
||||
|
||||
function travel_guid_duty_outpost(dialog)
|
||||
saved_dialog = dialog
|
||||
local action = {}
|
||||
|
||||
add_dialog("",0,"travel_guid_duty_outpost_0")
|
||||
add_dialog(0,1,"travel_guid_duty_outpost_1")
|
||||
|
||||
action = { "dialogs_duty_girl.lost_money_1000","dialogs_mlr.l05_bar_guid" }
|
||||
add_dialog(1,2,"travel_guid_duty_outpost_2","dialogs_duty_girl.have_money_1000",action)
|
||||
|
||||
action = { "dialogs_duty_girl.lost_money_2000","dialogs_mlr.zaton_guid" }
|
||||
add_dialog(1,3,"travel_guid_duty_outpost_3","dialogs_duty_girl.have_money_2000",action)
|
||||
|
||||
action = { "dialogs_duty_girl.lost_money_3000","dialogs_mlr.garbage_guid" }
|
||||
add_dialog(1,4,"travel_guid_duty_outpost_4","dialogs_duty_girl.have_money_3000",action)
|
||||
|
||||
action = { "dialogs_duty_girl.lost_money_4000","dialogs_mlr.yantar_guid" }
|
||||
add_dialog(1,5,"travel_guid_duty_outpost_5","dialogs_duty_girl.have_money_4000",action)
|
||||
|
||||
action = { "dialogs_duty_girl.lost_money_5000","dialogs_mlr.agroprom_guid_military" }
|
||||
add_dialog(1,6,"travel_guid_duty_outpost_6","dialogs_duty_girl.have_money_5000",action)
|
||||
|
||||
action = { "dialogs_duty_girl.lost_money_6000","dialogs_mlr.escape_village_guid" }
|
||||
add_dialog(1,7,"travel_guid_duty_outpost_7","dialogs_duty_girl.have_money_6000",action)
|
||||
|
||||
action = { "dialogs_duty_girl.lost_money_6000","dialogs_mlr.marsh_guid" }
|
||||
add_dialog(1,8,"travel_guid_duty_outpost_8","dialogs_duty_girl.have_money_6000",action)
|
||||
add_dialog(1,9,"travel_guid_duty_outpost_9")
|
||||
end
|
||||
|
||||
function travel_guid_duty_outpost_from_others_1(str)
|
||||
return strformat(game.translate_string("travel_guid_duty_outpost_from_others_1"),str)
|
||||
end
|
||||
|
||||
function travel_guid_duty_outpost_from_others_2(str)
|
||||
return strformat(game.translate_string("travel_guid_duty_outpost_from_others_2"),str)
|
||||
end
|
||||
|
||||
function travel_guid_duty_outpost_from_others_1000(dialog)
|
||||
saved_dialog = dialog
|
||||
local txt, action = "", {}
|
||||
|
||||
add_dialog("",0,"travel_guid_duty_outpost_from_others_0")
|
||||
|
||||
txt = travel_guid_duty_outpost_from_others_1(1000)
|
||||
add_dialog(0,1,txt)
|
||||
|
||||
txt = travel_guid_duty_outpost_from_others_2(1000)
|
||||
action = {"dialogs_duty_girl.lost_money_1000","dialogs_duty_girl.change_lvl_to_duty_outpost"}
|
||||
add_dialog(1,2,txt,"dialogs_duty_girl.have_money_1000",action)
|
||||
|
||||
add_dialog(1,3,"travel_guid_duty_outpost_from_others_3")
|
||||
end
|
||||
|
||||
function travel_guid_duty_outpost_from_others_2000(dialog)
|
||||
saved_dialog = dialog
|
||||
local txt, action = "", {}
|
||||
|
||||
add_dialog("",0,"travel_guid_duty_outpost_from_others_0")
|
||||
|
||||
txt = travel_guid_duty_outpost_from_others_1(2000)
|
||||
add_dialog(0,1,txt)
|
||||
|
||||
txt = travel_guid_duty_outpost_from_others_2(2000)
|
||||
action = {"dialogs_duty_girl.lost_money_2000","dialogs_duty_girl.change_lvl_to_duty_outpost"}
|
||||
add_dialog(1,2,txt,"dialogs_duty_girl.have_money_2000",action)
|
||||
|
||||
add_dialog(1,3,"travel_guid_duty_outpost_from_others_3")
|
||||
end
|
||||
|
||||
function travel_guid_duty_outpost_from_others_3000(dialog)
|
||||
saved_dialog = dialog
|
||||
local txt, action = "", {}
|
||||
|
||||
add_dialog("",0,"travel_guid_duty_outpost_from_others_0")
|
||||
|
||||
txt = travel_guid_duty_outpost_from_others_1(3000)
|
||||
add_dialog(0,1,txt)
|
||||
|
||||
txt = travel_guid_duty_outpost_from_others_2(3000)
|
||||
action = {"dialogs_duty_girl.lost_money_3000","dialogs_duty_girl.change_lvl_to_duty_outpost"}
|
||||
add_dialog(1,2,txt,"dialogs_duty_girl.have_money_3000",action)
|
||||
|
||||
add_dialog(1,3,"travel_guid_duty_outpost_from_others_3")
|
||||
end
|
||||
|
||||
function travel_guid_duty_outpost_from_others_4000(dialog)
|
||||
saved_dialog = dialog
|
||||
local txt, action = "", {}
|
||||
|
||||
add_dialog("",0,"travel_guid_duty_outpost_from_others_0")
|
||||
|
||||
txt = travel_guid_duty_outpost_from_others_1(4000)
|
||||
add_dialog(0,1,txt)
|
||||
|
||||
txt = travel_guid_duty_outpost_from_others_2(4000)
|
||||
action = {"dialogs_duty_girl.lost_money_4000","dialogs_duty_girl.change_lvl_to_duty_outpost"}
|
||||
add_dialog(1,2,txt,"dialogs_duty_girl.have_money_4000",action)
|
||||
|
||||
add_dialog(1,3,"travel_guid_duty_outpost_from_others_3")
|
||||
end
|
||||
|
||||
function travel_guid_duty_outpost_from_others_5000(dialog)
|
||||
saved_dialog = dialog
|
||||
local txt, action = "", {}
|
||||
|
||||
add_dialog("",0,"travel_guid_duty_outpost_from_others_0")
|
||||
|
||||
txt = travel_guid_duty_outpost_from_others_1(5000)
|
||||
add_dialog(0,1,txt)
|
||||
|
||||
txt = travel_guid_duty_outpost_from_others_2(5000)
|
||||
action = {"dialogs_duty_girl.lost_money_5000","dialogs_duty_girl.change_lvl_to_duty_outpost"}
|
||||
add_dialog(1,2,txt,"dialogs_duty_girl.have_money_5000",action)
|
||||
|
||||
add_dialog(1,3,"travel_guid_duty_outpost_from_others_3")
|
||||
end
|
||||
|
||||
function travel_guid_duty_outpost_from_others_6000(dialog)
|
||||
saved_dialog = dialog
|
||||
local txt, action = "", {}
|
||||
|
||||
add_dialog("",0,"travel_guid_duty_outpost_from_others_0")
|
||||
|
||||
txt = travel_guid_duty_outpost_from_others_1(6000)
|
||||
add_dialog(0,1,txt)
|
||||
|
||||
txt = travel_guid_duty_outpost_from_others_2(6000)
|
||||
action = {"dialogs_duty_girl.lost_money_6000","dialogs_duty_girl.change_lvl_to_duty_outpost"}
|
||||
add_dialog(1,2,txt,"dialogs_duty_girl.have_money_6000",action)
|
||||
|
||||
add_dialog(1,3,"travel_guid_duty_outpost_from_others_3")
|
||||
end
|
||||
|
||||
--[[----------------------------------------------------------------------------------------------------
|
||||
Task
|
||||
------------------------------------------------------------------------------------------------------]]
|
||||
function duty_girl_hunting_chimera()
|
||||
task_manager.get_task_manager():give_task("duty_girl_hunting_chimera")
|
||||
end
|
||||
|
||||
function duty_girl_monolith_elite()
|
||||
task_manager.get_task_manager():give_task("duty_girl_monolith_elite")
|
||||
end
|
||||
|
||||
function duty_girl_loot_stash()
|
||||
task_manager.get_task_manager():give_task("duty_girl_loot_stash")
|
||||
end
|
||||
|
||||
function duty_girl_capture_the_brirge()
|
||||
task_manager.get_task_manager():give_task("duty_girl_capture_the_brirge")
|
||||
end
|
||||
|
||||
--[[----------------------------------------------------------------------------------------------------
|
||||
Info
|
||||
------------------------------------------------------------------------------------------------------]]
|
||||
function GI_duty_girl_first_meet(a,b)
|
||||
return GI("duty_girl_first_meet")
|
||||
end
|
||||
|
||||
function GI_duty_girl_hunting_chimera_move(a,b)
|
||||
return GI("duty_girl_hunting_chimera_move")
|
||||
end
|
||||
|
||||
function GI_duty_girl_hunting_chimera_reward(a,b)
|
||||
return GI("duty_girl_hunting_chimera_reward")
|
||||
end
|
||||
|
||||
function GI_duty_girl_monolith_elite_join(a,b)
|
||||
return GI("duty_girl_monolith_elite_join")
|
||||
end
|
||||
|
||||
function GI_duty_girl_monolith_elite_reward(a,b)
|
||||
return GI("duty_girl_monolith_elite_reward")
|
||||
end
|
||||
|
||||
function GI_duty_girl_capture_the_brirge_reward(a,b)
|
||||
return GI("duty_girl_capture_the_brirge_reward")
|
||||
end
|
||||
|
||||
--[[----------------------------------------------------------------------------------------------------
|
||||
Phrases
|
||||
------------------------------------------------------------------------------------------------------]]
|
||||
function get_phrase_monolith_elite_join_0(a,b)
|
||||
return NI("duty_girl_monolith_elite_supply") and
|
||||
GT("duty_girl_monolith_elite_join_0") or
|
||||
GT("duty_girl_monolith_elite_join_2")
|
||||
end
|
||||
|
||||
function get_phrase_monolith_elite_join_1(a,b)
|
||||
return NI("duty_girl_monolith_elite_supply") and
|
||||
GT("duty_girl_monolith_elite_join_1") or " "
|
||||
end
|
||||
|
||||
function action_monolith_elite_join(a,b)
|
||||
if NI("duty_girl_monolith_elite_supply") then
|
||||
give_item_monolith_elite_supply(a,b)
|
||||
else
|
||||
GI("duty_girl_monolith_elite_join")
|
||||
dialogs.break_dialog(a,b)
|
||||
end
|
||||
end
|
||||
|
||||
function get_phrase_capture_the_brirge_join_0(a,b)
|
||||
return NI("duty_girl_capture_the_brirge_supply") and
|
||||
GT("duty_girl_capture_the_brirge_join_0") or
|
||||
GT("duty_girl_capture_the_brirge_join_2")
|
||||
end
|
||||
|
||||
function get_phrase_capture_the_brirge_join_1(a,b)
|
||||
return NI("duty_girl_capture_the_brirge_supply") and
|
||||
GT("duty_girl_capture_the_brirge_join_1") or " "
|
||||
end
|
||||
|
||||
function action_capture_the_brirge_join(a,b)
|
||||
if NI("duty_girl_capture_the_brirge_supply") then
|
||||
give_item_capture_the_brirge_join(a,b)
|
||||
else
|
||||
GI("duty_girl_capture_the_brirge_join")
|
||||
dialogs.break_dialog(a,b)
|
||||
end
|
||||
end
|
||||
|
||||
--[[----------------------------------------------------------------------------------------------------
|
||||
Utilites
|
||||
------------------------------------------------------------------------------------------------------]]
|
||||
function give_money_8000(a,b)
|
||||
return dialogs.relocate_money_to_actor(a,b,8000)
|
||||
end
|
||||
|
||||
function give_money_12000(a,b)
|
||||
return dialogs.relocate_money_to_actor(a,b,12000)
|
||||
end
|
||||
|
||||
function give_money_20000(a,b)
|
||||
return dialogs.relocate_money_to_actor(a,b,20000)
|
||||
end
|
||||
|
||||
function have_money_1000(a,b)
|
||||
return mlr_utils.have_money(1000)
|
||||
end
|
||||
|
||||
function have_money_2000(a,b)
|
||||
return mlr_utils.have_money(2000)
|
||||
end
|
||||
|
||||
function have_money_3000(a,b)
|
||||
return mlr_utils.have_money(3000)
|
||||
end
|
||||
|
||||
function have_money_4000(a,b)
|
||||
return mlr_utils.have_money(4000)
|
||||
end
|
||||
|
||||
function have_money_5000(a,b)
|
||||
return mlr_utils.have_money(5000)
|
||||
end
|
||||
|
||||
function have_money_6000(a,b)
|
||||
return mlr_utils.have_money(6000)
|
||||
end
|
||||
|
||||
function lost_money_1000(a,b)
|
||||
return dialogs.relocate_money_from_actor(a,b,1000)
|
||||
end
|
||||
|
||||
function lost_money_2000(a,b)
|
||||
return dialogs.relocate_money_from_actor(a,b,2000)
|
||||
end
|
||||
|
||||
function lost_money_3000(a,b)
|
||||
return dialogs.relocate_money_from_actor(a,b,3000)
|
||||
end
|
||||
|
||||
function lost_money_4000(a,b)
|
||||
return dialogs.relocate_money_from_actor(a,b,4000)
|
||||
end
|
||||
|
||||
function lost_money_5000(a,b)
|
||||
return dialogs.relocate_money_from_actor(a,b,5000)
|
||||
end
|
||||
|
||||
function lost_money_6000(a,b)
|
||||
return dialogs.relocate_money_from_actor(a,b,6000)
|
||||
end
|
||||
|
||||
local function give_items(p)
|
||||
if not(p and is_not_empty(p)) then return end
|
||||
|
||||
for sec,num in pairs(p) do
|
||||
if (sec and num) then
|
||||
if (IsItem("ammo",sec)) then
|
||||
alife_create_item(sec,db.actor,{ammo = num})
|
||||
else
|
||||
for k=1,num do
|
||||
alife_create_item(sec,db.actor)
|
||||
end
|
||||
end
|
||||
news_manager.relocate_item(db.actor,"in",sec,num)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function give_item_monolith_elite_supply(a,b)
|
||||
give_items({bandage = 5, medkit_army = 3})
|
||||
GI("duty_girl_monolith_elite_supply")
|
||||
end
|
||||
|
||||
function give_item_capture_the_brirge_join(a,b)
|
||||
give_items({bandage = 5, medkit_army = 3})
|
||||
GI("duty_girl_capture_the_brirge_supply")
|
||||
end
|
||||
|
||||
function change_lvl_to_duty_outpost(a,b)
|
||||
if (db.actor:is_talking()) then
|
||||
db.actor:stop_talk()
|
||||
end
|
||||
local smart = SIMBOARD.smarts_by_names["red_smart_terrain_bridge"]
|
||||
if (smart) then
|
||||
ChangeLevel(vector():set(-118,5,-256),smart.m_level_vertex_id,smart.m_game_vertex_id,vector():set(0,0,-1),true)
|
||||
end
|
||||
end
|
|
@ -0,0 +1,136 @@
|
|||
local HI = has_alife_info
|
||||
local GI = give_info
|
||||
local DI = disable_info
|
||||
function NI(str)
|
||||
return not (has_alife_info(str))
|
||||
end
|
||||
|
||||
--[[----------------------------------------------------------------------------------------------------
|
||||
Main
|
||||
------------------------------------------------------------------------------------------------------]]
|
||||
function duty_girl_init()
|
||||
if (NI("duty_girl_init")) then
|
||||
if not (get_story_se_object("squad_duty_girl")) then
|
||||
local smart = SIMBOARD.smarts_by_names["bar_dolg_general"]
|
||||
local squad = SIMBOARD:create_squad(smart,"squad_duty_girl")
|
||||
--[[
|
||||
if (squad) then
|
||||
for k in squad:squad_members() do
|
||||
local se = k.id and alife():object(k.id)
|
||||
if (se) then
|
||||
local sim = alife()
|
||||
for i=1,65534 do
|
||||
local wpn = sim:object(i)
|
||||
if (wpn and wpn.parent_id and (wpn.parent_id == se.id) and string.find(wpn:name(),"wpn_"))then
|
||||
safe_release_manager.release(wpn)
|
||||
end
|
||||
end
|
||||
alife():create("wpn_groza",se.position,se.m_level_vertex_id,se.m_game_vertex_id,se.id)
|
||||
end
|
||||
end
|
||||
end
|
||||
--]]
|
||||
end
|
||||
if (get_story_se_object("squad_duty_girl")) then
|
||||
GI("duty_girl_init")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function anna_no_hip_allowed()
|
||||
local ann = get_story_se_object("stalker_duty_girl")
|
||||
if (ann and alife():has_info(ann.id,"npcx_is_companion")) then
|
||||
local hip = get_story_se_object("devushka")
|
||||
if (hip and alife():has_info(hip.id,"npcx_is_companion")) then
|
||||
local npc = db.storage[ann.id] and db.storage[ann.id].object or level.object_by_id(ann.id)
|
||||
if (npc) then
|
||||
dialogs_axr_companion.remove_companions_from_squad(db.actor,npc)
|
||||
end
|
||||
end
|
||||
else
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
function actor_on_first_update()
|
||||
duty_girl_init()
|
||||
CreateTimeEvent(AC_ID,"anna_no_hip_allowed",1000,anna_no_hip_allowed)
|
||||
end
|
||||
|
||||
function npcs_friendly_to_community(npc_1,npc_2,com)
|
||||
local com_1 = npc_1 and character_community(npc_1)
|
||||
local com_2 = npc_2 and character_community(npc_2)
|
||||
if (com_1 and com_2 and (not game_relations.is_factions_enemies(com_1,com)) and (not game_relations.is_factions_enemies(com_2,com))) then
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
function npc_on_before_hit(npc,shit,bone_id,flags)
|
||||
if (npc and string.find(npc:name(),"stalker_duty_girl")) then
|
||||
flags.ret_value = false
|
||||
end
|
||||
end
|
||||
|
||||
function on_enemy_eval(npc,ene,flags)
|
||||
if (npc:has_info("npcx_is_companion") or ene:has_info("npcx_is_companion")) then
|
||||
local com = character_community(db.actor)
|
||||
if (com and npcs_friendly_to_community(npc,ene,com)) then
|
||||
flags.override = true
|
||||
flags.result = false
|
||||
end
|
||||
end
|
||||
end
|
||||
--[[
|
||||
function npc_on_choose_weapon(npc,cur_wpn,flags)
|
||||
if not (npc and unique_character_storage[npc:section()] and unique_character_storage[npc:section()].weapon) then
|
||||
return
|
||||
end
|
||||
|
||||
local wpn_section = unique_character_storage[npc:section()].weapon
|
||||
|
||||
if not (wpn_section and (wpn_section ~= "") and (wpn_section ~= "nil")) then
|
||||
return
|
||||
end
|
||||
|
||||
if (cur_wpn and (cur_wpn:section() == wpn_section)) then
|
||||
return
|
||||
end
|
||||
|
||||
local function itr(npc,itm)
|
||||
if (itm and (itm:section() ~= wpn_section) and IsWeapon(itm)) then
|
||||
local se = alife():object(itm:id())
|
||||
if (se) then
|
||||
safe_release_manager.release(se)
|
||||
end
|
||||
end
|
||||
end
|
||||
npc:iterate_inventory(itr,npc)
|
||||
|
||||
if (npc:object(wpn_section)) then
|
||||
return
|
||||
end
|
||||
alife():create(wpn_section,npc:position(),npc:level_vertex_id(),npc:game_vertex_id(),npc:id())
|
||||
end
|
||||
--]]
|
||||
|
||||
--[[----------------------------------------------------------------------------------------------------
|
||||
Registers
|
||||
------------------------------------------------------------------------------------------------------]]
|
||||
function on_game_start()
|
||||
RegisterScriptCallback("actor_on_first_update",actor_on_first_update)
|
||||
RegisterScriptCallback("npc_on_before_hit",npc_on_before_hit)
|
||||
RegisterScriptCallback("on_enemy_eval",on_enemy_eval)
|
||||
--RegisterScriptCallback("npc_on_choose_weapon",npc_on_choose_weapon)
|
||||
end
|
||||
|
||||
--[[----------------------------------------------------------------------------------------------------
|
||||
Debug
|
||||
------------------------------------------------------------------------------------------------------]]
|
||||
--[[
|
||||
cmd = debug_cmd_list.command_get_list()
|
||||
|
||||
function cmd.chan()
|
||||
duty_girl_init()
|
||||
end
|
||||
--]]
|
|
@ -0,0 +1,149 @@
|
|||
|
||||
local HI = has_alife_info
|
||||
local GI = give_info
|
||||
local DI = disable_info
|
||||
function NI(str)
|
||||
return not (has_alife_info(str))
|
||||
end
|
||||
|
||||
local storage_data = {}
|
||||
|
||||
function reinforce_squad(actor,obj,p)
|
||||
local squad = p and p[1] and get_story_se_object(p[1])
|
||||
local smart = squad and squad.smart_id and db.smart_terrain_by_id[squad.smart_id]
|
||||
if not (squad and smart) then
|
||||
return
|
||||
end
|
||||
|
||||
local lst = ini_sys:r_string_ex(squad:section_name(),"npc_random")
|
||||
lst = lst and parse_names(lst)
|
||||
|
||||
local str = ini_sys:r_string_ex(squad:section_name(),"npc_in_squad")
|
||||
str = str and str_explode(str,",")
|
||||
local num = str and (tonumber(str[2]) or tonumber(str[1]))
|
||||
|
||||
--printf("GhenTuong: refill_squad %s",squad:section_name())
|
||||
if (lst and num) then
|
||||
local n = tonumber(p[2]) or 1
|
||||
for k=1,n do
|
||||
if (squad:npc_count() < num) then
|
||||
local sec = lst[math.random(#lst)]
|
||||
local commander = alife_object(squad:commander_id())
|
||||
|
||||
if (sec and ini_sys:section_exist(sec) and commander) then
|
||||
local pos = commander.position
|
||||
local vid = commander.m_level_vertex_id
|
||||
local gid = commander.m_game_vertex_id
|
||||
|
||||
local id = squad:add_squad_member(sec,pos,vid,gid)
|
||||
local se = id and alife_object(id)
|
||||
if (se) then
|
||||
smart:register_npc(se)
|
||||
SIMBOARD:setup_squad_and_group(se)
|
||||
end
|
||||
squad:update()
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function clean_mess(actor,smart,p)
|
||||
if (HI("duty_outpost_clean_mess")) then
|
||||
return
|
||||
end
|
||||
local zone = db.zone_by_name["red_smart_terrain_bridge_surge_hide_a1"]
|
||||
if (smart and zone) then
|
||||
local section_list = {
|
||||
["physic_destroyable_object"] = true,
|
||||
["explosive_barrel_low"] = true,
|
||||
["explosive_hide"] = true,
|
||||
}
|
||||
for id=1,65534 do
|
||||
local se = alife():object(id)
|
||||
if (se and section_list[se:section_name()] and simulation_objects.is_on_the_same_level(se,smart) and zone:inside(se.position)) then
|
||||
safe_release_manager.release(se)
|
||||
printf("Release [%s]",se:name())
|
||||
end
|
||||
end
|
||||
GI("duty_outpost_clean_mess")
|
||||
end
|
||||
end
|
||||
|
||||
function play_sound(actor,obj,p)
|
||||
if (p and p[1]) then
|
||||
local snd = xr_sound.set_sound_play(obj:id(),p[1])
|
||||
if (snd and tonumber(p[2]) and (snd.volume ~= tonumber(p[2]))) then
|
||||
snd.volume = tonumber(p[2])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function level_is_red_forest()
|
||||
return (level.name() == "l05_bar")
|
||||
end
|
||||
|
||||
function npcs_friendly_to_community(npc_1,npc_2,com)
|
||||
local com_1 = npc_1 and character_community(npc_1)
|
||||
local com_2 = npc_2 and character_community(npc_2)
|
||||
--printf("GhenTuong: %s %s %s %s %s",com_1,com_2,com,game_relations.is_factions_enemies(com_1,com),game_relations.is_factions_enemies(com_2,com))
|
||||
if (com_1 and com_2 and (not game_relations.is_factions_enemies(com_1,com)) and (not game_relations.is_factions_enemies(com_2,com))) then
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
function npc_on_before_hit(npc,shit,bone_id,flags)
|
||||
if not (HI("red_bridge_outpost") and level_is_red_forest()) then
|
||||
return
|
||||
end
|
||||
if (storage_data.actor_crime) then
|
||||
return
|
||||
end
|
||||
if (shit and shit.draftsman) then
|
||||
if (shit.draftsman:id() == AC_ID) then
|
||||
if (npcs_friendly_to_community(npc,shit.draftsman,"dolg")) then
|
||||
storage_data.actor_crime = true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function on_enemy_eval(npc,ene,flags)
|
||||
if not (HI("red_bridge_outpost") and level_is_red_forest()) then
|
||||
return
|
||||
end
|
||||
if not (IsStalker(npc) and IsStalker(ene)) then
|
||||
return
|
||||
end
|
||||
if (npcs_friendly_to_community(npc,ene,"dolg")) then
|
||||
if (storage_data.actor_crime and (ene:id() == AC_ID)) then
|
||||
return
|
||||
end
|
||||
flags.override = true
|
||||
flags.result = false
|
||||
end
|
||||
end
|
||||
|
||||
function save_state(m_data)
|
||||
m_data.gameplay_duty_outpost_storage_data = storage_data
|
||||
end
|
||||
|
||||
function load_state(m_data)
|
||||
storage_data = m_data.gameplay_duty_outpost_storage_data or {}
|
||||
end
|
||||
|
||||
function on_level_changing()
|
||||
storage_data.actor_crime = nil
|
||||
end
|
||||
|
||||
--[[----------------------------------------------------------------------------------------------------
|
||||
Registers
|
||||
------------------------------------------------------------------------------------------------------]]
|
||||
function on_game_start()
|
||||
RegisterScriptCallback("save_state",save_state)
|
||||
RegisterScriptCallback("load_state",load_state)
|
||||
RegisterScriptCallback("on_level_changing",on_level_changing)
|
||||
RegisterScriptCallback("npc_on_before_hit",npc_on_before_hit)
|
||||
RegisterScriptCallback("on_enemy_eval",on_enemy_eval)
|
||||
end
|
|
@ -0,0 +1,230 @@
|
|||
|
||||
local HI = has_alife_info
|
||||
local GI = give_info
|
||||
local DI = disable_info
|
||||
function NI(str)
|
||||
return not (has_alife_info(str))
|
||||
end
|
||||
|
||||
function create_squad(smart_name,section)
|
||||
local smart = SIMBOARD.smarts_by_names[smart_name]
|
||||
if (smart and not get_story_se_object(section)) then
|
||||
SIMBOARD:create_squad(smart,section)
|
||||
end
|
||||
return get_story_se_object(section)
|
||||
end
|
||||
|
||||
function kill_common_enemy(enemy,npc,p)
|
||||
if (xr_conditions.is_enemy_actor_or_companion(enemy,npc,p)) then
|
||||
return
|
||||
end
|
||||
if (get_object_story_id(enemy:id())) then
|
||||
return
|
||||
end
|
||||
local squad = get_object_squad(enemy)
|
||||
if (squad and squad.common and (not get_object_story_id(squad.id))) then
|
||||
local function itr(npc_id,ene_id)
|
||||
local obj = npc_id and level.object_by_id(npc_id)
|
||||
local ene = ene_id and level.object_by_id(ene_id)
|
||||
if (obj and obj:alive() and ene and ene:alive()) then
|
||||
local h = hit()
|
||||
h.power = 1
|
||||
h.direction = vector():set(0,-1,0)
|
||||
h.bone = "bip01_spine"
|
||||
h.draftsman = obj
|
||||
h.impulse = 0
|
||||
h.type = hit.wound
|
||||
ene:hit(h)
|
||||
end
|
||||
return true
|
||||
end
|
||||
CreateTimeEvent(npc:id(),"kill_common_enemy" .. enemy:id(),0,itr,npc:id(),enemy:id())
|
||||
end
|
||||
end
|
||||
|
||||
function actor_sprint(actor,npc,p)
|
||||
if (IsMoveState("mcSprint")) then
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
function ray_cast_to_actor_le(actor,npc,p)
|
||||
local act_pos = db.actor and db.actor:position()
|
||||
local npc_pos = npc and npc:position()
|
||||
if (act_pos and npc_pos and tonumber(p[1])) then
|
||||
local dir = vector():set((act_pos):sub(npc_pos)):normalize()
|
||||
local pick = ray_pick()
|
||||
pick:set_position(vector():set(npc_pos.x,npc_pos.y+0.5,npc_pos.z))
|
||||
pick:set_direction(dir)
|
||||
pick:set_ignore_object(db.actor)
|
||||
pick:set_flags(2)
|
||||
pick:set_range(tonumber(p[1])+5)
|
||||
pick:query()
|
||||
local distance = pick:get_distance()
|
||||
if (distance and (distance < tonumber(p[1]))) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
--[[----------------------------------------------------------------------------------------------------
|
||||
Quests
|
||||
------------------------------------------------------------------------------------------------------]]
|
||||
function lure_prey_init()
|
||||
if (NI("me_lure_prey_init")) then
|
||||
local smart = SIMBOARD.smarts_by_names["rad2_prip_teleport"]
|
||||
if (smart) then
|
||||
SIMBOARD:create_squad(smart,"squad_lure_prey_controller_1")
|
||||
SIMBOARD:create_squad(smart,"squad_lure_prey_phantom")
|
||||
|
||||
local p = vector():set(663.0,-43.60,169.5)
|
||||
alife():create("merc_outfit",vec_add(p,vector():set(-0.2,0.0,0.0)),smart.m_level_vertex_id,smart.m_game_vertex_id)
|
||||
alife():create("helm_m40",vec_add(p,vector():set(-0.2,0.0,0.4)),smart.m_level_vertex_id,smart.m_game_vertex_id)
|
||||
alife():create("wpn_lr300",vec_add(p,vector():set(0.2,0.0,0.0)),smart.m_level_vertex_id,smart.m_game_vertex_id)
|
||||
alife():create("ammo_5.56x45_fmj",vec_add(p,vector():set(0.6,0.0,0.3)),smart.m_level_vertex_id,smart.m_game_vertex_id)
|
||||
alife():create("ammo_5.56x45_fmj",vec_add(p,vector():set(0.6,0.0,0.1)),smart.m_level_vertex_id,smart.m_game_vertex_id)
|
||||
alife():create("ammo_5.56x45_fmj",vec_add(p,vector():set(0.6,0.0,-0.1)),smart.m_level_vertex_id,smart.m_game_vertex_id)
|
||||
alife():create("ammo_5.56x45_fmj",vec_add(p,vector():set(0.4,0.0,0.3)),smart.m_level_vertex_id,smart.m_game_vertex_id)
|
||||
alife():create("ammo_5.56x45_fmj",vec_add(p,vector():set(0.4,0.0,0.1)),smart.m_level_vertex_id,smart.m_game_vertex_id)
|
||||
alife():create("ammo_5.56x45_fmj",vec_add(p,vector():set(0.4,0.0,-0.1)),smart.m_level_vertex_id,smart.m_game_vertex_id)
|
||||
alife():create("grenade_f1",vec_add(p,vector():set(0.6,0.0,-0.3)),smart.m_level_vertex_id,smart.m_game_vertex_id)
|
||||
alife():create("grenade_f1",vec_add(p,vector():set(0.6,0.0,-0.3)),smart.m_level_vertex_id,smart.m_game_vertex_id)
|
||||
end
|
||||
GI("me_lure_prey_init")
|
||||
end
|
||||
end
|
||||
|
||||
function lure_prey_before_hit(npc,shit,bone_id,flags)
|
||||
if (shit.draftsman and (shit.draftsman:id() == AC_ID)) then
|
||||
if (NI("me_lure_prey_argo")) then
|
||||
GI("me_lure_prey_argo")
|
||||
end
|
||||
return
|
||||
end
|
||||
flags.ret_value = false
|
||||
end
|
||||
|
||||
function lure_prey_set_stalker(actor,npc,p)
|
||||
if (db.actor and npc) then
|
||||
local com_1 = db.actor:character_community()
|
||||
local com_2 = npc:character_community()
|
||||
if (com_1 and com_2 and not string.find(com_1,com_2)) then
|
||||
local str = string.gsub(com_1,"actor_","")
|
||||
npc:set_character_community(str)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--[[----------------------------------------------------------------------------------------------------
|
||||
------------------------------------------------------------------------------------------------------]]
|
||||
function bloodsucker_val_init()
|
||||
if (NI("me_bloodsucker_val_init")) then
|
||||
local smart = SIMBOARD.smarts_by_names["val_smart_terrain_1_2"]
|
||||
if (smart) then
|
||||
SIMBOARD:create_squad(smart,"squad_bloodsucker_val_1")
|
||||
SIMBOARD:create_squad(smart,"squad_bloodsucker_val_2")
|
||||
SIMBOARD:create_squad(smart,"squad_bloodsucker_val_3")
|
||||
end
|
||||
GI("me_bloodsucker_val_init")
|
||||
end
|
||||
end
|
||||
|
||||
function bloodsucker_val_actor_sprint(actor,npc,p)
|
||||
if not (IsMoveState("mcSprint")) then
|
||||
return false
|
||||
end
|
||||
|
||||
local pos = db.actor and db.actor:position()
|
||||
if not (pos) then
|
||||
return false
|
||||
end
|
||||
|
||||
if not (170 < pos.x and pos.x < 177) then
|
||||
return false
|
||||
end
|
||||
if not (-280 < pos.z and pos.z < -263) then
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
function bloodsucker_val_dead(actor,obj,p)
|
||||
if (obj) then
|
||||
local sec = {"squad_bloodsucker_val_1","squad_bloodsucker_val_2","squad_bloodsucker_val_3"}
|
||||
for i,v in pairs (sec) do
|
||||
if (string.find(obj:section_name(),v)) then
|
||||
for ii,vv in pairs(sec) do
|
||||
if (not string.find(obj:section_name(),vv) and get_story_se_object(vv)) then
|
||||
return
|
||||
end
|
||||
end
|
||||
if (NI("me_bloodsucker_val_dead")) then
|
||||
GI("me_bloodsucker_val_dead")
|
||||
end
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--[[----------------------------------------------------------------------------------------------------
|
||||
------------------------------------------------------------------------------------------------------]]
|
||||
function sleeping_snork_init()
|
||||
if (NI("me_sleeping_snork_init")) then
|
||||
create_squad("jup_b47","squad_sleeping_bloodsucker_jup_1")
|
||||
create_squad("jup_b47","squad_sleeping_bloodsucker_jup_2")
|
||||
--create_squad("jup_b47","squad_sleeping_bloodsucker_jup_3")
|
||||
GI("me_sleeping_snork_init")
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--[[----------------------------------------------------------------------------------------------------
|
||||
Registers
|
||||
------------------------------------------------------------------------------------------------------]]
|
||||
function actor_on_first_update()
|
||||
lure_prey_init()
|
||||
bloodsucker_val_init()
|
||||
end
|
||||
|
||||
function on_game_start()
|
||||
RegisterScriptCallback("actor_on_first_update",actor_on_first_update)
|
||||
end
|
||||
|
||||
|
||||
--[[----------------------------------------------------------------------------------------------------
|
||||
Debug
|
||||
------------------------------------------------------------------------------------------------------]]
|
||||
--[[
|
||||
cmd = debug_cmd_list.command_get_list()
|
||||
|
||||
function cmd.misc1()
|
||||
lure_prey_init()
|
||||
story_mercenary_leader()
|
||||
end
|
||||
|
||||
function cmd.misc2()
|
||||
bloodsucker_val_init()
|
||||
end
|
||||
function cmd.misc2kill1()
|
||||
xr_effects.kill_squad(nil,nil,{"squad_bloodsucker_val_1"})
|
||||
end
|
||||
function cmd.misc2kill2()
|
||||
xr_effects.kill_squad(nil,nil,{"squad_bloodsucker_val_2"})
|
||||
end
|
||||
function cmd.misc2kill3()
|
||||
xr_effects.kill_squad(nil,nil,{"squad_bloodsucker_val_3"})
|
||||
end
|
||||
|
||||
function cmd.misc3()
|
||||
sleeping_snork_init()
|
||||
end
|
||||
function cmd.misc3kill()
|
||||
xr_effects.kill_squad(nil,nil,{"squad_sleeping_snork_1"})
|
||||
xr_effects.kill_squad(nil,nil,{"squad_sleeping_snork_2"})
|
||||
xr_effects.kill_squad(nil,nil,{"squad_sleeping_snork_3"})
|
||||
end
|
||||
|
||||
--]]
|
|
@ -0,0 +1,303 @@
|
|||
|
||||
local STEP_SIZE = 5
|
||||
local STEP_SIZE_OFFLINE = 1
|
||||
|
||||
local _mej = {
|
||||
['logic@bar_zastava_guard_1_walk'] = "logic@duty_guard1",
|
||||
['logic@bar_zastava_guard_2_walk'] = "logic@duty_guard2",
|
||||
['logic@bar_zastava_guard_3_walk'] = "logic@duty_guard3",
|
||||
['logic@bar_zastava_guard_4_walk'] = "logic@duty_guard4",
|
||||
['logic@bar_zastava_guard_5_walk'] = "logic@duty_guard5",
|
||||
['logic@bar_zastava_guard_6_walk'] = "logic@duty_guard6",
|
||||
['logic@bar_zastava_guard_7_walk'] = "logic@duty_guard7",
|
||||
['logic@bar_zastava_guard_8_walk'] = "logic@duty_guard8",
|
||||
['logic@bar_zastava_guard_9_walk'] = "logic@duty_guard9",
|
||||
|
||||
['logic@follower_bar_zastava_guard_1_walk'] = "logic@duty_guard1",
|
||||
['logic@follower_bar_zastava_guard_2_walk'] = "logic@duty_guard2",
|
||||
['logic@follower_bar_zastava_guard_4_walk'] = "logic@duty_guard4",
|
||||
['logic@follower_bar_zastava_guard_5_walk'] = "logic@duty_guard5",
|
||||
['logic@follower_bar_zastava_guard_6_walk'] = "logic@duty_guard6",
|
||||
['logic@follower_bar_zastava_guard_7_walk'] = "logic@duty_guard7",
|
||||
['logic@follower_bar_zastava_guard_8_walk'] = "logic@duty_guard8",
|
||||
}
|
||||
local function allowed(a)
|
||||
-- printf('allowed: %s',a.section)
|
||||
if not _mej[a.section] then
|
||||
return true
|
||||
end
|
||||
for k in pairs(db.storage) do
|
||||
if tonumber(k) and db.storage[k] and db.storage[k].section_logic == _mej[a.section] then
|
||||
-- printf('[%s] disallowed because [%s] (%s) taken', a.section, db.storage[k].section_logic, _mej[a.section])
|
||||
return false
|
||||
end
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
local function job_avail_to_npc(npc_info, job, smart)
|
||||
--[[
|
||||
if (smart.dead_time[job.section]) then
|
||||
return false
|
||||
end
|
||||
--]]
|
||||
|
||||
local precond = gulag_general.get_job_precondition(job)
|
||||
if (precond) then
|
||||
return allowed({ section = job.section}) and precond(npc_info.se_obj, smart, job, npc_info)
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
function smart_terrain.se_smart_terrain:unregister_npc(obj)
|
||||
--utils_data.debug_write(strformat("%s:%s:unregister_npc %s",self:name(),self.id,obj and obj:name()))
|
||||
self.arriving_npc[obj.id] = nil
|
||||
|
||||
if (obj.clear_smart_terrain) then
|
||||
obj:clear_smart_terrain()
|
||||
end
|
||||
|
||||
self:clear_job(obj.id,true)
|
||||
---[[GhenTuong: ----------------------------------------
|
||||
if (xr_logic_ex and xr_logic_ex.ignore_smart_job and xr_logic_ex.ignore_smart_job(obj)) then
|
||||
return
|
||||
end
|
||||
------------------------------------------------------]]
|
||||
local st = db.storage[obj.id]
|
||||
if (st and st.object) then
|
||||
local cls = obj.clsid and obj:clsid()
|
||||
|
||||
if not (cls) then
|
||||
return
|
||||
end
|
||||
|
||||
local stype = IsStalker(nil,cls) and 0 or IsMonster(nil,cls) and 1 or IsHelicopter(nil,cls) and 3 or nil
|
||||
if not (stype) then
|
||||
return
|
||||
end
|
||||
|
||||
xr_logic.initialize_obj(st.object, st, false, db.actor, stype)
|
||||
end
|
||||
|
||||
--printf("self.npc_info[obj.id] = nil !!! obj.id=%s [%s]", obj.id,obj:name())
|
||||
end
|
||||
|
||||
|
||||
function smart_terrain.se_smart_terrain:select_npc_job(npc_info,now,surge_started)
|
||||
if (self.disabled or not self.is_on_actor_level) then
|
||||
return
|
||||
end
|
||||
|
||||
---[[GhenTuong: ----------------------------------------
|
||||
if (xr_logic_ex and xr_logic_ex.ignore_smart_job and xr_logic_ex.ignore_smart_job(npc_info and npc_info.se_obj)) then
|
||||
return
|
||||
end
|
||||
------------------------------------------------------]]
|
||||
|
||||
--utils_data.debug_write(strformat("%s:select_npc_job %s",self:name()))
|
||||
|
||||
if not (npc_info and npc_info.se_obj and npc_info.stype) then
|
||||
return printf("%s no npc_info!",self:name())
|
||||
end
|
||||
|
||||
-- reference job table according to race
|
||||
local jobs = npc_info.stype == 0 and self.stalker_jobs or npc_info.stype == 1 and self.monster_jobs or npc_info.stype == 3 and self.heli_jobs
|
||||
if not (jobs) then
|
||||
return printf("%s no job table for %s [stype = %s]",self:name(),npc_info.se_obj:name(),npc_info.stype)
|
||||
end
|
||||
|
||||
local new_job
|
||||
local npc_by_job_section = self.npc_by_job_section
|
||||
|
||||
-- If the NPC has an existing job link, validate it and iterate job table
|
||||
-- for a higher priority job according to defined STEP_SIZE
|
||||
if (npc_info.job) then
|
||||
|
||||
-- Make sure current job is still available
|
||||
if (npc_by_job_section[npc_info.job.section] == npc_info.se_obj.id) then
|
||||
|
||||
-- Make sure current job is still available
|
||||
if (job_avail_to_npc(npc_info,npc_info.job,self)) then
|
||||
|
||||
if (npc_info.current_index == nil or now) then
|
||||
npc_info.current_index = 1
|
||||
end
|
||||
|
||||
local get_job_prior = gulag_general.get_job_prior
|
||||
local itr_job
|
||||
local npc_id
|
||||
local step = 1
|
||||
while (new_job == nil and step <= (now and #jobs or st and STEP_SIZE or STEP_SIZE_OFFLINE)) do
|
||||
step = step + 1
|
||||
|
||||
if (npc_info.current_index > #jobs) then
|
||||
npc_info.current_index = 1
|
||||
break
|
||||
end
|
||||
|
||||
-- Step through job table one step at a time looking for a higher prior job
|
||||
itr_job = jobs[npc_info.current_index]
|
||||
npc_info.current_index = npc_info.current_index + 1
|
||||
|
||||
npc_id = npc_by_job_section[itr_job.section]
|
||||
|
||||
-- Check empty job
|
||||
--if (npc_id == nil or npc_id == npc_info.se_obj.id) then
|
||||
if (npc_id == nil) then
|
||||
-- Find only higher priority jobs if already linked to a job
|
||||
if (get_job_prior(itr_job) > get_job_prior(npc_info.job)) then
|
||||
if (job_avail_to_npc(npc_info, itr_job, self)) then
|
||||
-- Only take this higher priority job if when there is either no surge or if job is not in surge cover during surge; takes exclusive no matter what
|
||||
if (itr_job.exclusive or not xr_conditions.surge_started() or not surge_manager.job_in_surge_cover(npc_info.se_obj,npc_info.job)) then
|
||||
new_job = itr_job
|
||||
npc_info.current_index = 1
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
else
|
||||
-- Job is no longer available, unlink job info
|
||||
for sec,npcid in pairs(npc_by_job_section) do
|
||||
if (npcid == npc_info.se_obj.id) then
|
||||
npc_by_job_section[sec] = nil
|
||||
end
|
||||
end
|
||||
npc_info.job = nil
|
||||
npc_info.current_index = 1
|
||||
end
|
||||
else
|
||||
-- Job is not linked properly, npc_id doesn't match owner se_obj
|
||||
for sec,npcid in pairs(npc_by_job_section) do
|
||||
if (npcid == npc_info.se_obj.id) then
|
||||
npc_by_job_section[sec] = nil
|
||||
end
|
||||
end
|
||||
|
||||
npc_info.job = nil
|
||||
npc_info.current_index = 1
|
||||
end
|
||||
end
|
||||
|
||||
if not (npc_info.job) then
|
||||
if (npc_info.current_index == nil or now) then
|
||||
npc_info.current_index = 1
|
||||
end
|
||||
|
||||
local itr_job,npc_id
|
||||
local step = 1
|
||||
local st = db.storage[npc_info.se_obj.id]
|
||||
local STEP_SIZE_NO_JOB = #jobs
|
||||
while (new_job == nil and step <= (now and STEP_SIZE_NO_JOB or st and STEP_SIZE_NO_JOB or STEP_SIZE_OFFLINE)) do
|
||||
step = step + 1
|
||||
|
||||
if (npc_info.current_index > STEP_SIZE_NO_JOB) then
|
||||
npc_info.current_index = 1
|
||||
break
|
||||
end
|
||||
|
||||
-- Step through job table one step at a time looking for a high prior job
|
||||
itr_job = jobs[npc_info.current_index]
|
||||
npc_info.current_index = npc_info.current_index + 1
|
||||
|
||||
npc_id = npc_by_job_section[itr_job.section]
|
||||
|
||||
-- validate existing job link
|
||||
if (npc_id and not self.npc_info[npc_id]) then
|
||||
npc_by_job_section[itr_job.section] = nil
|
||||
end
|
||||
|
||||
-- Check empty job or re-take current job
|
||||
if (npc_id == nil or npc_id == npc_info.se_obj.id) and (job_avail_to_npc(npc_info, itr_job, self)) then
|
||||
new_job = itr_job
|
||||
npc_info.current_index = 1
|
||||
end
|
||||
end
|
||||
|
||||
if not (new_job) then
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
local id = npc_info.se_obj.id
|
||||
-- newly selected job
|
||||
if (new_job and new_job ~= npc_info.job) then
|
||||
|
||||
-- Unassign npc_id from old job and unreference job section
|
||||
for sec,npcid in pairs(npc_by_job_section) do
|
||||
if (npcid == id) then
|
||||
npc_by_job_section[sec] = nil
|
||||
end
|
||||
end
|
||||
|
||||
-- setup table that references NPCs by their job section
|
||||
npc_by_job_section[new_job.section] = id
|
||||
|
||||
-- link up NPC info and references
|
||||
npc_info.job = new_job
|
||||
npc_info.begin_job = false
|
||||
|
||||
-- grab storage and ensure object is online.
|
||||
local st = self.online and db.storage[id]
|
||||
|
||||
-- If NPC has storage, it is online, so switch logic
|
||||
if (st and st.object) then
|
||||
--xr_logic.switch_to_section(st.object, self.ltx, "nil")
|
||||
npc_info.begin_job = true
|
||||
empty_table(db.offline_objects[id])
|
||||
self:setup_logic(st.object)
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
if (npc_info.begin_job ~= true and npc_info.job) then
|
||||
-- grab storage and ensure object is online.
|
||||
local st = self.online and db.storage[id]
|
||||
-- If NPC has storage it is online, so switch logic
|
||||
if (st and st.object) then
|
||||
npc_info.begin_job = true
|
||||
empty_table(db.offline_objects[id])
|
||||
self:setup_logic(st.object)
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function smart_terrain.setup_gulag_and_logic_on_spawn(obj, st, se_obj, stype, loaded)
|
||||
--utils_data.debug_write(strformat("smart_terrain.setup_gulag_and_logic_on_spawn %s",obj and obj:name()))
|
||||
local sim = alife()
|
||||
|
||||
---[[GhenTuong: ----------------------------------------
|
||||
if (xr_logic_ex and xr_logic_ex.ignore_smart_job and xr_logic_ex.ignore_smart_job(se_obj)) then
|
||||
return
|
||||
end
|
||||
------------------------------------------------------]]
|
||||
|
||||
-- Expedite arrival and job assignment
|
||||
local smart = se_obj.m_smart_terrain_id and se_obj.m_smart_terrain_id ~= 65535 and sim:object(se_obj.m_smart_terrain_id)
|
||||
if (smart and smart:clsid() == clsid.smart_terrain) then
|
||||
local npc_info = smart.npc_info[se_obj.id]
|
||||
if (npc_info) then
|
||||
if not (npc_info.job) then
|
||||
smart:select_npc_job(npc_info,true)
|
||||
local smart_task = smart.npc_info[se_obj.id].job and smart.npc_info[se_obj.id].job.alife_task
|
||||
if (smart_task) then
|
||||
db.spawned_vertex_by_id[se_obj.id] = smart_task:level_vertex_id()
|
||||
end
|
||||
elseif (npc_info.job) then
|
||||
-- if already job begin then don't spawn at job
|
||||
local smart_task = npc_info.begin_job ~= true and npc_info.job and npc_info.job.alife_task or nil
|
||||
if (smart_task) then
|
||||
db.spawned_vertex_by_id[se_obj.id] = smart_task:level_vertex_id()
|
||||
end
|
||||
npc_info.begin_job = true
|
||||
empty_table(db.offline_objects[se_obj.id])
|
||||
smart:setup_logic(obj)
|
||||
end
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
xr_logic.initialize_obj(obj, st, loaded, db.actor, stype)
|
||||
end
|
|
@ -0,0 +1,553 @@
|
|||
|
||||
local HI = has_alife_info
|
||||
local GI = give_info
|
||||
local DI = disable_info
|
||||
function NI(str)
|
||||
return not (has_alife_info(str))
|
||||
end
|
||||
|
||||
|
||||
--[[----------------------------------------------------------------------------------------------------
|
||||
duty_girl_hunting_chimera
|
||||
------------------------------------------------------------------------------------------------------]]
|
||||
function duty_girl_hunting_chimera_status(tsk,task_id)
|
||||
local sec = "squad_duty_girl_hunting_chimera"
|
||||
if (tsk.stage == 0) then
|
||||
if (HI("duty_girl_hunting_chimera_move")) then
|
||||
local smart = SIMBOARD.smarts_by_names["gar_smart_terrain_2_4"]
|
||||
local squad = SIMBOARD:create_squad(smart,sec)
|
||||
tsk.stage = 1
|
||||
end
|
||||
end
|
||||
|
||||
if (tsk.stage == 1) then
|
||||
local squad = get_story_se_object(sec)
|
||||
if not (squad) then
|
||||
local function message()
|
||||
local npc = get_story_object("stalker_duty_girl")
|
||||
if (npc and db.actor) then
|
||||
if (NI("duty_girl_hunting_chimera_hunt_4") and xr_conditions.check_time_speech(db.actor,npc)) then
|
||||
GI("duty_girl_hunting_chimera_hunt_4")
|
||||
xr_effects.speech(db.actor,npc,{"duty_girl_hunting_chimera_hunt_4",5})
|
||||
end
|
||||
end
|
||||
if (HI("duty_girl_hunting_chimera_hunt_4")) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
local npc = get_story_object("stalker_duty_girl")
|
||||
if (npc) then
|
||||
CreateTimeEvent(npc:id(),"speech",0,message)
|
||||
end
|
||||
tsk.stage = 2
|
||||
end
|
||||
end
|
||||
|
||||
if (tsk.stage == 2) then
|
||||
if (NI("duty_girl_hunting_chimera_dead")) then
|
||||
GI("duty_girl_hunting_chimera_dead")
|
||||
end
|
||||
if (HI("duty_girl_hunting_chimera_reward")) then
|
||||
return "complete"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function duty_girl_hunting_chimera_target(task_id,field,p,tsk)
|
||||
if (field == "title") then
|
||||
return task_id.."_"..field
|
||||
end
|
||||
|
||||
if (field == "descr") then
|
||||
if (tsk.stage == 0) then
|
||||
return task_id.."_"..field.."_1"
|
||||
end
|
||||
if (tsk.stage == 1) then
|
||||
return task_id.."_"..field.."_2"
|
||||
end
|
||||
if (tsk.stage == 2) then
|
||||
return task_id.."_"..field.."_3"
|
||||
end
|
||||
end
|
||||
|
||||
if (field == "target") then
|
||||
if (tsk.stage == 0) then
|
||||
local obj = SIMBOARD.smarts_by_names["gar_smart_terrain_6_3"]
|
||||
return obj and obj.id
|
||||
end
|
||||
if (tsk.stage == 1) or (tsk.stage == 2) then
|
||||
local obj = get_story_se_object("squad_duty_girl")
|
||||
return obj and obj.id
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function hunting_chimera_hit(npc,shit,bone_id,flags)
|
||||
if (shit and shit.draftsman and IsStalker(shit.draftsman)) then
|
||||
if (shit.draftsman:id() == AC_ID) then
|
||||
if (NI("duty_girl_hunting_chimera_fight")) then
|
||||
GI("duty_girl_hunting_chimera_fight")
|
||||
end
|
||||
return
|
||||
end
|
||||
if (shit.draftsman:has_info("npcx_is_companion") or string.find(shit.draftsman:name(),"stalker_duty_girl")) then
|
||||
if (NI("duty_girl_hunting_chimera_fight")) then
|
||||
GI("duty_girl_hunting_chimera_fight")
|
||||
end
|
||||
shit.power = shit.power / 2
|
||||
return
|
||||
end
|
||||
end
|
||||
flags.ret_value = false
|
||||
end
|
||||
|
||||
--[[----------------------------------------------------------------------------------------------------
|
||||
duty_girl_monolith_elite
|
||||
------------------------------------------------------------------------------------------------------]]
|
||||
function duty_girl_monolith_elite_status(tsk,task_id)
|
||||
if (tsk.stage == 0) then
|
||||
SIMBOARD:create_squad(SIMBOARD.smarts_by_names["mil_smart_terrain_2_6"],"squad_duty_girl_monolith_elite_mono")
|
||||
SIMBOARD:create_squad(SIMBOARD.smarts_by_names["mil_smart_terrain_4_5"],"squad_duty_girl_monolith_elite_duty")
|
||||
tsk.stage = 1
|
||||
end
|
||||
|
||||
if (tsk.stage == 1) or (tsk.stage == 2) then
|
||||
local squad = get_story_se_object("squad_duty_girl_monolith_elite_mono")
|
||||
local mem_num = squad and squad:npc_count() or 0
|
||||
if (mem_num ~= 0) then
|
||||
-- Player attack without order
|
||||
if (mem_num < 8) then
|
||||
if (NI("duty_girl_monolith_elite_move")) then
|
||||
GI("duty_girl_monolith_elite_move")
|
||||
if (NI("duty_girl_monolith_elite_join")) then
|
||||
GI("duty_girl_monolith_elite_join")
|
||||
end
|
||||
local function message()
|
||||
local npc = get_story_object("stalker_duty_girl")
|
||||
if (npc and db.actor) then
|
||||
if (NI("duty_girl_monolith_elite_move_5") and xr_conditions.check_time_speech(db.actor,npc)) then
|
||||
GI("duty_girl_monolith_elite_move_5")
|
||||
xr_effects.speech(db.actor,npc,{"duty_girl_monolith_elite_move_5",5})
|
||||
end
|
||||
if (NI("duty_girl_monolith_elite_move_6") and xr_conditions.check_time_speech(db.actor,npc)) then
|
||||
GI("duty_girl_monolith_elite_move_6")
|
||||
xr_effects.speech(db.actor,npc,{"duty_girl_monolith_elite_move_6",5})
|
||||
end
|
||||
end
|
||||
if (HI("duty_girl_monolith_elite_move_6")) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
local npc = get_story_object("stalker_duty_girl")
|
||||
if (npc) then
|
||||
CreateTimeEvent(npc:id(),"speech",0,message)
|
||||
end
|
||||
end
|
||||
end
|
||||
else
|
||||
-- Squad is killed
|
||||
local function message()
|
||||
local npc = get_story_object("stalker_duty_girl")
|
||||
if (npc and db.actor) then
|
||||
if (NI("duty_girl_monolith_elite_move_4") and xr_conditions.check_time_speech(db.actor,npc)) then
|
||||
GI("duty_girl_monolith_elite_move_4")
|
||||
xr_effects.speech(db.actor,npc,{"duty_girl_monolith_elite_move_4",5})
|
||||
end
|
||||
end
|
||||
if (HI("duty_girl_monolith_elite_move_4")) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
local npc = get_story_object("stalker_duty_girl")
|
||||
if (npc) then
|
||||
CreateTimeEvent(npc:id(),"speech",0,message)
|
||||
end
|
||||
tsk.stage = 3
|
||||
end
|
||||
|
||||
if (tsk.stage == 1) then
|
||||
if (HI("duty_girl_monolith_elite_move")) then
|
||||
tsk.stage = 2
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if (tsk.stage == 3) then
|
||||
if (NI("duty_girl_monolith_elite_dead")) then
|
||||
GI("duty_girl_monolith_elite_dead")
|
||||
end
|
||||
if (HI("duty_girl_monolith_elite_reward")) then
|
||||
return "complete"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function duty_girl_monolith_elite_target(task_id,field,p,tsk)
|
||||
if (field == "title") then
|
||||
return task_id.."_"..field
|
||||
end
|
||||
|
||||
if (field == "descr") then
|
||||
if (tsk.stage == 0) or (tsk.stage == 1) then
|
||||
return task_id.."_"..field.."_1"
|
||||
end
|
||||
if (tsk.stage == 2) then
|
||||
return task_id.."_"..field.."_2"
|
||||
end
|
||||
if (tsk.stage == 3) then
|
||||
return task_id.."_"..field.."_3"
|
||||
end
|
||||
end
|
||||
|
||||
if (field == "target") then
|
||||
if (tsk.stage == 0) or (tsk.stage == 1) then
|
||||
local obj = get_story_se_object("squad_duty_girl")
|
||||
local sqd = get_story_se_object("squad_duty_girl_monolith_elite_duty")
|
||||
if (obj and sqd and simulation_objects.is_on_the_same_level(obj,sqd)) then
|
||||
return obj.id
|
||||
end
|
||||
return sqd and sqd.id
|
||||
end
|
||||
if (tsk.stage == 2) then
|
||||
local obj = SIMBOARD.smarts_by_names["mil_smart_terrain_2_6"]
|
||||
return obj and obj.id
|
||||
end
|
||||
if (tsk.stage == 3) then
|
||||
local obj = get_story_se_object("squad_duty_girl")
|
||||
return obj and obj.id
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function monolith_elite_hit(npc,shit,bone_id,flags)
|
||||
if (shit and shit.draftsman and IsStalker(shit.draftsman)) then
|
||||
if (shit.draftsman:id() == AC_ID) then
|
||||
return
|
||||
end
|
||||
if (IsStalker(shit.draftsman) and shit.draftsman:has_info("npcx_is_companion") or string.find(shit.draftsman:name(),"stalker_duty_girl")) then
|
||||
shit.power = shit.power / 4
|
||||
return
|
||||
end
|
||||
local squad = get_object_squad(shit.draftsman)
|
||||
if (squad and string.find(squad:section_name(),"squad_duty_girl_monolith_elite")) then
|
||||
if (string.find(npc:name(),"monolith")) then
|
||||
shit.power = shit.power / 4
|
||||
else
|
||||
shit.power = shit.power / 2
|
||||
end
|
||||
return
|
||||
end
|
||||
end
|
||||
flags.ret_value = false
|
||||
end
|
||||
|
||||
--[[----------------------------------------------------------------------------------------------------
|
||||
duty_girl_loot_stash
|
||||
------------------------------------------------------------------------------------------------------]]
|
||||
function duty_girl_loot_stash_status(tsk,task_id)
|
||||
if (tsk.stage == 0) then
|
||||
local tbl = {
|
||||
"detector_advanced",
|
||||
"vodka","vodka",
|
||||
"bandage","bandage","bandage","bandage","bandage",
|
||||
"medkit","medkit","medkit","medkit","medkit",
|
||||
"ammo_5.56x45_fmj","ammo_5.56x45_fmj","ammo_5.56x45_fmj","ammo_5.56x45_fmj","ammo_5.56x45_fmj","ammo_5.56x45_fmj"
|
||||
}
|
||||
local sm = SIMBOARD.smarts_by_names["val_smart_terrain_1_2"]
|
||||
local pos = vector():set(175.7,1,-278.6)
|
||||
if (sm) then
|
||||
for i,v in pairs(tbl) do
|
||||
alife():create(v,pos,sm.m_level_vertex_id,sm.m_game_vertex_id)
|
||||
end
|
||||
local se = alife():create("wpn_lr300",pos,sm.m_level_vertex_id,sm.m_game_vertex_id)
|
||||
if (se) then
|
||||
save_var(db.actor,task_id,se.id)
|
||||
end
|
||||
end
|
||||
tsk.stage = 1
|
||||
end
|
||||
|
||||
if (tsk.stage == 1) then
|
||||
local id = load_var(db.actor,task_id)
|
||||
local se = id and alife():object(id)
|
||||
if not (se and IsWeapon(se) and string.find(se:name(),"wpn_lr300") and (se.parent_id == 65535)) then
|
||||
return "complete"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function duty_girl_loot_stash_target(task_id,field,p,tsk)
|
||||
if (field == "title") then
|
||||
return task_id.."_"..field
|
||||
end
|
||||
|
||||
if (field == "descr") then
|
||||
return task_id.."_"..field.."_1"
|
||||
end
|
||||
|
||||
if (field == "target") then
|
||||
local id = load_var(db.actor,task_id)
|
||||
local se = id and alife():object(id)
|
||||
return se and se.id
|
||||
end
|
||||
end
|
||||
|
||||
--[[----------------------------------------------------------------------------------------------------
|
||||
duty_girl_capture_the_brirge
|
||||
------------------------------------------------------------------------------------------------------]]
|
||||
function duty_girl_capture_the_brirge_status(tsk,task_id)
|
||||
if (tsk.stage == 0) then
|
||||
SIMBOARD:create_squad(SIMBOARD.smarts_by_names["red_smart_terrain_bridge"],"squad_duty_girl_capture_the_brirge_mono_1")
|
||||
SIMBOARD:create_squad(SIMBOARD.smarts_by_names["red_smart_terrain_bridge"],"squad_duty_girl_capture_the_brirge_mono_2")
|
||||
SIMBOARD:create_squad(SIMBOARD.smarts_by_names["red_smart_terrain_5_5"],"squad_duty_girl_capture_the_brirge_duty")
|
||||
SIMBOARD:create_squad(SIMBOARD.smarts_by_names["red_smart_terrain_5_5"],"squad_duty_girl_capture_the_brirge_lone")
|
||||
tsk.stage = 1
|
||||
end
|
||||
|
||||
if (tsk.stage == 1) or (tsk.stage == 2) then
|
||||
local squad_1 = get_story_se_object("squad_duty_girl_capture_the_brirge_mono_1")
|
||||
local squad_2 = get_story_se_object("squad_duty_girl_capture_the_brirge_mono_2")
|
||||
local mem_num = (squad_1 and squad_1:npc_count() or 0) + (squad_2 and squad_2:npc_count() or 0)
|
||||
if (mem_num ~= 0) then
|
||||
-- Player attack without order
|
||||
if (mem_num < 20) then
|
||||
if (NI("duty_girl_capture_the_brirge_move")) then
|
||||
GI("duty_girl_capture_the_brirge_move")
|
||||
if (NI("duty_girl_capture_the_brirge_join")) then
|
||||
GI("duty_girl_capture_the_brirge_join")
|
||||
end
|
||||
|
||||
local function message()
|
||||
local npc = get_story_object("stalker_duty_girl")
|
||||
if (npc and db.actor) then
|
||||
if (NI("duty_girl_capture_the_brirge_move_5") and xr_conditions.check_time_speech(db.actor,npc)) then
|
||||
GI("duty_girl_capture_the_brirge_move_5")
|
||||
xr_effects.speech(db.actor,npc,{"duty_girl_capture_the_brirge_move_5",5})
|
||||
end
|
||||
if (NI("duty_girl_capture_the_brirge_move_6") and xr_conditions.check_time_speech(db.actor,npc)) then
|
||||
GI("duty_girl_capture_the_brirge_move_6")
|
||||
xr_effects.speech(db.actor,npc,{"duty_girl_capture_the_brirge_move_6",5})
|
||||
end
|
||||
end
|
||||
if (HI("duty_girl_capture_the_brirge_move_6")) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
local npc = get_story_object("stalker_duty_girl")
|
||||
if (npc) then
|
||||
CreateTimeEvent(npc:id(),"speech",0,message)
|
||||
end
|
||||
end
|
||||
end
|
||||
else
|
||||
-- Squad is killed
|
||||
local function message()
|
||||
local npc = get_story_object("stalker_duty_girl")
|
||||
if (npc and db.actor) then
|
||||
if (NI("duty_girl_capture_the_brirge_move_4") and xr_conditions.check_time_speech(db.actor,npc)) then
|
||||
GI("duty_girl_capture_the_brirge_move_4")
|
||||
xr_effects.speech(db.actor,npc,{"duty_girl_capture_the_brirge_move_4",5})
|
||||
end
|
||||
end
|
||||
if (HI("duty_girl_capture_the_brirge_move_4")) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
local npc = get_story_object("stalker_duty_girl")
|
||||
if (npc) then
|
||||
CreateTimeEvent(npc:id(),"speech",0,message)
|
||||
end
|
||||
tsk.stage = 3
|
||||
end
|
||||
|
||||
if (tsk.stage == 1) then
|
||||
if (HI("duty_girl_capture_the_brirge_move")) then
|
||||
tsk.stage = 2
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if (tsk.stage == 3) then
|
||||
if (NI("red_bridge_outpost")) then
|
||||
GI("red_bridge_outpost")
|
||||
end
|
||||
if (NI("duty_girl_capture_the_brirge_dead")) then
|
||||
GI("duty_girl_capture_the_brirge_dead")
|
||||
end
|
||||
if (HI("duty_girl_capture_the_brirge_reward")) then
|
||||
return "complete"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function duty_girl_capture_the_brirge_target(task_id,field,p,tsk)
|
||||
if (field == "title") then
|
||||
return task_id.."_"..field
|
||||
end
|
||||
|
||||
if (field == "descr") then
|
||||
if (tsk.stage == 0) or (tsk.stage == 1) then
|
||||
return task_id.."_"..field.."_1"
|
||||
end
|
||||
if (tsk.stage == 2) then
|
||||
return task_id.."_"..field.."_2"
|
||||
end
|
||||
if (tsk.stage == 3) then
|
||||
return task_id.."_"..field.."_3"
|
||||
end
|
||||
end
|
||||
|
||||
if (field == "target") then
|
||||
if (tsk.stage == 0) or (tsk.stage == 1) then
|
||||
local obj = get_story_se_object("squad_duty_girl")
|
||||
local sqd = get_story_se_object("squad_duty_girl_capture_the_brirge_duty")
|
||||
if (obj and sqd and simulation_objects.is_on_the_same_level(obj,sqd)) then
|
||||
return obj.id
|
||||
end
|
||||
return sqd and sqd.id
|
||||
end
|
||||
if (tsk.stage == 2) then
|
||||
local obj = SIMBOARD.smarts_by_names["red_smart_terrain_bridge"]
|
||||
return obj and obj.id
|
||||
end
|
||||
if (tsk.stage == 3) then
|
||||
local obj = get_story_se_object("squad_duty_girl")
|
||||
return obj and obj.id
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function capture_the_brirge_hit(npc,shit,bone_id,flags)
|
||||
if (shit and shit.draftsman and IsStalker(shit.draftsman)) then
|
||||
local npc_squad = get_object_squad(npc)
|
||||
local hit_squad = (shit.draftsman:id() ~= AC_ID) and get_object_squad(shit.draftsman)
|
||||
if (npc_squad and string.find(npc_squad:section_name(),"squad_duty_girl_capture_the_brirge_mono")) then
|
||||
if (shit.draftsman:id() == AC_ID) then
|
||||
return
|
||||
end
|
||||
if (shit.draftsman:has_info("npcx_is_companion") or string.find(shit.draftsman:name(),"stalker_duty_girl")) then
|
||||
shit.power = shit.power / 3
|
||||
return
|
||||
end
|
||||
if (hit_squad and string.find(hit_squad:section_name(),"squad_duty_girl_capture_the_brirge")) then
|
||||
shit.power = shit.power / 3
|
||||
return
|
||||
end
|
||||
else
|
||||
if (hit_squad and string.find(hit_squad:section_name(),"squad_duty_girl_capture_the_brirge")) then
|
||||
shit.power = shit.power / 3
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
flags.ret_value = false
|
||||
end
|
||||
|
||||
function capture_the_brirge_spawn_outpost(actor,squad,p)
|
||||
local lst = {
|
||||
"squad_red_duty_outpost_trader",
|
||||
"squad_red_duty_outpost_medic",
|
||||
"squad_red_duty_outpost_guide",
|
||||
"squad_red_duty_outpost_guard_1",
|
||||
"squad_red_duty_outpost_guard_2",
|
||||
"squad_red_duty_outpost_visitor_1",
|
||||
"squad_red_duty_outpost_visitor_2",
|
||||
"squad_red_duty_outpost_visitor_3",
|
||||
"squad_red_duty_outpost_visitor_4"
|
||||
}
|
||||
for k,sec in pairs(lst) do
|
||||
if not (get_story_se_object(sec)) then
|
||||
SIMBOARD:create_squad(SIMBOARD.smarts_by_names["red_smart_terrain_bridge"],sec)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--[[----------------------------------------------------------------------------------------------------
|
||||
Main
|
||||
------------------------------------------------------------------------------------------------------]]
|
||||
task_status_functor.duty_girl_task_status = function(tsk,task_id)
|
||||
if not (task_id and tsk) then
|
||||
return
|
||||
end
|
||||
return _G["task_duty_girl"][task_id .. "_status"](tsk,task_id)
|
||||
end
|
||||
|
||||
task_functor.duty_girl_task_target = function(task_id,field,p,tsk)
|
||||
if not (task_id and tsk) then
|
||||
return
|
||||
end
|
||||
return _G["task_duty_girl"][task_id .. "_target"](task_id,field,p,tsk)
|
||||
end
|
||||
|
||||
|
||||
--[[----------------------------------------------------------------------------------------------------
|
||||
Debug
|
||||
------------------------------------------------------------------------------------------------------]]
|
||||
---[[
|
||||
cmd = debug_cmd_list.command_get_list()
|
||||
|
||||
function cmd.redbase()
|
||||
if (NI("red_bridge_outpost")) then
|
||||
GI("red_bridge_outpost")
|
||||
end
|
||||
xr_dynamic_object.dynamic_object(db.actor,db.actor,{"misc\\duty_outpost_object.ltx"})
|
||||
capture_the_brirge_spawn_outpost()
|
||||
end
|
||||
|
||||
function cmd.d1()
|
||||
gameplay_duty_girl.duty_girl_init()
|
||||
task_manager.get_task_manager():give_task("duty_girl_hunting_chimera")
|
||||
end
|
||||
function cmd.d1kill()
|
||||
local squad_1 = get_story_se_object("squad_duty_girl_hunting_chimera")
|
||||
if (squad_1) then
|
||||
alife_release(squad_1)
|
||||
end
|
||||
end
|
||||
function cmd.d1skip()
|
||||
gameplay_duty_girl.duty_girl_init()
|
||||
GI("duty_girl_hunting_chimera_done")
|
||||
end
|
||||
|
||||
function cmd.d2()
|
||||
gameplay_duty_girl.duty_girl_init()
|
||||
task_manager.get_task_manager():give_task("duty_girl_monolith_elite")
|
||||
end
|
||||
function cmd.d2kill()
|
||||
local squad_1 = get_story_se_object("squad_duty_girl_monolith_elite_mono")
|
||||
if (squad_1) then
|
||||
alife_release(squad_1)
|
||||
end
|
||||
end
|
||||
|
||||
function cmd.d3()
|
||||
task_manager.get_task_manager():give_task("duty_girl_loot_stash")
|
||||
end
|
||||
function cmd.d3skip()
|
||||
gameplay_duty_girl.duty_girl_init()
|
||||
GI("duty_girl_loot_stash_done")
|
||||
end
|
||||
|
||||
function cmd.d4()
|
||||
gameplay_duty_girl.duty_girl_init()
|
||||
task_manager.get_task_manager():give_task("duty_girl_capture_the_brirge")
|
||||
end
|
||||
|
||||
function cmd.d4kill()
|
||||
local squad_1 = get_story_se_object("squad_duty_girl_capture_the_brirge_mono_1")
|
||||
local squad_2 = get_story_se_object("squad_duty_girl_capture_the_brirge_mono_2")
|
||||
if (squad_1) then
|
||||
alife_release(squad_1)
|
||||
end
|
||||
if (squad_2) then
|
||||
alife_release(squad_2)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--]]
|
|
@ -0,0 +1,197 @@
|
|||
|
||||
local dynamic_object_storage = {}
|
||||
|
||||
function dynamic_object(actor,obj,p)
|
||||
local ini = p and p[1] and ini_file(p[1])
|
||||
local smart_name = ini and ini:r_string_ex("dynamic_object_configs","smart")
|
||||
local smart = smart_name and SIMBOARD.smarts_by_names[smart_name]
|
||||
|
||||
if not (smart) then
|
||||
return
|
||||
end
|
||||
|
||||
if not (dynamic_object_storage[smart_name]) then
|
||||
dynamic_object_storage[smart_name] = {}
|
||||
end
|
||||
|
||||
local lst = dynamic_object_storage[smart_name]
|
||||
|
||||
local n = ini:line_count("exclusive")
|
||||
for k=0,n-1 do
|
||||
local r,i,v = ini:r_line("exclusive",k)
|
||||
local s = get_object_config(v)
|
||||
if (i and s) then
|
||||
local idx = lst[i]
|
||||
local sec = s.sec
|
||||
local pos = s.pos
|
||||
local ang = s.ang
|
||||
local con = s.con and ini:r_string_to_condlist("dynamic_object_configs",s.con,"true")
|
||||
if (xr_logic.pick_section_from_condlist(db.actor,obj,con) == "true") then
|
||||
local se = idx and tonumber(idx.id) and alife():object(tonumber(idx.id))
|
||||
if (se and string.find(se:name(),sec)) then
|
||||
-- Correct. Update object.
|
||||
se.position = vector():set(pos)
|
||||
se.angle = vector():set(ang)
|
||||
else
|
||||
-- Wrong object or doesn't exit. Try to delete the old object and create a new one.
|
||||
if (se and idx.sec and string.find(se:name(),idx.sec)) then
|
||||
alife_release(se)
|
||||
end
|
||||
local new_se = alife():create(sec,pos,smart.m_level_vertex_id,smart.m_game_vertex_id)
|
||||
if (new_se) then
|
||||
new_se.angle = vector():set(ang)
|
||||
lst[i] = {id = tonumber(new_se.id),sec = tostring(sec)}
|
||||
--printf("GhenTuong: dynamic_object create %s [%s]",new_se.id,new_se:name())
|
||||
end
|
||||
end
|
||||
else
|
||||
if (idx) then
|
||||
local se = tonumber(idx.id) and alife():object(tonumber(idx.id))
|
||||
if (se and idx.sec and string.find(se:name(),idx.sec)) then
|
||||
--printf("GhenTuong: dynamic_object delete %s [%s]",se.id,se:name())
|
||||
alife_release(se)
|
||||
end
|
||||
lst[i] = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
for i,idx in pairs(lst) do
|
||||
if (i and idx) then
|
||||
if not (ini:line_exist("exclusive",i)) then
|
||||
local se = idx and tonumber(idx.id) and alife():object(tonumber(idx.id))
|
||||
if (se and idx.sec and string.find(se:name(),idx.sec)) then
|
||||
--printf("GhenTuong: dynamic_object delete %s [%s]",se.id,se:name())
|
||||
alife_release(se)
|
||||
end
|
||||
lst[i] = nil
|
||||
end
|
||||
else
|
||||
lst[i] = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
--[[
|
||||
if not (ini:section_exist("exclusive") and ini:line_exist("exclusive",i)) then
|
||||
return
|
||||
end
|
||||
|
||||
local v = ini:r_string_ex("exclusive",i)
|
||||
--]]
|
||||
|
||||
function get_object_config(v)
|
||||
local str = v and str_explode(v,"|")
|
||||
local sec = str[1] and (str[1] ~= "") and (str[1] ~= "nil") and tostring(str[1])
|
||||
|
||||
local tp = str[2] and str_explode(str[2],",") or nil
|
||||
local td = str[3] and str_explode(str[3],",") or nil
|
||||
local pox = tp and tonumber(tp[1])
|
||||
local poy = tp and tonumber(tp[2])
|
||||
local poz = tp and tonumber(tp[3])
|
||||
local rox = td and tonumber(td[1]) and math.rad(tonumber(td[1]))
|
||||
local roy = td and tonumber(td[2]) and math.rad(tonumber(td[2]))
|
||||
local roz = td and tonumber(td[3]) and math.rad(tonumber(td[3]))
|
||||
local con = str[4] or "nil"
|
||||
|
||||
if not (pox and poy and poz and rox and roy and roz and con) then
|
||||
return
|
||||
end
|
||||
return {sec = sec, pos = vector():set(pox,poy,poz), ang = vector():set(rox,roy,roz), con = con}
|
||||
end
|
||||
|
||||
function get_object(smart_name,index)
|
||||
local idx = dynamic_object_storage_loaded and dynamic_object_storage[smart_name] and dynamic_object_storage[smart_name][index]
|
||||
return idx and {id = tonumber(idx.id),sec = tostring(idx.sec)}
|
||||
end
|
||||
|
||||
--[[----------------------------------------------------------------------------------------------------
|
||||
Lighting
|
||||
p[1] action
|
||||
p[2] sec
|
||||
p[3] bone
|
||||
------------------------------------------------------------------------------------------------------]]
|
||||
function light(actor,obj,p)
|
||||
local sec = p[1]
|
||||
local pos = p[2] and obj:bone_position(p[2]) or obj:position()
|
||||
|
||||
local st = db.storage[obj:id()]
|
||||
|
||||
if not (st and sec and pos) then
|
||||
return
|
||||
end
|
||||
|
||||
if (st.dynamic_light) then
|
||||
--Switch
|
||||
if (st.dynamic_light.light) then
|
||||
local new_state = (tonumber(p[3]) == 1) and true or false
|
||||
if (st.dynamic_light.light.enabled ~= new_state) then
|
||||
st.dynamic_light.light.enabled = new_state
|
||||
st.dynamic_light.light:update()
|
||||
end
|
||||
--Position
|
||||
st.dynamic_light.light:set_position(pos)
|
||||
end
|
||||
else
|
||||
st.dynamic_light = {}
|
||||
st.dynamic_light.light = script_light()
|
||||
st.dynamic_light.sec = tostring(sec)
|
||||
|
||||
if (st.dynamic_light.light) then
|
||||
local ini = st.ini
|
||||
local n = ini:line_count(sec)
|
||||
for k=0,n-1 do
|
||||
local result,i,v = ini:r_line(sec,k)
|
||||
--Basic
|
||||
if (i == "range") then
|
||||
st.dynamic_light.light.range = tonumber(v)
|
||||
end
|
||||
if (i == "color") then
|
||||
st.dynamic_light.light.color = (tonumber(v) and fcolor():set(tonumber(v)))
|
||||
end
|
||||
if (i == "shadow") then
|
||||
st.dynamic_light.light.shadow = (v == "true")
|
||||
end
|
||||
--Volumetric
|
||||
if (i == "volumetric") then
|
||||
st.dynamic_light.light.volumetric = (v == "true")
|
||||
end
|
||||
if (i == "volumetric_quality") then
|
||||
st.dynamic_light.light.volumetric_quality = tonumber(v)
|
||||
end
|
||||
if (i == "volumetric_distance") then
|
||||
st.dynamic_light.light.volumetric_distance = tonumber(v)
|
||||
end
|
||||
if (i == "volumetric_intensity") then
|
||||
st.dynamic_light.light.volumetric_intensity = tonumber(v)
|
||||
end
|
||||
--Texture/Light animation
|
||||
if (i == "texture") then
|
||||
st.dynamic_light.light.texture = tostring(v)
|
||||
end
|
||||
if (i == "lanim") then
|
||||
st.dynamic_light.light.lanim = tostring(v)
|
||||
end
|
||||
if (i == "lanim_brightness") then
|
||||
st.dynamic_light.light.lanim_brightness = tonumber(v)
|
||||
end
|
||||
end
|
||||
|
||||
st.dynamic_light.light:set_position(pos)
|
||||
st.dynamic_light.light:update()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function save_state(m_data)
|
||||
m_data.xr_dynamic_object_storage = dynamic_object_storage
|
||||
end
|
||||
|
||||
function load_state(m_data)
|
||||
dynamic_object_storage = m_data.xr_dynamic_object_storage or {}
|
||||
end
|
||||
|
||||
function on_game_start()
|
||||
RegisterScriptCallback("save_state",save_state)
|
||||
RegisterScriptCallback("load_state",load_state)
|
||||
end
|
File diff suppressed because it is too large
Load Diff
BIN
mods/Duty Expansion/gamedata/sounds/characters_voice/human/woman/states/meet/meet_hello_1.ogg (Stored with Git LFS)
Normal file
BIN
mods/Duty Expansion/gamedata/sounds/characters_voice/human/woman/states/meet/meet_hello_1.ogg (Stored with Git LFS)
Normal file
Binary file not shown.
BIN
mods/Duty Expansion/gamedata/sounds/characters_voice/human/woman/states/meet/meet_hello_2.ogg (Stored with Git LFS)
Normal file
BIN
mods/Duty Expansion/gamedata/sounds/characters_voice/human/woman/states/meet/meet_hello_2.ogg (Stored with Git LFS)
Normal file
Binary file not shown.
BIN
mods/Duty Expansion/gamedata/sounds/characters_voice/scenario/bar/mega_1.ogg (Stored with Git LFS)
Normal file
BIN
mods/Duty Expansion/gamedata/sounds/characters_voice/scenario/bar/mega_1.ogg (Stored with Git LFS)
Normal file
Binary file not shown.
BIN
mods/Duty Expansion/gamedata/sounds/characters_voice/scenario/bar/mega_2.ogg (Stored with Git LFS)
Normal file
BIN
mods/Duty Expansion/gamedata/sounds/characters_voice/scenario/bar/mega_2.ogg (Stored with Git LFS)
Normal file
Binary file not shown.
BIN
mods/Duty Expansion/gamedata/sounds/characters_voice/scenario/bar/mega_3.ogg (Stored with Git LFS)
Normal file
BIN
mods/Duty Expansion/gamedata/sounds/characters_voice/scenario/bar/mega_3.ogg (Stored with Git LFS)
Normal file
Binary file not shown.
BIN
mods/Duty Expansion/gamedata/sounds/characters_voice/scenario/bar/mega_4.ogg (Stored with Git LFS)
Normal file
BIN
mods/Duty Expansion/gamedata/sounds/characters_voice/scenario/bar/mega_4.ogg (Stored with Git LFS)
Normal file
Binary file not shown.
BIN
mods/Duty Expansion/gamedata/sounds/characters_voice/scenario/bar/mega_5.ogg (Stored with Git LFS)
Normal file
BIN
mods/Duty Expansion/gamedata/sounds/characters_voice/scenario/bar/mega_5.ogg (Stored with Git LFS)
Normal file
Binary file not shown.
BIN
mods/Duty Expansion/gamedata/sounds/characters_voice/scenario/bar/mega_6.ogg (Stored with Git LFS)
Normal file
BIN
mods/Duty Expansion/gamedata/sounds/characters_voice/scenario/bar/mega_6.ogg (Stored with Git LFS)
Normal file
Binary file not shown.
BIN
mods/Duty Expansion/gamedata/sounds/characters_voice/scenario/bar/mega_7.ogg (Stored with Git LFS)
Normal file
BIN
mods/Duty Expansion/gamedata/sounds/characters_voice/scenario/bar/mega_7.ogg (Stored with Git LFS)
Normal file
Binary file not shown.
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/armor_misc.dds (Stored with Git LFS)
Normal file
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/armor_misc.dds (Stored with Git LFS)
Normal file
Binary file not shown.
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/armor_misc.thm (Stored with Git LFS)
Normal file
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/armor_misc.thm (Stored with Git LFS)
Normal file
Binary file not shown.
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/armor_misc_bump#.dds (Stored with Git LFS)
Normal file
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/armor_misc_bump#.dds (Stored with Git LFS)
Normal file
Binary file not shown.
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/armor_misc_bump#.thm (Stored with Git LFS)
Normal file
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/armor_misc_bump#.thm (Stored with Git LFS)
Normal file
Binary file not shown.
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/armor_misc_bump.dds (Stored with Git LFS)
Normal file
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/armor_misc_bump.dds (Stored with Git LFS)
Normal file
Binary file not shown.
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/armor_misc_bump.thm (Stored with Git LFS)
Normal file
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/armor_misc_bump.thm (Stored with Git LFS)
Normal file
Binary file not shown.
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/armor_torso.dds (Stored with Git LFS)
Normal file
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/armor_torso.dds (Stored with Git LFS)
Normal file
Binary file not shown.
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/armor_torso.thm (Stored with Git LFS)
Normal file
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/armor_torso.thm (Stored with Git LFS)
Normal file
Binary file not shown.
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/armor_torso_bump#.dds (Stored with Git LFS)
Normal file
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/armor_torso_bump#.dds (Stored with Git LFS)
Normal file
Binary file not shown.
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/armor_torso_bump#.thm (Stored with Git LFS)
Normal file
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/armor_torso_bump#.thm (Stored with Git LFS)
Normal file
Binary file not shown.
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/armor_torso_bump.dds (Stored with Git LFS)
Normal file
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/armor_torso_bump.dds (Stored with Git LFS)
Normal file
Binary file not shown.
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/armor_torso_bump.thm (Stored with Git LFS)
Normal file
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/armor_torso_bump.thm (Stored with Git LFS)
Normal file
Binary file not shown.
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/body_parts.dds (Stored with Git LFS)
Normal file
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/body_parts.dds (Stored with Git LFS)
Normal file
Binary file not shown.
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/body_parts.thm (Stored with Git LFS)
Normal file
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/body_parts.thm (Stored with Git LFS)
Normal file
Binary file not shown.
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/body_parts_bumo#.thm (Stored with Git LFS)
Normal file
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/body_parts_bumo#.thm (Stored with Git LFS)
Normal file
Binary file not shown.
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/body_parts_bump#.dds (Stored with Git LFS)
Normal file
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/body_parts_bump#.dds (Stored with Git LFS)
Normal file
Binary file not shown.
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/body_parts_bump.dds (Stored with Git LFS)
Normal file
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/body_parts_bump.dds (Stored with Git LFS)
Normal file
Binary file not shown.
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/body_parts_bump.thm (Stored with Git LFS)
Normal file
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/body_parts_bump.thm (Stored with Git LFS)
Normal file
Binary file not shown.
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/head_eyelash.dds (Stored with Git LFS)
Normal file
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/head_eyelash.dds (Stored with Git LFS)
Normal file
Binary file not shown.
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/head_face.dds (Stored with Git LFS)
Normal file
BIN
mods/Duty Expansion/gamedata/textures/act/duty_girl/head_face.dds (Stored with Git LFS)
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue