MCPcopy Create free account
hub / github.com/DescentDevelopers/Descent3 / MakeShockwave

Function MakeShockwave

Descent3/fireball.cpp:1758–1791  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1756 }
1757}
1758void MakeShockwave(object *explode_obj_ptr, int parent_handle) {
1759 if (explode_obj_ptr->impact_time > 0.0) {
1760 object *p = ObjGet(parent_handle);
1761 object *top_parent = p;
1762 int handle;
1763 ASSERT(explode_obj_ptr);
1764 while (p) {
1765 p = ObjGet(p->parent_handle);
1766 if (p) {
1767 top_parent = p;
1768 }
1769 }
1770 if (top_parent) {
1771 handle = top_parent->handle;
1772 } else {
1773 handle = OBJECT_HANDLE_NONE;
1774 }
1775 int objnum = ObjCreate(OBJ_SHOCKWAVE, 0, explode_obj_ptr->roomnum, &explode_obj_ptr->pos, NULL, handle);
1776 if (objnum >= 0) {
1777 Objects[objnum].control_type = CT_NONE;
1778 Objects[objnum].movement_type = MT_SHOCKWAVE;
1779 Objects[objnum].render_type = RT_NONE;
1780 Objects[objnum].lifeleft = explode_obj_ptr->impact_time;
1781 Objects[objnum].impact_size = explode_obj_ptr->impact_size;
1782 Objects[objnum].impact_force = explode_obj_ptr->impact_force;
1783 Objects[objnum].impact_player_damage = explode_obj_ptr->impact_player_damage;
1784 Objects[objnum].impact_generic_damage = explode_obj_ptr->impact_generic_damage;
1785 Objects[objnum].impact_time = explode_obj_ptr->impact_time;
1786 Objects[objnum].flags |= OF_USES_LIFELEFT;
1787 }
1788 } else {
1789 DoConcussiveForce(explode_obj_ptr, parent_handle);
1790 }
1791}
1792// object *object_create_explosion_sub(object *explode_obj_ptr, int16_t segnum, vms_vector * position, fix size, int
1793// vclip_type, fix maxdamage, fix maxdistance, fix maxforce, int parent )
1794void DoConcussiveForce(object *explode_obj_ptr, int parent_handle, float player_scalar) {

Callers 2

DestroyObjectFunction · 0.85
DoWeaponExplodedFunction · 0.85

Calls 3

ObjGetFunction · 0.85
ObjCreateFunction · 0.85
DoConcussiveForceFunction · 0.85

Tested by

no test coverage detected