mirror of
https://github.com/SWG-Source/dsrc.git
synced 2026-08-02 02:15:48 -04:00
198 lines
4.3 KiB
Plaintext
198 lines
4.3 KiB
Plaintext
/**
|
|
* Copyright (c) ©2000,2001 Sony Online Entertainment Inc.
|
|
* All Rights Reserved
|
|
*
|
|
* Title: leader_inv.script
|
|
* Description: inventory script for mediator leader in POI wounded
|
|
* @author $Author: rpalacio $
|
|
* @version $Revision: #1 $
|
|
*/
|
|
|
|
/***** INCLUDES ********************************************************/
|
|
|
|
include library.poi;
|
|
include library.scenario;
|
|
include library.healing;
|
|
include library.consumable;
|
|
|
|
/***** INHERITS ********************************************************/
|
|
|
|
inherits item.container.add_only;
|
|
|
|
/***** CONSTANTS *******************************************************/
|
|
|
|
const int PROVIDED_MEDICINE = 4;
|
|
|
|
/***** TRIGGERS *******************************************************/
|
|
|
|
trigger OnAttach()
|
|
{
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
trigger OnInitialize()
|
|
{
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
trigger OnAboutToReceiveItem(obj_id srcContainer, obj_id transferer, obj_id item)
|
|
{
|
|
obj_id actor = getContainedBy(self);
|
|
if ( (actor == null) || (actor == obj_id.NULL_ID) )
|
|
{
|
|
return SCRIPT_OVERRIDE;
|
|
}
|
|
|
|
obj_id poiMaster = poi.getBaseObject(actor);
|
|
if ( (poiMaster == null) || (poiMaster == obj_id.NULL_ID) )
|
|
{
|
|
LOG("poiWounded", "OnStartNpcConversation: unable to locate base object");
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
string convo = getStringObjVar(poiMaster, scenario.VAR_SCENARIO_CONVO);
|
|
if ( convo.equals("") )
|
|
{
|
|
LOG("poiWounded", "OnStartNpcConversation: unable to determine conversation file");
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
if ( isPlayer(transferer) )
|
|
{
|
|
if ( !healing.isMedicine(item) )
|
|
{
|
|
scenario.say(actor, convo, "item_not_medicine");
|
|
return SCRIPT_OVERRIDE;
|
|
}
|
|
}
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
trigger OnReceivedItem(obj_id srcContainer, obj_id transferer, obj_id item)
|
|
{
|
|
obj_id actor = getContainedBy(self);
|
|
if ( (actor == null) || (actor == obj_id.NULL_ID) )
|
|
{
|
|
return SCRIPT_OVERRIDE;
|
|
}
|
|
|
|
obj_id poiMaster = poi.getBaseObject(actor);
|
|
if ( (poiMaster == null) || (poiMaster == obj_id.NULL_ID) )
|
|
{
|
|
LOG("poiWounded", "OnStartNpcConversation: unable to locate base object");
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
string convo = getStringObjVar(poiMaster, scenario.VAR_SCENARIO_CONVO);
|
|
if ( convo.equals("") )
|
|
{
|
|
LOG("poiWounded", "OnStartNpcConversation: unable to determine conversation file");
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
if ( isPlayer(transferer) )
|
|
{
|
|
if ( healing.isMedicine(item) )
|
|
{
|
|
int cnt = getIntObjVar(item, consumable.VAR_CONSUMABLE_CHARGES);
|
|
|
|
obj_id[] actors = scenario.getActorsWithNamePrefix(poiMaster, scenario.MEDIATOR);
|
|
if ( (actors == null) || (actors.length == 0) )
|
|
{
|
|
|
|
}
|
|
else
|
|
{
|
|
boolean assisted = false;
|
|
|
|
for ( int i = 0; i < cnt; i++ )
|
|
{
|
|
obj_id wounded = getFirstWoundedActor(actors);
|
|
if ( wounded == null )
|
|
{
|
|
i = cnt;
|
|
}
|
|
}
|
|
|
|
if ( assisted )
|
|
{
|
|
scenario.setPlayerProgress(transferer, PROVIDED_MEDICINE);
|
|
|
|
//give reward
|
|
scenario.say(actor, convo, "m_reward");
|
|
|
|
int amt = 0;
|
|
|
|
attrib_mod[] mods = getAttribModArrayObjVar(item, consumable.VAR_CONSUMABLE_MODS);
|
|
if ( (mods == null) || (mods.length == 0) )
|
|
{
|
|
|
|
}
|
|
else
|
|
{
|
|
for ( int n = 0; n < mods.length; n++ )
|
|
{
|
|
amt += mods[n].getValue();
|
|
}
|
|
}
|
|
|
|
amt *= cnt;
|
|
|
|
obj_id wounded = getFirstWoundedActor(actors);
|
|
if ( wounded == null )
|
|
{
|
|
scenario.say(actor, convo, "m_all_healed");
|
|
|
|
poi.complete(poiMaster);
|
|
|
|
//give bonus!
|
|
amt *= 1.25f;
|
|
}
|
|
|
|
amt /= 10;
|
|
|
|
dictionary d = new dictionary();
|
|
d.put("target", transferer);
|
|
d.put("amt", amt);
|
|
|
|
messageTo(actor, "giveReward", d, 0, false);
|
|
}
|
|
|
|
destroyObject(item);
|
|
}
|
|
}
|
|
}
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
/***** FUNCTIONS *******************************************************/
|
|
|
|
boolean healActorWounds(obj_id actor, int[] wounds)
|
|
{
|
|
if ( (actor == null) || (wounds == null) || (wounds.length == 0) )
|
|
{
|
|
return false;
|
|
}
|
|
|
|
attribute[] maxAttribs = getUnmodifiedMaxAttribs(actor);
|
|
for ( int i = 0; i < maxAttribs.length; ++i )
|
|
{
|
|
int woundVal = wounds[i];
|
|
if ( woundVal > 0 )
|
|
{
|
|
addAttribModifier(actor, maxAttribs[i].getType(), maxAttribs[i].getValue(), 0, 0, MOD_POOL);
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
obj_id getFirstWoundedActor(obj_id[] actors)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
/***** MESSAGEHANDLER *******************************************************/
|